製品・システムに関するFAQ ― SIMATICコントローラー用ソフトウェア

弊社に多く寄せられる製品・システムに関する質問とその回答をご覧いただけます。 ご不明な点がございましたら、お問い合わせの前にまず、ご覧ください。 メール・お電話によるお問い合わせは、 こちらをご覧ください。

   

STEP7 - TIA

TIA Portalのコンパイル機能では二重コイルは検出できません。
タグの呼出箇所を確認する場合は、Cross reference(クロスリファレンス)機能をご活用頂きますようお願い致します。タグがどこで(どのブロックでどのネットワークで)どのように(読込みか書込みか)使われているかを確認することができます。プログラムから該当のタグを右クリックしクロスリファレンスの項目を選択します。TIA Portal下部の画面のInfo(情報)>Cross reference(クロスリファレンス)のタブに表示されます。

エラー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ラックからモジュールが外されたとき。

 

 

添付の手順書をご覧ください。

 

TIA(S7-1500)プログラム作成1500(TIA)と400(Classic)でのS7通信

 

PLCはFC/FB/UDT(User Defined Text)が登録できます。

Rack or station failure(OB86)がダウンロードされていれば、PLCを停止させずにリモートIOのモジュールを交換することができます。
S7-1500PLCラック上のモジュールを交換する場合は一度PLCをSTOPする必要があります。

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カプラとの接続が切れた時のプログラムを作成いただく形になります。

セーフティプログラムはOB1等の標準ブロックからは呼び出せません。"Safety Administration"の項目を開き、メインセーフティブロックからセーフティプログラムを呼び出すF-runtime groupを作成してください。

 

モニタしようとしているタグがDBで定義されている場合そのDBが最適化ではない状態になっているかご確認ください。また、PLCのプロパティでOPCからの読み書きを可能にするチェックが入っているかご確認ください。

I-deviceの転送エリアを変更した場合、変更を行ったPLCだけでなく、通信を行う相手側のPLCにもプロジェクトのダウンロードが必要になります。

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及びそのマニュアルは下記でダウンロードできます。

 

https://support.industry.siemens.com/cs/document/79047707/closed-loop-control-of-simulated-controlled-systems-in-the-s7-1500-with-pid_compact-v2?dti=0&lc=en-WW

 

 

SWAPという命令でWord, DWordタイプのデータを変換することができます。

 

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”をエクスポネンシャルとして認識します。カンマ”,”を小数点とみなします。

クラスA(255.0.0.0)まで設定できます。それよりも広いサブネットを設定しようとした場合はエラーとなります。

2種類の方法がございます。1つはスライスアクセスを用いる方法(スライスアクセスのFAQを参照)で、もうひとつはScatter命令を使う方法です。この命令はTIA Portal V14 SP1から有効になった命令で、Byte, Word, DWord, LWordのタグをArray of Boolに変換することが可能です。
Array of boolから元に戻す場合はGather命令をお使いください。

下記の手順書をご覧ください。サンプルプロジェクトと解説書もご用意しておりますので、問い合わせフォームよりお知らせください。

 

手順書

PS 60W 24/48/60V DC HFをお使いいただくことで可能になります。
増分は機種によって下表のように異なります。

Retain memory /kByte
CPU without PS HF with PS HF
1511 90 1048
1513 90 1572
1515 484 3145
1516 484 5242
1517 717 8388
1518 717 20971

添付の資料をご確認ください。

 

TIA(S7-1500)プログラム作成 PLCタグFirstScanが作動しない

添付の資料をご覧ください。サンプルプロジェクトや手順を示した動画を用意しておりますので、問い合わせフォームよりお知らせください。

 

TCP IP V0.4

手順書をご覧ください。

 

TIA(S7-1500)プログラム作成OPC UA通信設定

 

Modbus_Master命令の引数”MODE”が0の時が読み取り、1の時が書き込みです。
下図に例を示します。ネットワーク2の命令が読み取り用、ネットワーク3の命令が書き込み用となります。

