Simotion#PN/DPのStationを有効・無効する関数

SimotionD445とProfinetでつながってるDevicesを無効・有効する関数を紹介します。

デバイスを無効する関数は:_deactivateDpSlave()

デバイスを有効する関数は:_ activateDpSlave()

その2つの関数も一つ大事なパラメータがあります。それはDiagnostics addressです。

TIAではそのAddressを調べるにはDevicesクリック>general>Diagnostics addressで赤枠の数字になります。普段はあまり使わなくて、そういうシステム的な関数を実行するときだけ必要ですね。

_deactivateDpSlave()

最初はデバイスを無効する関数を紹介します。

INPUT

  • logicalAddressOfDpStation
    • DINT
    • DPStation(Profibus)やPNStation(Profinet)の診断アドレスです。
  • reqActDeactGetStateMode
    • EnumReqActDeactGetStateMode
      • REQUEST_TRUE (0) 
        • 実行する
      • REQUEST_FALSE (1)
        •  Query status with REQUEST_TRUE(?)これはちょっとわかりません。 
      • REQUEST_ABORT (2) 実行中止する
  • dpAlarmMode
    • EnumDeviceDpAlarmMode
      • SET_DP_ALARM (0)
        • 無効したらDP Alarmsを生成します。
      • DO_NOT_SET_DP_ALARM (1)
        • DP Alarmsを生成しません。
  • nextCommand
    • 次のコマンドを実行するの条件設定です。
      • EnumNextCommandMode
        • IMMEDIATELY (60)
          • Asynchronous
          • IMMEDIATELYならFunctionがREQUEST_TRUEによって実行されます。そして再実行するには、REQUEST_FALSEが必要になります。そのREQUEST_TRUE>REQUEST_FALSE>REQUEST_TRUEの順番ではないと再起動になりません。
        • WHEN_COMMAND_DONE (160)
          • Synchronous
          • コマンド実行完了したら再実行になります。nous
        • ABORT_URRENT_COMMAND (260)
          • Abort
  • ioId(optional):EnumIoIdType
    • EnumIoIdType
    • 該当するPN/DP デバイスがInputデバイスか、Outputデバイスか。あまりきにしなくてもよいです。
    • DefaultはINPUTです。逆にINPUTだめならOUTPUTすればよいです。
      • INPUT (198) Input address 
      • OUTPUT (199) Output address
  • timeToWaitForStationAlarm (optional)
    • UDINT
    • 無効するStationからが“無効になりました”の信号くるまでの待ち時間です。この時間過ぎると内部処理が完了だと見されます。
    • そして関数がAcivation state状態を判断し、いまのStation状態を返しします。
    • 例えば、16#06なら、Stationが無効になりました、のことです。
      • 0:DeFaultで待ち時間ありません
      • 60(Default):SimotionのバージョンがV4.4以下なら、最大60s待ちます。
      • >0:XX秒を待ちます。
      • SimotionがバージョンV4.3なら、Defaultの60になります

Return value: DINT

関数の実行Statusが戻ります。

16#00000000 JOBが中止されいます。

16#00000002 PROFIBUS slave/IO device 無効になりました。Job実行成功です。

16#00000006 PROFIBUS slave/IO device 無効になりました。(‘station failure’ alarm待たない)

16#00007000 機能が実行してない。

16#00007001 機能が初期化になりました。(asynchronousのみ)

16#00007002 Functionality 実行(asynchronousのみ)

16#00007003 JobがAcceptedされたが、実行続けなくて中止になった。

16#FFFF8090 Specified logical base address 無効です。

16#FFFF8091 該当する番号のDPStationが見つかりません。

16#FFFF8092 “Activate” or “Deactivate” 実行中に”Deactivate” リクエストされる

16#FFFF8093 有効なDP Stationではありません

16#FFFF8098 関数はTimeoutによって失敗

16#FFFF8099 内部エラー

16#FFFF80C1 “Activate”実行中に”Deactivate” リクエストされる

16#FFFF80C3 Temporary bottleneck: No additional function resource currently available.?

Example

