ユーザープロトコルは、Modbusを使わない機器(CO2センサー、バーコード・QRリーダー、ASCIIコマンドで通信するインバーター・温度調節器、数値表示器など)と、決まったバイト形式でデータをやり取りするための機能です(V1.3.0以降)。やり取りするバイトの形式と送信のタイミングをユーザープロトコルウィンドウで設定すると、機器がプログラムとあわせてその通信を実行します。ラダーでPUT・GETを使ってバイトを1つずつ扱う必要はなく、受信した値はチェックサムまで一致した後で、指定したメモリに書き込まれます。
UPTRIGファンクションで、必要なタイミングにトランザクションを1回実行できます。結果は状態ワードと完了ビットで確認できます。ユーザープロトコルは、機器のシリアルチャンネル(通信ポート1~通信ポート3)に設定します。使用できる通信ポートの数は機種によって異なります。
| 通信ポート | 機種 |
|---|---|
| 通信ポート1 | MPS-8A4R(T)-S · MPS-8A8R(T)-S · MPS-16A8R(T)-R2 · MPS-16A16R(T) |
| 通信ポート1~通信ポート3 | MPS-8A8R · MPS-16A8R(T) · MPS-16A8R8T · MPAシリーズ |
通信ポートにつながる端子(RS-232・RS-485・UART)とコネクタの図は、製品ページで確認してください: MPS-8A4R-S · MPS-8A4T-S · MPS-8A8R-S · MPS-8A8T-S · MPS-16A16R · MPS-8A8R · MPS-16A8R · MPS-16A8R8T · MPA Series。MPAシリーズは、通信ポート1がRS-232、通信ポート2がRS-485、通信ポート3がUARTです。
7-E-1)も使用できます。FINIを実行すると、通信ポート3(シリアル3)がオフになります(7セグメント表示を参照)。7セグメントと併用する場合は、ユーザープロトコルを通信ポート1・通信ポート2に設定してください。ユーザープロトコルは、通信ポートごとにフレームとトランザクションで設定します。
| 通信パターン | 開始 | 動作 | 使用例 |
|---|---|---|---|
| 問い合わせ・受信 | 周期・ラダーのUPTRIG・値が変わったとき | 送信フレームを送り、受信フレームを待ちます。 | CO2センサー、インバーターの状態読み出し、温度調節器 |
| 受信のみ | 常時待ち受け | 一致するフレームが来ると値を書き込みます。送信はしません。 | バーコード・QRリーダー、連続出力の計量器 |
| 受信したら応答 | 常時待ち受け | 一致するフレームが来ると、決めた応答フレームをすぐに送ります。 | PCのプログラム、Modbus非対応のHMI |
| 送信のみ | 周期・ラダーのUPTRIG・値が変わったとき | 送信フレームを送り、応答は待ちません。 | 数値表示器、プリンター、設定コマンド |
機器では、次のように実行されます。
ユーザープロトコルを使うシリアルチャンネルは、モードがUser Protocolで、このチャンネルをダウンロードに使うがオフになっている必要があります。
User Protocolを選んでも、そのままにしてもかまいません。ユーザープロトコルウィンドウでOKを押すと、NormalモードだったポートはUser Protocolに変わり、そのポートのダウンロードの使用がオフになります。Normal以外のモード(例: Modbus RTU Slave)に設定したポートは、自動では変わりません。ユーザープロトコルウィンドウの上部に表示されるユーザープロトコルに切り替えを押すと変わります。Normalモードに戻ります。UPTRIGの番号セルでユーザープロトコルを開くを押しても開きます(下記)。ウィンドウは開いたままでラダーを編集できます。定義のない通信ポートでは、+ このポートに作成とテンプレートの一覧が表示されます。
| テンプレート | 含まれる内容 |
|---|---|
| CO2・ガスセンサ — 1 秒ごとに問い合わせ | 「問い合わせ・受信」(1秒周期)のトランザクションと、ゼロ点コマンドをUPTRIG 3で送る「送信のみ」のトランザクション。2進の値はD100、チェックサムは2の補数和 |
| CO2・ガスセンサ — 受信のみ(センサ通信例・センサが自分で送るとき) | 同じCO2の応答フレームを、要求なしで常に待ち受ける「受信のみ」のトランザクション |
| バーコード・QR リーダ | 「受信のみ」のトランザクション。終端文字CR LFまでの文字列をD200から書き込み、文字数をD190に書き込む |
| インバータ・温度調節器(ASCII 局番コマンド) | 「問い合わせ・受信」(0.5秒周期)。ASCII 10進・16進の値、和のチェックサム(ASCII 16進2桁)、NAKのエラー応答 |
テンプレートの名前とセル(D100・M100など)は、追加した後で自由に変更できます。定義のあるポートにも+ テンプレートから読み込む…で追加でき、名前が重複する場合は末尾に番号が付きます。
9600 · 8-N-1)が一緒に表示されます。| キー | 動作 |
|---|---|
Ctrl+Enter | OK |
Esc | ウィンドウを閉じます。変更がある場合は、変更を破棄しますか?と確認します。 |
Ctrl+Z / Ctrl+Y | ウィンドウ内での変更を1段階ずつ元に戻す、またはやり直します。ウィンドウ内に戻せる変更がないときは、プログラム全体の元に戻す・やり直しになります。 |
Ctrl+S | プロジェクトを保存します。OKを押す前にウィンドウで変更した内容は保存されません。 |
Ctrl+T / Ctrl+M | ダウンロード / モニタリング |
← → · Alt+← Alt+→ · Delete · Insert | チップ帯でのチップ間の移動 · チップの並べ替え · チップの削除 · チップの追加 |
Ctrl+Zを押すと、その欄の入力が元に戻ります。同じ欄に続けて入力した文字は、1段階でまとめて元に戻ります。Ctrl+Z)で、OKを押す前の定義に戻せます。フレームは、バイトの順に並べたチップ(フィールド)で作ります。チップの下にはバイトの位置(1バイト目から)が表示され、チェックサムのチップを選ぶと、チェックサムの計算範囲がチップ帯に色付けされます。チップ帯の末尾の+を押してフィールドの種類を選ぶと、チップが追加されます。
| フィールド | 送信時 | 受信時 |
|---|---|---|
| 固定 | 入力したバイトをそのまま送ります。 | 同じバイトの場合だけ、このフレームとみなします(チップに一致必須と表示)。 |
| 値 | PLCのセルの値を、決めた形式のバイトに変換して送ります。 | バイトを値に変換して、PLCのセルに書き込みます。 |
| 文字列 | PLCのセルの文字を送ります。 | 受信した文字をPLCのセルに書き込みます。文字数を別のセルに書き込むこともできます。 |
| 読み飛ばし | 埋め用のバイトを、決めた数だけ送ります。 | その位置のバイトは見ません。 |
| 長さ | 指定したフィールドのバイト数を入れて送ります。 | 実際のバイト数と一致するかを確認し、長さが変わるフレームの終わりを決めます。 |
| チェックサム | 計算して入れます。 | 計算して照合します(チップに照合と表示)。一致しない場合は値を書き込みません。 |
バイト欄には、16進、ダブルクォーテーションで囲んだ文字、制御文字名をスペースで区切って入力してください。下に実際のバイトとバイト数が表示されます。
| 書き方 | 例 | バイト |
|---|---|---|
| 16進2桁 | FF 01 86 | FF 01 86 |
| ダブルクォーテーションで囲んだ文字(ASCII) | “01R” | 30 31 52 |
制御文字名(NUL~US・SP・DEL) | STX ETX CR LF ACK NAK | 02 03 0D 0A 06 15 |
繰り返し(*N、1~255) | 00*5 | 00 00 00 00 00 |
1つのチップには255バイトまで入力できます。ASCII以外の文字は、16進で入力する必要があります。FFは16進のバイト0xFFとして読みます(フォームフィードの制御文字名としては扱いません)。
PLC アドレスに、値をやり取りするセル(例: D100)またはシンボル名を入力し、形式を選んでください。
| 形式 | 設定 | 例 |
|---|---|---|
| 2 進 | バイト数1・2・4、順序(ビッグエンディアン・リトルエンディアン)、符号(なし・あり) | 2バイト、ビッグエンディアン: 01 9A ↔ 410 |
| ASCII 10 進 | 桁数(1~10、空欄で可変)、埋め(0埋め・空白)、符号(なし・負数のみ -・常に +/-)、小数桁(0~9)、小数点(なし・あり) | 4桁、0埋め: 100 ↔ “0100” · 小数桁2、小数点あり: 1234 ↔ “12.34” |
| ASCII 16 進 | 桁数、送信時の文字(大文字・小文字) | 4桁: 6699 ↔ “1A2B” |
| BCD | バイト数1・2・4、順序 | 2バイト: 1234 ↔ 12 34 |
| REAL | 順序(4バイトの実数) | 実数のセル(Rなど)とやり取りします。 |
+・-、決めた桁数より短い小数(“12.3” → 1230)を読み取ります。数字以外の文字や、決めた小数桁より長い0以外の小数(“12.345”)が来ると、値を書き込まず、状態ワードが値変換失敗(F4)になります。可変桁数の場合、受信できるのは1~12文字です。0x7Fより大きいバイトは最上位ビットが失われます。7データビットのポートで、2進の値や0x7Fより大きい固定バイトを使うと、チップが赤く表示されます。D200の下位バイト = 1文字目)。CR LF)が来るまで、最大N文字を受信します。常に N 文字は、常にN文字です。Nは1~255です。形式(2進1バイト・2進2バイト・ASCII 10進・ASCII 16進)と数える範囲(何番目から何番目までのフィールドか)を設定してください。送信時はその範囲のバイト数を入れ、受信時は実際のバイト数と一致するかを確認します。相手機器がバイト数に別の数を加えて送る場合は、補正(加える数)にその数を入力してください。
| 種類 | 計算 |
|---|---|
| 和(8 ビット) · 和(16 ビット) | 範囲のバイトを足した値の下位8ビット・16ビット |
| 2 の補数和 | バイトの和の2の補数(和を0x100から引いた値) |
| 1 の補数和 | バイトの和のビットを反転した値 |
| XOR(BCC) | 範囲のバイトの排他的論理和(XOR) |
| CRC-16 | 下記の種類のいずれか、または手動で設定した値 |
| LRC | 範囲のASCII 16進文字を2文字ずつバイトに変換し、足した和の2の補数(Modbus ASCII方式) |
CRC-16は、機器によって計算方式が異なります。CRC-16 の種類を選ぶと、多項式・初期値・入力反転・出力反転・最終XORの5つの欄が埋まり、文字列“123456789”で計算したチェック値が表示されます。チェック値が相手機器の取扱説明書にあるcheck値と同じになる種類を選んでください。5つの欄のいずれかを変更すると、手動設定になります。
| 種類 | 多項式 | 初期値 | 反転(入力・出力) | 最終XOR | チェック値 |
|---|---|---|---|---|---|
| MODBUS | 8005 | FFFF | あり | 0000 | 4B37 |
| CCITT-FALSE | 1021 | FFFF | なし | 0000 | 29B1 |
| XMODEM | 1021 | 0000 | なし | 0000 | 31C3 |
| KERMIT | 1021 | 0000 | あり | 0000 | 2189 |
| X-25 | 1021 | FFFF | あり | FFFF | 906E |
| ARC | 8005 | 0000 | あり | 0000 | BB3D |
| USB | 8005 | FFFF | あり | FFFF | B4C8 |
| DNP | 3D65 | 0000 | あり | FFFF | EA82 |
格納形式の既定は、MODBUSだけがリトルエンディアンで、ほかの種類はすべてビッグエンディアンです。
受信フレームがどこで終わるかはフレームの形から決まり、チップ帯の上に終わり: …と表示されます。
| 表示 | 終わりを決めるもの |
|---|---|
| 終わり: 固定長 N | すべてのフィールドの長さが決まっているフレーム |
| 終わり: 長さフィールド(フィールド N) | 前にある長さフィールドの値 |
| 終わり: 終端文字 … | 長さが変わるフィールドの直後にある固定バイト(例: CR LF、ETX) |
| 終わり: N ms 無通信で | フレームの末尾の無通信時間 (ms)の間、バイトが来ないこと |
| 終わり: 不明 | 終わりを決められないため、直す箇所として表示されます。 |
末尾の無通信時間 (ms)は、フレームを選ぶと右側のプロパティに表示され、20~10000 msの範囲で設定できます(空欄の場合は使いません)。長さが分からない最後のフィールドは、この時間だけ通信がないと終わったものとみなします。受信途中のバイトが残ったまま回線に100 ms以上通信がない場合も、そのバイトを先頭から破棄します。
ウィンドウ下部のプレビューには、送信フレームのバイトが16進で表示されます(値のセルは0、長さとチェックサムは計算値)。その下の入力欄に、相手機器が送ったバイト列を1行に1つずつ貼り付けると、受信フレームとして解析し、フィールドごとに値と結果を表示します。16進(FF 86 01)と、STX “01” ETXのような固定バイトの書き方のどちらも使えます。
| 結果 | 意味 |
|---|---|
| ✓ … | 固定バイト・長さ・チェックサムがすべて一致しています。✓ の後に、書き込まれる値がフィールドごとに表示されます(図12)。値フィールドのないフレームではこのフレームに一致しますと表示されます。 |
| … 未着です | フレームが終わるには、さらにバイトが必要です。 |
| ✕ … バイト目が決めた固定バイトと違います | このフレームではありません。 |
| ✕ チェックサム — 期待値 … | チェックサムが一致しません。計算した値もあわせて表示されます。 |
| ✕ … 値に変換できません | 数字でないか、セルに収まりません。 |
相手機器の取扱説明書にチェックサムの方式が書かれていない場合や、チェック値が合わない場合に使います。相手機器が実際に送ったフレームを2つ以上貼り付けてください。チェックサムが一致しない場合は、チェックサムの種類・CRC-16の種類・格納形式・範囲の始まりを変えながら、すべてのサンプルに一致する組み合わせを自動で探し、一致する種類を探すの行に候補ごとの「…」に変更ボタンを表示します。サンプルが1つだけでは偶然一致する組み合わせがあり得るため、「…」に変更はサンプルが2つ以上のときだけ押せるようになります。変更した内容は、OKを押すと定義に反映されます。
トランザクション一覧でトランザクションを選ぶと、中央の上部にトランザクションの設定が、その下に送信フレームと受信フレームのチップ帯が表示されます。
| 項目 | 既定値 | 説明 |
|---|---|---|
| 名前 | 通信パターンの名前 | トランザクションの名前です。ポート内で重複しないようにする必要があります。 |
| 通信パターン | — | 問い合わせ・受信 · 受信のみ · 受信したら応答 · 送信のみ |
| 開始 | 周期 | 「問い合わせ・受信」「送信のみ」: 周期 · ラダー UPTRIG 番号 · 値が変わったとき / 「受信のみ」「受信したら応答」: 常時待ち受け |
| 周期 (ms) | 1000 | 10 ms~1時間。前回の開始時点から数えます。 |
| 番号 | 1 | ラダーのUPTRIGの番号(1~255) |
| 見るセル · セル数 | — | 「値が変わったとき」: 見るセルからセル数(1~32)分のいずれかの値が変わると送信します。機器の起動時にも1回送信します。 |
| 応答待ち (ms) | 200 | 「問い合わせ・受信」で応答を待つ時間(20~60000 ms) |
| 再試行 | 2 | 応答がないとき、または正しくない応答だけが来たときに再送信する回数(0~10) |
| 状態ワード | 空欄(使わない) | トランザクションの結果を受け取るワードアドレス(下記) |
| 完了ビット | 空欄(使わない) | トランザクションが終わると1スキャンの間ONになるビットアドレス |
| 受信数セル | 空欄(使わない) | 「受信のみ」「受信したら応答」: 一致するフレームを受信するたびに1ずつ増えるワードアドレス(65535の次は0) |
状態ワードは1ワードで、そのトランザクションの最後の結果を表します。
| 値(16進) | 画面の表示 | 意味 |
|---|---|---|
0000 | まだ一度も成功していない | 機器の起動後、このトランザクションがまだ一度も終わっていません。この定義が機器のプログラムにない場合も0です。 |
0001 | 最後のトランザクション成功 | 最後のトランザクションがエラーなく終わりました。 |
F000 | 応答なし(F0) | 応答が来ませんでした。 |
F100 | チェックサム誤り(F1) | チェックサムが一致しない応答が来ました。 |
F200 | 形の違うバイトだけが来ました(F2) | 受信フレームと形の違うバイトだけが来ました。 |
F300 | 回線ビジー(F3) | 送信が進まず、送れませんでした。 |
F400 | 値変換失敗(F4) | 受信した値が数字でないか、セルに収まりません。送信する値をフレームにできない場合もF4です。 |
F500 | 受信バッファあふれ(F5) | 応答を待つ間に、受信バッファがあふれました。 |
F600 | エラー応答(F6) | エラー応答として設定したフレーム(NAKなど)を受信しました。 |
ポートごとの設定で、新しいポートではオンになっています。
トランザクションの開始をラダー UPTRIG 番号にすると、ラダーのUPTRIGファンクションがそのトランザクションを実行します。ボタンを押したときだけ設定コマンドを送ったり、必要なときだけ値を読み出したりする場合に使います。
UPTRIGファンクションを挿入し、同じ番号を入力します。ファンクションパネルのSerialport分類にあるUPTRIG: Start User Protocol Triggerを選ぶか、ファンクションの挿入ウィンドウ(Ctrl+E)にUPTRIG 3のように入力して挿入できます。
UPTRIGの番号セルを編集すると、ユーザープロトコルで設定したトリガー番号が通信ポート・トランザクション名と一緒に表示され、押して選べます。同じ場所のユーザープロトコルを開くを押すと、ユーザープロトコルウィンドウが開きます。
UPTRIGの入力がOFFからONに変わるたびに、その番号のトランザクションを1回実行します。入力をONにしたままでは、繰り返し実行しません。UPTRIGの番号は1~255の定数で、ユーザープロトコルにその番号で開始するトランザクションがある必要があります。そうでない場合はセルが赤く表示され、コンパイルされません。逆に、トリガー番号を設定したトランザクションに対応するUPTRIGがラダーにない場合は、「トリガー番号 3 を呼ぶ UPTRIG セルがないため、このトランザクションは始まりません」という警告が表示されます。ユーザープロトコルウィンドウは、直す箇所のチップや欄を赤またはオレンジ色で示し、ウィンドウ下部の行に最初のメッセージを表示します。メッセージを押すとその場所に移動し、ほか N 件を押すとすべてのメッセージが展開されます。赤い直す箇所があると、直す箇所 N — 直すまでプログラムを作りませんと表示され、ダウンロードできません。直す箇所があってもOKは押せるため、作成中の定義が失われることはありません。
ラダーとほかの機能については、次の場合をチェックします。
| 場合 | 表示 |
|---|---|
同じ通信ポートでPUT・GET・PUT_LEN・GET_LENを使用 | チャンネルが定数なら赤いセル、変数なら警告。同じ受信バッファを両方が読むと、やり取りするバイトが混ざります。 |
| ユーザープロトコルが受信するセルにラダーが書き込む | 警告。ラダーが書き込んだ値は、次の受信時に上書きされます。 |
| 受信するセル同士が重なる · 状態・完了・受信数のセルが受信するセルと重なる | 警告 |
| Modbus機器テーブルや機器の時計(RTC)ブロックが使うセルと重なる | 警告 |
ポートのモードがUser Protocolでない · モードはUser Protocolだが定義がない · ダウンロードの使用がオン | エラー。ユーザープロトコルウィンドウでOKを押すと、ほとんどの場合はあわせて修正されます。 |
| 機器のRAMが足りない · プログラムがフラッシュに収まらない | エラー。ポート・トランザクション・フレームを減らすか、メモリ領域のサイズを小さくする必要があります。 |
| フレームが255バイトを超える、またはフィールドが32個を超える | エラー |
| 送受信バッファがフレームより小さい | エラー。設定 → データメモリのSERIAL欄でバッファを増やすか、フレームを小さくする必要があります。 |
ユーザープロトコルが使うセルは、検索・すべて置換・インスペクターの使用箇所・使用データ一覧にも表示されます。すべて置換でアドレスを置き換えると、ユーザープロトコルのセルも一緒に変わります。
シミュレーション中は、各通信ポートのユーザープロトコルに仮想相手がつながり、ウィンドウにシミュ仮想相手ビューが加わります。相手機器がなくても、ラダーの動作と状態ワード・完了ビットを確認できます。
シミュレーションには、OKを押した定義だけが反映されます。直す箇所がある定義はシミュレーションされません。回線ビジー(F3)と受信バッファあふれ(F5)はシミュレーションされず、スキャン時間と相手機器の処理時間も含まれません。仮想相手の設定は保存されません。
モニタリング中にユーザープロトコルウィンドウを開くと、状態ワードを設定したトランザクションのカードに最後の結果が表示されます。「受信のみ」「受信したら応答」のトランザクションには、受信数セルの値と、最後に増えてからの経過時間も表示されます。状態は、選択した通信ポートのトランザクションのものだけを読み出します。
カードの表示は、状態ワードの表にある画面の表示と同じです。表示された状態を信頼できないときは、灰色でその理由が表示されます。
| 灰色の表示 | 意味 |
|---|---|
| PLC のプログラムが異なる | 機器のプログラムが、現在のプロジェクトと異なる可能性があります。ダウンロードすると読み出します。 |
| ダウンロード前の設定 | モニタリング開始時の定義にないトランザクションです。OKを押してダウンロードし、モニタリングを再開すると読み出します。 |
| PLC 応答なし · 値は不明 · 新しい値なし · 値は不明 | モニター通信で新しい値が届いていません。 |
| 制限モニタ · 読みません | プログラムのチェックエラーがある間は、ユーザーメモリの状態ワードを読み出しません。 |
| ランタイムが書かない値 | ユーザープロトコルが書き込まない値です。機器のプログラムが異なるか、ラダーがこのセルに書き込んでいます。 |
シミュレーション中は、カードに仮想もあわせて表示されます。OKを押していないトランザクションは確定前の設定、停止したシミュレーションはシミュレーション停止 · …と表示されます。
ポートのモニタ中の通信記録をオンにしてOKを押し、ダウンロードすると、モニタリング中の通信記録ビューに、機器がその通信ポートで送受信したバイトが1行ずつ表示されます。通信記録をオンにすると、機器のRAMとフラッシュの使用量が少し増えます。
→は機器が送ったバイト、←は受信したバイトです。行は機器が送受信した順に並び、時刻はPCが記録を読み出した時点です。✓ D100 = 410 · ✓ チェックサム DF)が表示されます。‹STX›のように表示されます。PC直接試験は、PLCの代わりにPCのCOMポート(USB-RS485・USB-RS232変換器など)を使って、相手機器と直接やり取りする機能です。相手機器をPLCに接続する前に、フレームとチェックサムが正しいかを確認する場合に使います。ウィンドウで変更した定義(OKを押す前の内容)で試験し、デスクトップアプリでのみ使用できます。
COM10 — USB Serial Port」のように機器名が一緒に表示され、Bluetoothのポートは「COM23 (Bluetooth)」と表示されます。最初は(ポートを選んでください)と表示され、前回この通信ポートで開いたCOMがあれば、あらかじめ選ばれます。再読み込みで一覧を読み込み直します。
以下の例は、MPS-8A8Rの通信ポート1~通信ポート3に、3つのテンプレートを1つずつ設定した構成です。ほかの機種でも、通信ポートの番号だけを変えて同じ方法で使用できます。
通信ポート1(9600 · 8-N-1)にCO2センサーを接続して1秒ごとに濃度を読み出し、ボタン入力でゼロ点コマンドを送る例です。
User Protocolモードに変わります。| ラング | 入力 | ファンクション | 内容 |
|---|---|---|---|
| 0 | M3(NO) | UPTRIG 3 | M3がONになると、ゼロ点コマンドを1回送ります。 |
| フレーム | バイト |
|---|---|
| CO2 要求 | FF 01 86 00 00 00 00 00 79(固定FF・01・86・00*5 + 2の補数和、2バイト目から) |
| CO2 応答 | FF 86 + 濃度2バイト(ビッグエンディアン → D100) + 読み飛ばし4 + 2の補数和 |
| ゼロ点コマンド | FF 01 87 00 00 00 00 00 78 |
センサーがFF 86 01 9A 00 00 00 00 DFを送ると、D100は410(ppm)になり、状態ワードD101は0001(10進で1)になって、完了ビットM100が1スキャンの間ONになります。
通信ポート2(9600 · 8-N-1)にバーコードリーダーを接続し、読み取った文字をD200から受信する例です。
| 項目 | 値 |
|---|---|
| フレーム「バーコード」 | 文字列(D200 · 終端文字まで · 最大32 · 受信文字数D190) + 固定CR LF |
| トランザクション「バーコード受信」 | 受信のみ · 常時待ち受け · 完了ビットM101 · 受信数セルD191 |
リーダーがILOGICS-1234とCR LFを送ると、D190は12になり、D200から2文字ずつ(D200 = I・L)書き込まれます。M101が1スキャンの間ONになり、D191が1増えます。空行(CR LFだけ)が来た場合は、文字数0のフレームとして受信します。
通信ポート3(9600 · 7-E-1)に局番01のASCIIコマンド機器を接続し、番地100の値を0.5秒ごとにD11へ読み出す例です。
| ラング | 入力 | ファンクション | 内容 |
|---|---|---|---|
| 0 | @ON | MOVE 100 D10 | 読み出す番地100をD10に入れます。 |
| フレーム | 形 | 例 |
|---|---|---|
| 局番要求 | STX “01” “R” + 番地(ASCII 10進4桁 · D10) + ETX + 和(8ビット)ASCII 16進2桁(2バイト目から) | 02 “01R0100” 03 “77” |
| 局番応答 | ACK “01” “R” + 値(ASCII 16進4桁 · D11) + ETX + 和(8ビット)ASCII 16進2桁(2バイト目から) | 06 “01R03E8” 03 “96” → D11 = 1000 |
| 局番エラー(NAK) | NAK “01” ETX | 受信すると状態ワードD12 = F600 |
トランザクション「局番読み取り」は、「問い合わせ・受信」、周期500 ms、応答待ち300 ms、再試行3回、状態ワードD12です。このテンプレートは文字間の隙間を許すがオフになっているため、要求を一度に続けて送信します。
| 症状 | 確認すること |
|---|---|
状態ワードが0000のまま | ダウンロードしたプログラムにユーザープロトコルが含まれているか、トランザクションの開始がトリガーの場合はラダーのUPTRIGの入力がOFF → ONに変わったかを確認してください。 |
F000(応答なし) | PC直接試験で、同じフレームに相手機器が応答するかを確認してください。応答する場合は、通信ポートの番号と端子(RS-232・RS-485・UART)、RS-485の+・-の配線、通信ポート設定を確認してください。相手機器の応答が遅い場合は、応答待ち (ms)を長くしてください。 |
F100(チェックサム誤り) | 相手機器が送ったバイトを2つ以上貼り付け、一致するチェックサムの種類を探すで確認してください。 |
F200(形の違うバイトだけが来た) | 相手機器が送ったバイトをプレビューに貼り付けて、何バイト目が違うかを確認してください。あわせて、局番・先頭バイト、データビット(7・8)とパリティを確認してください。 |
F400(値変換失敗) | プレビューで、値フィールドの形式(桁数・小数桁・16進)とPLCのセルのサイズを確認してください。 |
F500(受信バッファあふれ) | ボーレートに対してスキャン時間が長いと、1スキャンの間に受信バッファを超えるバイトがたまります。スキャン時間を短くするか、設定 → データメモリのSERIAL欄で受信バッファを増やしてください。128バイトのバッファと115200 bpsでは、スキャン時間が約11 msを超えないようにする必要があります。 |
| 要求は送信されるが、相手機器が応答しない(文字間の隙間) | 相手機器が文字間の隙間を許容していない可能性があります。ポートの文字間の隙間を許すをオフにしてダウンロードし、もう一度確認してください。 |
| 長いバーコードの後半だけが入る | 文字列の最大文字数より長いコードが来ると、後ろから最大文字数分だけが書き込まれます。Nを最も長いコードより大きく設定してください。 |
| ノイズがあるのに値が入る | 機器はパリティエラーをチェックしません。チェックサムのあるフレームで定義してください。 |
| PC直接試験でポートが開かない | モニタリング・ダウンロードやほかのプログラムが、そのCOMを使っていないかを確認してください。 |
UPTRIGを使った.mpxプロジェクトは、V1.2.0以前では開けません。