IF COM_SERVICE1.ready=FALSE THEN
com_num:=0;
Settings.Port:=com_num;
Settings.dwBaudRate:=115200;
Settings.byParity:=0;
Settings.dwTimeout:=20;
Settings.byStopBits:=2;
Settings.dwBufferSize:=0;
Settings.dwScan:=0;
COM_SERVICE1(Enable:=TRUE , Settings:=Settings , Task:=OPEN_TSK );
com_ready:=FALSE;
ELSE
COM_SERVICE1.Enable:=FALSE;
com_ready:=TRUE;
END_IF
IF com_ready THEN
CASE master1 OF
0:
get1_modbus(
Enable:=TRUE ,
Mode:=MB_RTU ,
DevAddr:=5 ,
FirstAddr:=4104 ,
Quantity:=10,
ComHandle:=com_settings.Port ,
TimeOut:=t#200ms ,
Buffer:=Buffer ,
Complete=>cmpl ,
Exception=>err ,
ByteCnt=>DataSize );
IF err=0 THEN
x:=BYTE_TO_WORD(BUFFER[1]) OR SHL(BYTE_TO_WORD(BUFFER[0]),8);
ptr_PV:=ADR(PV);
ptr_PV^:=buffer[5];
ptr_PV:=ptr_PV+1;
ptr_PV^:=buffer[4];
ptr_PV:=ptr_PV+1;
ptr_PV^:=buffer[3];
ptr_PV:=ptr_PV+1;
ptr_PV^:=buffer[2];
ptr_SP:=ADR(SP);
ptr_SP^:=buffer[17];
ptr_SP:=ptr_SP+1;
ptr_SP^:=buffer[16];
ptr_SP:=ptr_SP+1;
ptr_SP^:=buffer[15];
ptr_SP:=ptr_SP+1;
ptr_SP^:=buffer[14];
END_IF
IF cmpl THEN
master1:=2;
END_IF
2:
get1_modbus(
Enable:=FALSE ,
Mode:=MB_RTU ,
DevAddr:=5 ,
FirstAddr:=4104 ,
Quantity:=10,
ComHandle:=com_settings.Port ,
TimeOut:=t#200ms ,
Buffer:=Buffer ,
Complete=>cmpl ,
Exception=>err ,
ByteCnt=>DataSize );
master1:=3;
3: SPbuffer[0]:=10;
master1:=4;
4:
Wr_Modbus
(
Enable:=TRUE ,
Mode:=MB_RTU ,
DevAddr:=5 ,
FirstAddr:=4 ,
Quantity:= 1,
ComHandle:=com_settings.Port ,
TimeOut:=t#200ms ,
Complete=>cmpl ,
Exception=>err,
Buffer:=SPbuffer,
);
IF cmpl THEN
master1:=5;
END_IF
5:
Wr_Modbus
(
Enable:=FALSE ,
Mode:=MB_RTU ,
DevAddr:=5 ,
FirstAddr:=4 ,
Quantity:= 1,
ComHandle:=com_settings.Port ,
TimeOut:=t#200ms ,
Complete=>cmpl ,
Exception=>err,
Buffer:=SPbuffer,
);
master1:=0;
END_CASE;
END_IF