プログラム例は以下になります:

         retVal := _deactivateDpSlave(

                logicalAddressOfDpStation := 16364,

                reqActDeactGetStateMode := REQUEST_TRUE,

                dpAlarmMode := DO_NOT_SET_DP_ALARM,

                nextCommand := WHEN_COMMAND_DONE,

                ioId := INPUT,

                timeToWaitForStationAlarm := 0

            );

実行になりますと、PN Devicesが無効になり、TIAからみると灰色のICONもついています。

_ activateDpSlave()

DP/PN Stationを有効する関数のパラメータは_deactivateDpSlave()と似ています。

INPUT

  • logicalAddressOfDpStation
    • DINT
    • DPStation(Profibus)やPNStation(Profinet)の診断アドレスです。
  • reqActDeactGetStateMode
    • EnumReqActDeactGetStateMode
      • REQUEST_TRUE (0) 
        • 実行する
      • REQUEST_FALSE (1)
        •  Query status with REQUEST_TRUE(?)これはちょっとわかりません。 
      • REQUEST_ABORT (2) 実行中止する
  • dpAlarmMode
    • EnumDeviceDpAlarmMode
      • SET_DP_ALARM (0)
        • 有効したらDP Recovery Messageを生成します。
      • DO_NOT_SET_DP_ALARM (1)
        • DP Recovery Messageを生成しません。
  • nextCommand
    • 次のコマンドを実行するの条件設定です。
      • EnumNextCommandMode
        • IMMEDIATELY (60)
          • Asynchronous
          • IMMEDIATELYならFunctionがREQUEST_TRUEによって実行されます。そして再実行するには、REQUEST_FALSEが必要になります。そのREQUEST_TRUE>REQUEST_FALSE>REQUEST_TRUEの順番ではないと再起動になりません。
        • WHEN_COMMAND_DONE (160)
          • Synchronous
          • コマンド実行完了したら再実行になります。nous
        • ABORT_URRENT_COMMAND (260)
          • Abort
  • ioId(optional):EnumIoIdType
    • EnumIoIdType
    • 該当するPN/DP デバイスがInputデバイスか、Outputデバイスか。あまりきにしなくてもよいです。
    • DefaultはINPUTです。逆にINPUTだめならOUTPUTすればよいです。
      • INPUT (198) Input address 
      • OUTPUT (199) Output address
  • timeToWaitForStationAlarm (optional)
    • UDINT
    • 有効するStationからが“有効になりました”の信号くるまでの待ち時間です。この時間過ぎると内部処理が完了だと見されます。
    • そして関数がAcivation state状態を判断し、いまのStation状態を返しします。
    • 例えば、16#05なら、Stationが有効になりました、のことです。
      • 0:DeFaultで待ち時間ありません
      • 60(Default):SimotionのバージョンがV4.4以下なら、最大60s待ちます。
      • >0:XX秒を待ちます。
      • SimotionがバージョンV4.3なら、Defaultの60になります

Return value: DINT

関数の実行Statusが戻ります。

16#00000000 JOBが中止されいます。

16#00000002 PROFIBUS slave/IO device 有効になりました。Job実行成功です。

16#00000005 PROFIBUS slave/IO device 有効になりました。(‘station recovery’ alarm待たない)

16#00007000 機能が実行してない。

16#00007001 機能が初期化になりました。(asynchronousのみ)

16#00007002 Functionality 実行(asynchronousのみ)

16#00007003 JobがAcceptedされたが、実行続けなくて中止になった。

16#FFFF8090 Specified logical base address 無効です。

16#FFFF8091 該当する番号のDPStationが見つかりません。

16#FFFF8092 “Activate” or “Deactivate” 実行中に”Deactivate” リクエストされる

16#FFFF8093 有効なDP Stationではありません

16#FFFF8098 関数はTimeoutによって失敗

16#FFFF8099 内部エラー

16#FFFF80C1 “Activate”実行中に”Deactivate” リクエストされる

16#FFFF80C3 Temporary bottleneck: No additional function resource currently available.?

Example

実行になりますと、PN Devicesが有効になり、TIAからみると緑のICONもついています。

Footer_Basic

Please Support some devices for my blog

Amazon Gift List

Find ME

Twitter:@3threes2
Email:soup01threes*gmail.com (* to @)
YoutubeChannel:https://www.youtube.com/channel/UCQ3CHGAIXZAbeOC_9mjQiWQ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする