Modbusの利用 (10) CONPROSYS その4 Pythonで制御②
CONPROSYSシリーズのCPS-MCS341-DS1-131は、拡張モジュールを追加しなくとも本体にディジタル入出力を4チャネルもっています。前回、出力端子の動作をPythonで制御しました。ここでは、入力の状態を見て、出力を制御します。
●4チャネルのDIOの状態
DIO0,1を入力に、DIO2,3を出力に設定してあります。
出力DIO2にはリレー、DIO3にはLEDを取り付けています。
●DIO0の状態で出力を変化
入力に設定したDIO0に信号入力があるとと、出力に設定したDIO3のLEDが光るという実験をします。DIO0には、近接センサGX-F12B(Panasonic)をつなぎます。
動作電圧は12~24V、最大動作距離(最大検出距離)は4.0mm±8%です。出力はNPNトランジスタのオープン・コレクタです。
CPS-MCS341-DS1-131のDIO0,1の入力回路です。
近接センサはオープン・コレクタなので、次のように接続します。近接センサが反応しない通常時はTr1はOFFなので入力DI0は12V付近の電圧がかかっていて、フォトカプラのLEDは光りません。
近接センサが反応するとTr1はONになり、DI0はLowになります。するとフォトカプラのLEDに電流が流れ、ディジタル入力端子に有効な信号が入ったことを検知します。
●動作確認
この近接センサは、通常、動作確認用LEDが点灯しています。
ModbusのDIのステータスです。'1'です。
近接センサにニッパ(鉄)を重ねると、LEDが消灯します。
ModbusのDIのステータスです。'0'です。
●近接センサの状態でLEDを動かす
Python(前回の記事参照)で、DIO0(DI0)が'0'ならDIO3(DO3)につながっているLEDをONにします。
import sys, time sys.path.append('C:\\Users\\ユーザ名\\AppData\\Local\\Programs\\Python\\Python38\\Lib\\site-packages') from pyModbusTCP.client import ModbusClient SERVER_HOST = "192.168.111.20" SERVER_PORT = 502 c = ModbusClient() c.host(SERVER_HOST) c.port(SERVER_PORT) c.open() while 1: time.sleep(0.14) # print(c.read_discrete_inputs(0, 4)) if not c.read_discrete_inputs(0, 1)[0]: print(c.read_discrete_inputs(0, 1)) time.sleep(1.5) c.write_single_coil(3, 1) time.sleep(0.14) c.write_single_coil(3, 0)