Modbusの利用 (12) CPSN-MCB271-1-041+CPSN-AI-1208LI
コンテックの低価格マイコンCONPROSYSnanoのCPSN-MCB271-1-041本体に、A-Dコンバータ・モジュールCPSN-AI-1208LIを追加した形で、アナログ電圧を収集します。
CPSN-MCB271-1-041では、Modbus/TCPが動いています。IPアドレスは192.168.111.21をふりました。Windows10マシンからPython3でアクセスします。
●CPSN-MCB271-1-041本体へのWebアクセス
PCのWebブラウザのURLに、CPSN-MCB271-1-041のIPアドレス192.168.111.21を入れます。パスワードを聞かれるので、mcb271(デフォルト)を入れます。
A-Dコンバータ・モジュールCPSN-AI-1208LIの設定をここからできます。デフォルトでは、入力が±10V、Modobusからは0~4095の数値が読み出されます。
リファレンスマニュアル(ソフトウェア編) | CPSN-MCB271-S1-041/CPSN-MCB271-1-041 [日本語]
から、0V入力時0x800が読み出されます。0x800のオフセットがついていると解釈できます。
入力電圧(V)最大値+9.995117 0x0FFF、最小値-10.000000 0x00
1LSBは0.004883Vです。
アナログ入力レンジは、データシートによると、±10V、±5V、±2.5V、0-10V、±20mAが設定できます。
Modbusの読み出し値です。スロット位置によって、アドレスが変更されます。ここでは1枚しか利用していないので、0が振られています。
●入力の接続
このアナログ・モジュールは12ビットの8チャネル入力です。1番と5番にTL431(約2.5V)の出力をつなぎ、シングルエンド入力で利用します。モジュールには、24ビット・タイプや熱電対対応の製品もあります。
●Modbusの仕様
Modbus/TCPのポートは標準の502です。
本体は、下記のファンクションをサポートしています。
- 0x01:Read Coil Statusコイル(DOの読み出し)
- 0x02:Read Input Status入力ステータス(DIの読み出し)
- 0x03:Read Holding Registers(保持レジスタの読み出し)
- 0x04:Read Input Registers(入力レジスタの読み出し)
- 0x05:Force Single Coil コイル(DOへの1点書き込み)
- 0x06:Preset Single Register(保持レジスタへの書き込み)
- 0x0F:Force Multiple Coils(複数コイル、DOへの一括書き込み)
- 0x10:Preset Multiple Registers(複数保持レジスタへの一括書き込み)
アナログ・モジュールCPSN-AI-1208LIのアクセスは、0x04:入力レジスタだけなので、上記のチャネル設定などはできません。
アドレスは、拡張スロットに挿入する順番によって異なります。今回はアナログ入力だけなので、入力レジスタ0~7に読み出した各チャネルのデータが収納されます。
にあります。ファンクション名はソースを読みました。
import time from pyModbusTCP.client import ModbusClient SERVER_HOST = "192.168.111.21" SERVER_PORT = 502 c = ModbusClient() c.host(SERVER_HOST) c.port(SERVER_PORT) c.open() regs = c.read_input_registers(0, 8) print((regs[0] - 0x800) * 0.004883, 'V')
実行結果は、2.495213 Vでした。