Modbus通信に使用されている命令のステータスを確認するため、エラービットが立った時にMB_Client / MB_Server のステータスを別のメモリエリアにMoveするプログラムを作成し、エラー情報を取得してください。MB_Client / MB_Serverを選択してF1キーを押すと表示されるヘルプ画面及びTCON命令のヘルプ画面にあるステータス一覧からエラーの原因をご確認ください。

 

MODBUS TCP通信はTCP/IP通信をベースに行われるため、TCON命令のヘルプ内にステータス内容が記載されている場合もございます。そちらも合わせてご覧ください。

申し訳ありませんが、LED命令で指定できる対象はPLCのRun/Stop, Error, Maintのみとなります。

下記ページからIO_Link_Device命令のライブラリがダウンロードできます。


http://support.automation.siemens.com/WW/view/en/82981502


この命令を使ってIO-Linkからデータを読み書きできます。

使用しているIO-LinkモジュールがSiemens製のものである場合各モジュールに対応した命令を使用することもできます。ライブラリは以下のページからダウンロードできます。

 

https://support.industry.siemens.com/cs/document/90529409/application-of-the-siemens-io-link-devices-block-library?dti=0&lc=en-WW

セーフティプログラム作成のルール違反を行うと上記のエラーが発生します。
標準プログラムで安全用アドレスの書き込み/読み込みがされていないか等セーフティプログラムのルールに則ったプログラムがなされているかご確認ください。

 

Arrayデータタイプのみ、ラダ―プログラムで間接指定が可能です。変数にはDINT / UDINT / INT / UINTのデータタイプを割り当ててください。また、変数はインターフェースのStaticまたはTempで宣言してください。

 

 

S7-1500で変数インデックスによる配列アクセスを実装する方法
http://support.automation.siemens.com/WW/view/en/67598676


STEP 7 (TIAポータル)で確実かつ間接的にアドレス指定する方法

http://support.automation.siemens.com/WW/view/en/97552147

パルスビットに割り当てられるメモリ(1ビット)は省略することができません。
システムがエッジを検出するために、参照図面のように "S_Operation"の信号を ビットメモリ、またはデータビット("M_aux_Pos")に保存しなければなりません。

SCLプログラムでは、パルスビットに割り当てられるメモリ(1ビット)にインスタンスDBが割り当てられます。詳細は以下の参照図面を確認してください。

CONVERT命令を使用して変換します。CONVERT命令には変換する対象とするタグが数値、文字列、時刻によってCONVERT, S_CONV, T_CONVを使い分けます。詳細は下図をご覧ください。

下図のようにビット、バイト、ワード、ダブルワードの単位で、スライスアクセス機能を使うことができます。
例) Tag_1[Byte] の0ビット目をプログラム中で使いたい。⇒Tag_1.X0
Tag_2[Word] の1バイト目をプログラム中で使いたい。⇒Tag_2.B1

STEP 7 (TIAポータル)で、構造化されていないデータタイプにビットごと、バイトごと、ワードごと、かつシンボリックにアクセスする方法

 

http://support.automation.siemens.com/WW/view/en/57374718

 

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

対象のブロックを選択し、右クリック > Generate source from blocks > Selected blocks onlyをクリックします。
TIA Portalからソースファイルを生成できるものは以下の通りです。ラダ―やFBDは外部ソフトを使い、XML形式で生成が可能です。

 

STLもしくはSCL言語のプログラムブロック(OB/FC/FB)
DB
UDT

 

詳細は下図を参照ください

 

TIA Portal V14から、ラダ―プログラム中にネットワーク単位でSCLを挿入可能です。
これにより、1つのブロックでラダ―をメインで使いつつ、演算などはSCLで実行させることができます。

MOVE命令を使って、Stringの指定した文字(何番目)に転送が可能です。Stringのデータタイプは[1]~[254]で指定します。

