製品・システムに関するFAQ ― SIMATICコントローラー(STEP7 - TIA(プログラム作成))
弊社に多く寄せられる製品・システムに関する質問とその回答をご覧いただけます。 ご不明な点がございましたら、お問い合わせの前にまず、ご覧ください。 メール・お電話によるお問い合わせは、 こちらをご覧ください。
STEP7 - TIA
エラーOBを用いることで、PLCのプログラムからエラー情報の取得(#EV_CLASS, #FLT_ID)、診断バッファーへの記録をすることができます。エラーOBの種類については下図をご覧ください。
S7-1500は以下の場合を除き、基本的にリモートIO等へのアクセスエラーが起きた場合でもCPUはSTOPしません。
*CPUを強制的にSTOPさせる場合は、STP命令を実行させます。
※<CPUがSTOPする場合>
①存在しないDBへのアクセスエラー➝OB121を入れることによりRUN状態を継続(もしくは、GET_ERROR関数)
②サイクルタイム超過エラー➝OB80を入れることによりRUN状態を継続
③PLCラックからモジュールが外されたとき。
PLCがPN/PNカプラとの接続が切れた時に、PLCのDI,DO,AIを使用したプログラムを使用する場合について説明します。
その場合、ハードウェア割り込み(OB40)ではなく”Rack or station failure (OB86)”を使用します。このOBはPLCに接続されているプロフィネットデバイスが認識できなくなる障害が発生した時に、1スキャンされるOBです。OB86を作成するとinputに[Event_Class]が予め定義されています。
- PLCに接続されているデバイスのどれか1つでも障害が有る場合、このタグは16進数で39を示します。
- PLCに接続されているデバイスが復旧、または全て正常であった場合、このタグは16進数で38を示します。
上記の[Event_Class]の情報をもとにPN/PNカプラとの接続が切れた時のプログラムを作成いただく形になります。
Lsimというオプションのライブラリーをインポートしていただき、その中のLsim_PT1という命令を使うことで一次遅れ応答を出力できます。
各パラメーターの説明は以下の通りです。
calcParam (Bool): 計算に使用されるパラメーターを変更した際の再計算を行うトリガ
input (Real): 入力
tmLag1 (Real): 時定数
gain (Real): ゲイン
cycle (Real): 周期OBのサイクルタイム(単位:秒)
maxOut (Real): 出力の上限値
minOut (Real): 出力の下限値
reset (Bool): パラメーター及び出力を0へリセットするトリガ
error (Bool): tmLag1が0以下のときに1になる
status (Word): tmLag1が0以下のときに16#8001を出力する
maxReached (Bool): 上限値が出力されているとき1になる
minReached (Bool): 下限値が出力されているとき1になる
output (Real): 出力
ライブラリーLsim及びそのマニュアルは下記でダウンロードできます。
16進数に変換したい場合はATHという命令、10進数に変換したい場合はSTRG_VALを利用します。
【ATH】: INに変換したいタグを割り当て、Nに変換した文字数を入力します。INに割り当てることのできるタグのデータタイプはString, WString, Char, Byte, Array of Char, Array of Byte, WChar, Array of WChar, Array of Wordです。
OUTに割り当てられるタグのデータタイプはString, Char, Byte, Array of Char, Array of Byte, Array of Word, Word, Int, DWord, Dint, SInt, USInt, UInt, UDIntです。S7-1500であればこれらに追加して WChar, Array of WChar, WString,ULInt, Lint, LWordも可能です。
【STRG_VAL】
INにStringもしくはWStringのタグを割り当て、OUTに変換後の値が格納されるタグを割り当てます。PはINに割り当てたタグの何文字目から変換するかを指定します。従って1文字目から変換する場合は1を入力します。
Formatに0, 1, 2, 3のいずれかを入力することで出力の方式を切り替えることができます。
0: 入力のドット”.”を小数点とみなし出力します。
1: 入力のカンマ”,”を小数点とみなし出力します。
2: 入力の”e”をエクスポネンシャルとして認識します。ドット”.”を小数点とみなします。
3: 入力の”e”をエクスポネンシャルとして認識します。カンマ”,”を小数点とみなします。
下記ページからIO_Link_Device命令のライブラリがダウンロードできます。
http://support.automation.siemens.com/WW/view/en/82981502
この命令を使ってIO-Linkからデータを読み書きできます。
使用しているIO-LinkモジュールがSiemens製のものである場合各モジュールに対応した命令を使用することもできます。ライブラリは以下のページからダウンロードできます。
Arrayデータタイプのみ、ラダ―プログラムで間接指定が可能です。変数にはDINT / UDINT / INT / UINTのデータタイプを割り当ててください。また、変数はインターフェースのStaticまたはTempで宣言してください。
S7-1500で変数インデックスによる配列アクセスを実装する方法
http://support.automation.siemens.com/WW/view/en/67598676
STEP 7 (TIAポータル)で確実かつ間接的にアドレス指定する方法
TIA Portalから直接XMLファイルを取り込むことはできません。
Opennessの機能を利用し、外部ツールからXMLファイルをインポートします。
外部ツールとして、TIA Openness DemoをSiemensが提供しています。
以下のリンクからTIA Openness Demoをダウンロードした後、TiaPortalOpennessDemo\bin\Releaseフォルダにあるexeファイルを起動します。
該当のプログラムブロックを選択し、Importボタンをクリックします。
詳細は下図を参照ください。
外部ツール(TIA Openness Demo)
https://support.industry.siemens.com/cs/ww/en/view/108716692
TIA Portalからソースファイルを直接生成することはできません。
Opennessの機能を利用し、外部ツールからXMLファイル形式で生成可能です。
外部ツールとして、TIA Openness DemoをSiemensが提供しています。
以下のリンクからTIA Openness Demoをダウンロードした後、TiaPortalOpennessDemo\bin\Releaseフォルダにあるexeファイルを起動します。
メニューバー>File>Settings>Default export pathでファイル出力先を指定します。
該当のプログラムブロックを選択し、Exportボタンをクリックします。
詳細は下図を参照ください。
外部ツール
https://support.industry.siemens.com/cs/ww/en/view/108716692
定周期割込
定周期割込は一定間隔毎に実行するブロックです。例えばS7-1500 では定周期割込OB として、OB35 があります。デフォルト設定では実行周期は100000μs=100ms になっており、500μs から60000000μs (60sec)まで任意に設定することができます。
実行周期
実行間隔は定周期割込OB の実行時間より長く指定しなければなりません。オペレーティングシステムはOB35 を指定された時間毎に呼び出します。もしそのときOB35 がまだ実行中の場合、オペレーティングシステムはOB80(タイムエラー)を呼び出します。詳細は図1を参照ください。
フェーズオフセット
次の2 つの定周期割込OB をプログラムするとき
例)定周期割込 OB30、OB35
定周期割込OB30 とOB35 の実行間隔が同じ100ms に設定されているとします。100ms 後に両方の定周期割込OB が実行されようとします。これを回避するためにフェーズオフセットを2 つのOB 間に設定します。詳細は図2を参照ください。
注意事項
定周期割込の実行を、命令などにより制御することはできません。
TIA Portal V13ではHart protocolの設定はできません。つまり、S7-1500およびS7-1200は対応していません。この設定にはSTEP7 V5.5の他に、PDMソフトが必要です。Hartモジュールを使われる場合、S7-300、400/STEP7 V5.5をPROFIBUSマスターとし、ET200Mを使用して頂くことになります。
※SIMATIC PDM V8.2に対応する製品は以下のリストに記載があります。Hart通信でSlaveとなるモジュールが以下のリストにない場合は、PDMでHart通信を設定できませんのでご注意ください。
All device descriptions of the "SIMATIC PDM Device Library 1#2014" are listed in the device
PLC(S7-300, S7-1200, S7-1500, ET200SP CPU)から設定可能なものはKeep Alive Intervalのみとなります。
CPU プロパティ全般 → 詳細オプション →インターフェースオプションから設定可能です。プロパティでは“接続のキープアライブの送信”という表記になっています。
TCONで接続開始したTCP/IP通信はPLCをストップ/ランするかT_DISCON命令を使わない限りコネクションが切断されないため、一度物理的にケーブルを外しても再度つなげば通信は再開されます。
通信を切断する場合はPLCのプログラムからT_DISCONを実行してください。通信中に接続が切れた場合はStatus情報から確認できます。
S7-1500およびS7-1200(V4以降)はTIA Portal V12以降から、プロジェクト側でDBの構成を変更した場合でも、DBを再初期化せずに現在値を保持したまま、PLCにダウンロードすることができます。この機能は最適化 アクセスDBのみ有効となります。
DBを開き、Download without initializationボタンを押して有効にすることで、DBの構成を変更した場合でも、Reserveエリアと呼ばれる場所に一時的に値を格納し、現在値をリセットすることなくDBをダウンロードすることが可能となります。
Reserveエリアをリセットする場合は、Program Blockを選択し、Compile(reset memory reserve)を実行します。以下の参照図面をご確認ください。
シーメンスのアナログモジュールでは、アナログ値27648が定格になる仕組みになっています。例えば、0~10Vのアナログ出力を行う場合、0Vでは0、5Vでは13824、10Vでは27468をCPUから出力します。
つまりプログラム作成の際は、実際のアナログレンジを考慮する必要はなく、0~27648を定格として工業値変換の処理を行えば良いことになります。
このスケールは各モジュールの分解能に依存しません。解像度が高い方がより精度の高い出力ができますが、解像度に関わりなく0~27648の値で処理できます。
アナログ出力のアドレスには16ビット分が割当てられます。
詳細は以下の説明資料を参照ください。
PID Professional はSTEP7 V13に含まれます。
ライセンスは別途購入が必要です。
対応モジュール:S7-300,400
STEP7 V13
http://support.automation.siemens.com/WW/view/en/89474332
STEP7 V12
http://support.automation.siemens.com/WW/view/en/79047654
S7-1500 PID Compact V2 サンプルプログラム
http://support.automation.siemens.com/WW/view/en/79047707
■ データの送受信はSend/Receiveサブルーチンを実行することにより行われます。
■ 送信処理は、新しいネットワークに、命令カタログ内の、Libraries/SIMATIC_NET_CP/CP_300あるいはCP_400の中にあるFC5(AG_SEND:データ長240バイト以下)もしくはFC50(AG_LSEND:データ長240バイト以上8192バイト以下)により行われます。
■ このFCでは次のパラメータを指定します。
■ SENDで指定するポインタアドレスの長さ情報は実際に送信する長さではありません。LENで指定する長さ(実際に送信する長さ)と同じか長い数値を指定します。
■ ACTがONの状態にすると、1回の送信が終了すると即座に次の送信を開始します。この状態だとネットワークあるいはCPモジュールの不可が高くなり問題が発生する場合は、ACTの条件に立ち上がり微分を加える(例えば0.2secクロックの立ち上がり)などして、ONの状態を保たないようにプログラムしてください。
■ S7-300ではFC5(AG_SEND)、S7-400ではFC50(AG_LSEND)を使います。
■ 通常のETHERNET通信における受信処理は、命令カタログ内の、Libraries/SIMATIC_NET_CP/CP_300あるいはCP_400の中にあるFC6(AG_RECEV:240バイト長以下)あるいはFC60(AG_LRECV:240バイト以上8192バイト以下)により行われます。
■ RECVで指定するポインタアドレスの長さ情報は実際に受信する長さではありません。受信する可能性のある最大長と同じか長い数値を指定します。
■ S7-300ではFC6(AG_RECV)、S7-400ではFC60(AG_LREND)を使います。
Sample program MODBUS Master/Slave (standard block)を以下のリンクからダウンロードし、TIA Portal で開いて使用してください。プロジェクトはV11、V13で作成されているため、それ以外のバージョンで編集するにはアップグレードする必要があります。
Modbus Master
Modbus Slave
DATE_AND_TIMEについてSTEP7 V5.5/TIA Portal Vxxでは異なる関数を使用します。
参考
http://support.automation.siemens.com/WW/view/en/63900229
ポインタ指定を使って、ソースとコピー先のDBを指定します。
詳細は以下の図面および添付資料(TIAヘルプ)を参照ください。
TIA(S7-300)_プログラム作成_プログラミング手法_BLKMOVEの使い方\BLKMOVE_S7-300_TIA