====== 弊社製品 FutureNet XIO-1xx の制御 ====== [[http://www.centurysys.co.jp/products/protocol/xio100.html|FutureNet XIO-100]] / [[https://www.centurysys.co.jp/downloads/industrial/xio110/index.html|XIO-110]] を、Modbus により 拡張 DIO として制御・利用することができます((プログラムを作成していただく必要があります))。 {{http://www.centurysys.co.jp/images/photo/industrial/pic_xio100_new.jpg|FutureNet XIO-100}} [[mae3xx_devel:modbus_programming:start]] で紹介している、pylibmodbus を利用する例を紹介します。 \\ ===== Modbus TCP接続 ===== MA-E300 と XIO-1x0 を Ethernet で接続し ModbusTCP で通信を行い DIO を制御します。\\ MA-E300 を Master、XIO-1x0 を Slave として通信を行います。 root@plum:/# ipython3 Python 3.4.3 (default, Nov 17 2016, 01:29:34) Type "copyright", "credits" or "license" for more information. IPython 1.2.1 -- An enhanced Interactive Python. ? -> Introduction and overview of IPython's features. %quickref -> Quick reference. help -> Python's own help system. object? -> Details about 'object', use 'object??' for extra details. In [1]: import pylibmodbus In [2]: client = pylibmodbus.ModbusTcp('192.168.254.252') In [3]: client.connect() In [4]: client.set_slave(0) In [5]: client.read_input_bit(0) Out[5]: 1 In [6]: client.write_bit(1000,1) In [7]: client.read_input_registers(0,17) Out[7]: [0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 339] In [8]: client.write_bit(0,1) In [9]: client.write_bit(1100,1) * [1] pylibmodbus モジュールを読み込みます。 * [2] Modbus TCP のインスタンスを初期化します。 * [3] 接続します。 * [4] Slave 機器のアドレスを設定します。 * [5] 入力ステータスのアドレス 0 を読み、XIO の DI0 の状態を確認します。 * [6] コイルのアドレス 1000 に 1 を書込み、XIO の DI0 のパルスカウンタを有効にします。 * [7] 入力レジスタのアドレス 0 から 16 までを読み込み、XIO のパルスカウンタ値及び、基板温度を確認します。 * [8] コイルのアドレス 0 に 1 を書込み、XIO の DO0 を ON に設定します。 * [9] コイルのアドレス 1100 に 1 を書込み、XIO の DI0 のパルスカウンタをリセットします。 \\ ===== Modbus レジスタ ===== XIO-1x0 のレジスタは下記の構成になっています。 |<50em 5em 25em 8em>| ^ アドレス ^ 内容 ^ 機種 | ^ コイル ^^^ | 0-7|接点出力 0 - 7 1:ON / 0:OFF|XIO-100| | 1000-1007|接点入力 0 - 7 パルスカウンタ開始 / 停止 1:開始 / 0:停止|:::| | 1100-1107|接点入力 0 - 7 パルスカウンタリセット 1:リセット|:::| | 0-1|接点出力 0 - 1 1:ON / 0:OFF|XIO-110| | 1000-1001|接点入力 0 - 1 パルスカウンタ開始 / 停止 1:開始 / 0:停止|:::| | 1100-1101|接点入力 0 - 1 パルスカウンタリセット 1:リセット|:::| | 2000|DC 電源出力 1:ON / 0:OFF|:::| ^ 入力ステータス ^^^ | 0-7|接点入力 0 - 7 1:ON / 0:OFF|XIO-100| | 0-1|接点入力 0 - 1 1:ON / 0:OFF|XIO-110| ^ 入力レジスタ ^^^ | 0|接点入力 0 パルスカウンタ上位 16 ビット|XIO-100/110| | 1|接点入力 0 パルスカウンタ下位 16 ビット|:::| | 2|接点入力 1 パルスカウンタ上位 16 ビット|:::| | 3|接点入力 1 パルスカウンタ下位 16 ビット|:::| | 4|接点入力 2 パルスカウンタ上位 16 ビット|XIO-100| | 5|接点入力 2 パルスカウンタ下位 16 ビット|:::| | 6|接点入力 3 パルスカウンタ上位 16 ビット|:::| | 7|接点入力 3 パルスカウンタ下位 16 ビット|:::| | 8|接点入力 4 パルスカウンタ上位 16 ビット|:::| | 9|接点入力 4 パルスカウンタ下位 16 ビット|:::| | 10|接点入力 5 パルスカウンタ上位 16 ビット|:::| | 11|接点入力 5 パルスカウンタ下位 16 ビット|:::| | 12|接点入力 6 パルスカウンタ上位 16 ビット|:::| | 13|接点入力 6 パルスカウンタ下位 16 ビット|:::| | 14|接点入力 7 パルスカウンタ上位 16 ビット|:::| | 15|接点入力 7 パルスカウンタ下位 16 ビット|:::| | 16|基板温度 0.1 ℃単位(例: 34.2 ℃ => 342)|XIO-100/110| | 32|アナログ入力 0 データ 16ビット|XIO-110| | 33|アナログ入力 1 データ 16ビット|:::| | 34|アナログ入力 2 データ 16ビット|:::| | 35|アナログ入力 3 データ 16ビット|:::|