また、以下の命令を使ってCharからStringに置き換えも可能です。
Extended instructions > String + Char > “S_CONV” or “Chars_TO_Strg”

Uint は符号なし、2バイト長で整数を表すデータタイプです。
Uintのデータタイプのタグにマイナスの値が入力された場合、65535 + (マイナスの値) +1 の値が表示されます。例えば下図のようにTag1 (100) + Tag2 (-200)  = -100が出力される場合、65535 + (-100) + 1= 65,436となります。

定周期割込
定周期割込は一定間隔毎に実行するブロックです。例えば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を参照ください。

 

注意事項
定周期割込の実行を、命令などにより制御することはできません。

定周期OBの処理が終わるまで、メインOBの処理はストップ状態になります。
定周期OBの処理が終わった後にメインOBのストップした回路からプログラム実行が再開されます。ストップ状態の間、それら値はキューに保存されています。
ただし、指定された最大サイクルタイム(ウォッチドッグタイマ)を超えた場合、PLCはストップします。→OB80(タイムエラーOB)がCPUにロードされていればRUN状態を継続

Portパラメーターをクリックし、右側にある(図面内の赤枠部分)アイコンをクリックすると、割り当てられるポートのリストが表示されます。該当のポートを選択してください。
PLCタグ>すべてのタグを表示>システム定数からも確認できます。

 

16#8088はLENGTHパラメーターがBUFFERへ設定したデータ長と一致していない状態です。LENGTHは転送されるデータ長(バイト単位)です。BUFFERでメモリ領域を指定した場合はLENGTH = 0で全て転送されます。

 

 

それぞれでModbusのエリアを定義するため、データエリアはそれぞれ分けられます。

