オムロンCJ2でのシリアル通信

オムロンPLC CJ2ではPLC本体あるいはCJ1W-SCU**のシリアル通信ユニットで温調器などとシリアル通信するが、基本的には無手順のときはTXD(U)命令(=送信)、RXD(U)命令(=受信)を使用してシリアル通信を行う。

しかしながらキーエンスPLCのプロトコルスタジオのようにプログラムレスで送受信データの組み立てや切り分けを行いたい。

そこでオムロンにもプロトコルマクロと呼ばれる機能があるので今回紹介する。
ただし、細かい設定はここでは触れない。
※細かい設定はオムロンFAサイトから「CX-Protocol Ver. 2.0 オペレーションマニュアル」をダウンロードし3-5章を参照されたい。

まずプロトコルマクロの送受信データ定義はCX-Protocolと呼ばれるアプリを使用する。
※CX Oneをインストールすればインストールされているが、最新版にアップデートしておくとよい。

ここでシーケンスを新規作成する。今回の例では送信メッセージE5Z_read、受信メッセージE5Z_recvを定義しており、リピートカウンタに8を指定することで、1シーケンス実行時に8回送受信を行う定義にしている。

送信メッセージE5Z_readの定義である。
ヘッダやターミネータもプログラムレスで設定できる。
またラダーで書くと大変手間のかかるチェックコードもプログラムレスで設定できるのがありがたい。
アドレスのR(1)は後で述べるPMCR命令のパラメータ指定送信データメモリ+1ワードのデータを表している。

受信メッセージE5Z_recvの定義である。
データのW(2N+1)はPMCR命令のパラメータ指定受信データメモリ+(2N+1)ワードのデータを表している。
Nは上記で紹介したシーケンス定義のリピートカウンタ数である。
送受信を最大8回繰り返すたびに値が変化する。

この定義をCX-ProtocolでPLCへ転送する。
またCJ1W-SCU**のシリアル通信モードをプロトコルマクロにしておく。

ラダーではPMCR命令を書くだけである。
例では定義したシーケンスNo.0を実行している。
送信データD700に送信データCH数、D701~送信データを格納する。
受信データD800に受信データCH数が格納され、D801~受信データ本体が格納される。