PROGRAM Device2 VAR_INPUT END_VAR VAR_OUTPUT END_VAR VAR Dev2: myDevice; client2: ModbusFB.ClientTCP; DB2: Datablock; alarmACK2: alarmACKs; setting2: setting; IRreader2: IR_Reader; // for reading IRs count: UINT := 1; // for tracking indices in reg array ip_2: ARRAY[0..3] OF BYTE; id_2: UINT; reqResTimeout: UINT; maxRetries: UINT; END_VAR ==============================MAIN PROGRAM=========================== IF NOT main.init[2] THEN ip_2 := main.ip_2; id_2 := main.id_2; reqResTimeout := main.reqResTimeout;//? maxRetries := main.maxRetries;//? Dev2(devIP:= ip_2, devID:= id_2); Dev2.genRegs(); DB2.init_ACK_data(); main.init[2] := TRUE; END_IF // connect to Ch32 server IF main.init[2] AND NOT client2.xConnected THEN client2(aIPaddr:= Dev2.devIP); client2(xConnect:= TRUE); //make a tcp connection END_IF IF client2.xConnected THEN count:= IRreader2.count + 1; IRreader2(rClient:= client2, rDevice:= myDevice, unitID:= main.id_2, rAlarm:= alarmACK2, rSetting:= setting2, rDB:= DB2, uiStartItem:= Dev2.all_read_regs[count], pdata:= ADR(DB2.all_reads[count])); //xExecute is controlled from within the IRreader FB definition END_IF