IOを搭載しないPLCのIOへアクセスした場合では、MB_CLIENTからは特にエラーは出力しません。IOアクセスエラーは発生しません。
ただしマニュアルに記載のない範囲、例えばMB_MODE=1(書込み)のときにMB_DATA_ADDR に入力ビット(10001~19999)を割り当てるとエラー(16#8189)が出力されます。

S7-300と違い、MB_CLIENT命令でModbus ファンクションコードを割り当てることはありません。
MB_MODEパラメーター(読取・書込・その他)を指定し、IOエリアやMアドレスやDBを直接割り当てます。

ございます。T_Config命令を使用します。
詳細は添付資料をご覧ください。

 

参照図

IN, OUT or IN_OUT parameters合わせて最大 63ヶまで構成可能です。

 

RECORDSパラメーターはデータタイプがUDINTのため、0~4,294,967,295です。
RECORDSパラメーターはロードメモリ(メモリカード/S7-1200は内蔵型)の容量に依存します。ワークメモリのDBサイズには依存しません。
容量が足りない場合は、STATUSパラメーターにエラー(80B3h)が表示されます。
また、DataLogWrite命令がこのパラメーターで指定されているよりも多くのレコードを書き込んだ場合、最も古いレコードから順に上書きされます。

DataBlockでデータタイプ”String”を指定する際に、文字数を指定してください。例えば、2文字であれば”String[2]”です。可変長の指定には対応しておりません。
Stringは最大254文字です。

PLCプロパティでS7通信を有効にする必要があります。 S7-1200 V4.0以降でも同様です。
PLCプロパティ > 保護 > 接続メカニズム
詳細は、以下の図を参照ください。

 

NTPに対応しています。
NTPを使って上位サーバーから時刻同期が可能です。

 

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

 

https://support.automation.siemens.com/WW/llisapi.dll/csfetch/92561933/ListOfIntegratedDevices.htm?func=cslib.csFetch&nodeid=93839229

ブロック(FC、FBなど)を呼び出すときにパラメーターの量が多すぎます。一度、引数の数を減らしてから再度コンパイルを実施してください。

 

添付資料をご覧ください。

 

TIA(S7-1200/1500)_ツール操作方法_Webサーバー接続

 

可能となります。

仕様変更となります。V2.0からV4.1はT_CONFIGでIPアドレス変更後CPUが一度Stopモードになりますが、V4.2以降ではCPUは停止しません。下図はTIA Portal V14のT_CONFIG命令のヘルプとなります。”WARNING”内にその旨が記載されています。

 

S7-1200のV4.0から、HSCを使用する場合はInput filterを設定する必要があります。0.8μs以下にしてください。尚、V3.0 以前のバージョンでは、オート設定となっており、TIA portalから設定することができません。

S7-1200が電源OFF→ONした際の挙動は、電源が切れる前の状態を保持する設定がデフォルトになっています。電源OFF/ONで常にリスタートさせる場合は以下の変更が必要です。
・CPUのPropertiesタブ内⇒Startup⇒Startup after POWER ONをWarm restart-RUNに変更

DQが連続してONである時間が”Relay continuous on time limit"で設定した日数分経過すると自動的に出力がオフになります。(固着防止のため)
デフォルトの場合ですと30日毎にオフになるのではなく30日間連続してオンである場合にオフになります。デフォルトの30日がSIL3を満たす最大のプルーフテスト間隔となります。

RDREC(Read Record)/WRREC(Write Record)命令とは、指定したモジュールのパラメーターの読込み、書込みをするために使用します。これら命令では、どのモジュールをターゲットにするかハードウェアを指定(ID番号)し、データレコードのインデックス番号およびデータ長を割り当てます。
これら命令の使い方についてはヘルプドキュメントを参照ください。
また、インデックス番号やデータレコードに含まれるパラメーターはデバイスによって異なりますので、各デバイスのマニュアルでご確認ください。

 

RDREC_WRREC_HelpPrinting.pdf

オンライン&診断からPLCとオンライン状態にすることで確認できます。
その他にもRT_INFO命令を使って特定のOBのランタイムを計測することができます。
また、プログラム処理速度を計測する場合は、RUNTIME命令を使って計測可能です。詳細は以下の図面及びTIA Portalの該当する命令のヘルプをご確認ください。

“RT_INFO”命令で確認することができます。
命令の詳細は下図をご確認ください。

RD_LOC_T命令を使用することでローカルに合わせて時刻を取得できます。
また、タイムゾーンはPLCのプロパティもしくは、TIME_ZONE命令から割り当てることができます。

※シュナイダーPLC 以外のPLCとHMI間のModbus TCP通信はSiemensが保証およびサポートしない使い方です。
PLCがModbus TCPに対応していれば、Modbus TCP connectionで使うことができます。PLC(実機or シミュレーション)-HMI(実機or シミュレーション)で通信確立が可能です。PLCがサーバー、HMIがクライアントになります。
PLCSIM(Basic)はModbus TCP通信に対応していませんが、PLCSIM AdvancedはModbus TCP(OUC)に対応しています。
設定については以下の図面をご確認ください。

 

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-300と同じように間接アドレスを使ったプログラミングが可能です。このとき、使用するFC/FB/DBはNon-Optimizedにします。
この間接アドレス指定を使って、例えば、DB番号、データ長、スタートアドレスを変数にし、対象のDB(同様に間接アドレス指定が可能)にコピーすることができます。関数はMOVE_BLK_VALIANTを使用します。詳細は以下の図を参照ください。

 

読取りでPEEK命令、書込みでPOKE命令を使います。


参考資料

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)を実行します。以下の参照図面をご確認ください。

TRCV(_C) 関数の  Ad hoc modeをON にすることで可変のデータ長を受信できます。 
TRCV命令の▼ボタンをクリックすると引数ad hoc modeが表示されますので、1を入力することでAd hoc modeがONになります。

S7-1200は PUT /GET という関数を使用してS7-1200間通信を行うことができます。
GET は最大222バイト、PUTは最大212バイトのデータ転送ができます。
(S7-1200 Programmable controller System Manual, p.491)
PUT / GET は、S7通信の関数であり、クライアント側のみに関数を挿入し、
サーバーの特定のデータブロックへの書き込み、読み取りをすることができます。

