OpenPLCのslave deviceのArduino UNOのI/Oを全部出力に変更したい。
OpenPLCのArduinoUNOの出力数を変更しようとしましたができませんでした。
しかし、少しの工夫で変更することができました。
まず
内の
//Define the number of registers, inputs and coils to be created
#define NUM_DISCRETE_INPUT 0
#define NUM_INPUT_REGISTERS 6
#define NUM_COILS 12
#define NUM_HOLDING_REGISTERS 0
//Create the I/O pin masks
uint8_t pinMask_DIN = {1};
uint8_t pinMask_AIN = {A0, A1, A2, A3, A4, A5};
uint8_t pinMask_DOUT = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
uint8_t pinMask_AOUT = {1};
を変更します。
これだけで簡単にできると思ったのですが、
Runtime側で、下のように設定され、
デジタル入力=5
デジタル出力=4
アナログ出力=3
アナログ入力=6
出力数が変更できませんでした。
runtimeを起動して、
localhost:8080で、Loginします。
「ADD new devices」をクリックし、
Device Nameを付けて、COM Portを選択して「Save device」で保存します。
そうすると、このように保存できます。
このままでは、
デジタル入力=5
デジタル出力=4
アナログ出力=3
アナログ入力=6
のままです。
そこで、1日がかりで、mbconfig.cfgを発見しました。
青い四角は、自身のuser nameとなります。
mbconfig,cfg内を変更します。
デジタル入力=0
デジタル出力=12
アナログ出力=0
アナログ入力=6
としたかったので、次のように設定しました。
※mbconfig,cfgは、「Save Device」で変更されます。
また、Slave Devicesの表示には反映されません。
Num_Devices = "1"
Polling_Period = "100"
Timeout = "1000"
# ------------
# DEVICE 0
# ------------
device0.name = "uno"
device0.slave_id = "0"
device0.protocol = "RTU"
device0.address = "/dev/ttyS2"
device0.IP_Port = ""
device0.RTU_Baud_Rate = "115200"
device0.RTU_Parity = "None"
device0.RTU_Data_Bits = "8"
device0.RTU_Stop_Bits = "1"
device0.RTU_TX_Pause = "0"
device0.Discrete_Inputs_Start = "0"
device0.Discrete_Inputs_Size = "0"
device0.Coils_Start = "0"
device0.Coils_Size = "12"
device0.Input_Registers_Start = "0"
device0.Input_Registers_Size = "6"
device0.Holding_Registers_Read_Start = "0"
device0.Holding_Registers_Read_Size = "0"
device0.Holding_Registers_Start = "0"
device0.Holding_Registers_Size = "0"
ラダープログラムです。
A0に押しボタンスイッチを接続し、スイッチを押すとM0がONし、
LEDがY0からY11まで点灯します。
スイッチを押すと、全部点灯しました。
runtimeのmonitoringでも確認できました。