CX-CompoletはPCと接続されているPLCの情報を読み書きするためのVisualBasicまたはC#の部品です
VisualBasicまたはC#で作成するアプリケーションにCX-Compoletが提供するコンポーネントを組み込んでFins GatewayまたはSYSMAC Gatewayを経由してPLCにアクセスします
コンポーネントによってGatewayが変わります

CX-Compoletを使用するには、通信ミドルウェアのSYSMAC GatewayまたはFinsGatewayが必要になります
通信ミドルウェアはCX-Compoletに同梱されているのでインストールするときに一緒にインストールされます
CIPプロトコル(Ethenet/IP)で接続するときはSYSMAC Gatewayが必要になります
CIPプロトコルでは変数を指定して値の読み書きをすることになります
PCとの接続はEIPユニットまたはCPU内蔵のEIPポートと接続します
SYSMAC Gateway Consoleを起動してネットワークポートをオープンしておきます
イーサネットカードのプロパティでIPv6のチェックが入っていると通信できないことがありました
接続できないときはチェックを外してみてください
Finsプロトコルで接続するときはFinsGatewayが必要になります
Finsプロトコルでは物理アドレス(DM0000など)を指定して値の読み書きをすることになります
PCとの接続はETNユニット、EIPユニットまたはCPU内蔵のEIPポートと接続します
FinsGatewayの設定を起動してETN_UNITを開始します
次に、ローカルネットワーク0(Ethernet)のプロパティを開いて、通信ユニットタブでPLCが接続されているネットワークカードを選択します
メニューバーの[ツール]-[ツールボックス アイテムの選択]を開きます
PLCのメモリエリアの読み書きやPLCの状態の読出しなどを行うことができます
| コンポーネント | 概略 | 使用するGateway |
|---|---|---|
| CJ2Compolet | CJ2とCIP通信 | SysmacGateway |
| NE1SCompolet | NE1SとCIP通信 | |
| NJCompolet | NJとCIP通信 | |
| NXCompolet | NXとCIP通信 | |
| NYCompolet | NYシリーズとCIP通信 | |
| CommonCompolet | ODVA標準タグの読み書き | |
| DataAccessCompolet | 全てのCIP通信 | |
| SysmacC | CシリーズとFins通信 | FinsGateway |
| SysmacCV | CVシリーズとFins通信 | |
| SysmacCS | CSシリーズとFins通信 | |
| SysmacCJ | CJシリーズとFins通信 |
SYSMAC GatewayにアクセスしてCIP通信サービスの情報や操作が行うことができます
| コンポーネント | 概略 |
|---|---|
| VariableCompolet | SYSMAC Gatewayに登録した変数の読み書き |
| PortCompolet | Etherenetポートのオープン/クローズ |
| SYSMAC Gateway Service Compolet | CIP通信サービスの操作と情報取得 |
| DataLinkCompolet | CIPデータリンクの設定や状態取得 |
FinsGatewayにアクセスしてFinsGatewayのイベントメモリの読み書きなどが出来ます
| コンポーネント | 概略 |
|---|---|
| VariableCompolet | SYSMAC Gatewayに登録した変数の読み書き |
| PortCompolet | Etherenetポートのオープン/クローズ |
| SYSMAC Gateway Service Compolet | CIP通信サービスの操作と情報取得 |
| DataLinkCompolet | CIPデータリンクの設定や状態取得 |
ヘルプファイルは [スタート] - [OMRON] - [CX-Compolet]にあります
CX-Compoletのサンプルは [スタート] - [OMRON] - [CX-Compolet] - [samples]にあります
以下のリンクはメッセージ通信を中心にできるだけ簡単なサンプルを作って説明しています
PLCと接続して変数の値を読み書きするサンプルと
PCの時刻をPLCに書込むサンプルです
PLCと接続してDMの値を読み書きするサンプルです
PLCの変数に変化があったときにアプリケーションにイベントが通知されるサンプルです
メモリの値を読み出すときに掛かる通信時間は主にパケット数に依存します
例えば下表のCIP UCMM通信で492byte(286word)を読み出すのに1パケットでおよそ5msかかりますが、2byte多い494byte(287word)を読み出すには2パケット使いおよそ10msかかります
このように2byte増えるだけで読み出しにかかる時間が増えてしまうので読み出し速度を上げたい場合は参考にしてください
NXCompolet.ReadVaribleを使って変数の値を読み出す時の読み出し時間


| パケット数 | UCMM | Class3 | ||
|---|---|---|---|---|
| バイト数 | 通信時間 (ms) | バイト数 | 通信時間 (ms) | |
| 1 | 492 | 5.473 | 1984 | 5.753 |
| 2 | 984 | 10.305 | 3968 | 10.294 |
| 3 | 1476 | 15.517 | 5952 | 15.417 |
| 5 | 2460 | 27.289 | 9920 | 25.046 |
| 10 | 4920 | 52.235 | 19840 | 55.068 |
| 20 | 9840 | 108.019 | 39680 | 107.269 |
| パケット数 | バイト数 | 通信時間 (ms) |
|---|---|---|
| 1 | 1998 | 8.579 |