Siemens#SFC59で診断状態を取る

今回はS7-300でSFC59を使って安全出力モジュールの診断情報を取得します。
まずSFC59はどんなBlockなのか見てみます。

  • Input
    • REQ:BOOL
      • 1=SFC59を実行する
    • IOID:BYTE
      • 診断情報を取りたいモジュールのアドレスエリアID
    • LADDR:WORD
      • 診断情報を取りたいモジュールのアドレス
    • RECNUM:BYTE
      • Data Recordの番号(各Manualを参照ください。)
  • Output
    • RET_VAL:INT
      • Functionが実行エラーになるとエラーコードが戻ります。
    • BUSY:BOOL
      • 1=Data Recordを読込中
    • RECORD:ANY
      • モジュールからのData Record情報の格納先です。Byteしか入りません。パラメータの入り方はP#DB13.DBX0.0 Byte 100…みたいに。

プログラム

IOIDはB#16#54なのは、もしInput系ならB#16#54、Output系ならB#16#55。安全出力モジュールはInput・Output両方もあり、しかもINとOUTもアドレス同じなので16#54になります。

今回診断したいモジュールの先頭アドレスは145なので、16進数に変換したらW#16#91になります。

Data Recordは1になるのはET 200S Distributed I/O System Installation and Operating Manualの中に0なら4Byteの診断データもらえ、1ならそれぞれのモジュールのチャンネルの診断情報までいただけます。

各モジュールがもらえるData RecordのByte数:
今回いただきたいのは4F-DOなので、24Byte数のデータがもらえます。

P#DB1002.DBX0.0 Byte 24も、Byte数に合わせて入れます。
DB1002の中身は:

最後、F-DOのモジュールの診断情報をのせます:

参考:

ET 200S Distributed I/O System Installation and Operating Manual

System Software for S7-300/400 System and Standard Functions Volume 1 and Volume 2

PROFINET IO – Diagnostics Processing in the User Program

parameter LADDR for SFC58 and SFC59

はいーお疲れ様です。

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

シェアする

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

フォローする