シーメンスのアナログモジュールでは、アナログ値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

入力/出力/メモリビット/DBの間接アドレス指定をする場合、I/Q/M/DBのアドレスタイプも変数にして
使用することができます。
ビット31が”1”になるとアドレスタイプも変数として取り扱うことを意味します

DBの中身をクリアにする専用の命令はございません。
Anyエリアの値を繰り返し置きかえるSFC21 "FILL"命令をご使用ください。値が入っていないバイトエリアをBVALに指定し、クリアしたい範囲をBLKとして指定すれば値のクリアが可能です。

タグ(内部メモリ:Mアドレス)の保持はCPUのプロパティ>保持型メモリから設定が可能です。MB0(既定)~何バイト分まで保持するかという設定になります。
下図はデフォルト値(16)です。
DBは新規作成するとデフォルトで保持が有効になります。S7-300では、ブロック単位での保持の有効・無効の設定を行います。DBの要素個々に保持設定はできません。
保持設定の有効化の項目は下図の通りです。

■ データの送受信は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

S7-300シリーズにおいては計算値が0となるのみで、CPUエラーとはなりません。よってPLCプログラムは止まりません。

MOVE命令を使って、Stringの指定した文字(何番目)に転送が可能です。Stringのデータタイプは[1]~[254]で指定します。

 

S7-300シリーズにおいてはDate_And_Timeの各値をそれぞれInt型へ変換するような関数はありません。Date_And_Timeのデータタイプは下図のような構造をしており、各値はBCD形式となっています。

一例ですが、このBCD(8bit)を新たに作成したWord変数の下位バイトにMove命令を使い移動し、このWord変数をConvert関数を使いBCD(16Bit)からInt型へ変換することで、各値をINTで取出すことが可能です。

 

DBの中身をクリアにする専用の命令はございません。
Anyエリアの値を繰り返し置きかえるSFC21 "FILL"命令をご使用ください。値が入っていないバイトエリアをBVALに指定し、クリアしたい範囲をBLKとして指定すれば値のクリアが可能です。

DINTの中身がINTの範囲内(-32768<x <32767)のMOVE命令実行

DINTの中身がINTの範囲外(x < -32768, 32767< x )のMOVE命令実行

INT型からREAL型へ直接変換する方法がないため、一度INT型をDINTへ変換し、その後REAL型へCONV命令を使って変換できます。
補足) S7-1200,1500シリーズであればCONV命令でINT型からREAL型へ直接変換可能です。

下記サイトにSTLプログラミングマニュアルがありますので、ご参照ください。

参考
STLプログラミングマニュアル(S7-300/S7-400)日本語

String データタイプの末尾に[x]と文字数を割り当てます。
割り当て可能な範囲は1≦x≦254です。

 

Stringデータタイプのオフセットについて、必ず偶数のオフセット番号から開始する仕様となっているため、Stringデータタイプが奇数と偶数では占有エリアが異なります。
奇数の場合、空白となっているエリアはプログラムでは使用しませんが、データブロックの容量としては確保されるエリアとなります。
なお、各Stringデータの先頭2バイトはStringの最大文字数、現在文字数のデータがそれぞれ入ります。

 

String(1文字)とChar 共にサイズは1バイトです。Stringデータの先頭2バイトはStringの最大文字数、現在文字数のデータが入ります。

S7 300では、S7 1200とS7 1500でサポートされているスライスアクセスは使用できません。

 

ポインターを使用すればデータ範囲を指定することができます。
記述方法は参照図面をご確認下さい。ここでは内部メモリの100.0ビット目から10バイトを
DB1の0.0ビット目から10バイト分コピーする命令となります。

 

 

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

 

DELETE命令を使用し、値を消すことができます。
命令の使い方は添付資料を参照してください。

 

DELETE_S7-1200_1500_300