DVP15MC部分
通过LAN2端口与AS228T进行Socket通信
变量声明
范围 | 名称 | 地址 | 数据类型 |
---|---|---|---|
VAR | Socket_Manage | ETH_Socket_Manage | |
VAR | Socket_Config | ETH_Socket_Config | |
VAR | Socket_Open | ETH_Socket_Open | |
VAR | Socket_Send | ETH_Socket_Send | |
VAR | Socket_Receive | ETH_Socket_Receive | |
VAR | Socket_Close | ETH_Socket_Close | |
VAR | Socket_Status | ETH_Socket_Status | |
VAR | UsiSocketSendBufferData | %MB12000 | USINT |
VAR | UsiSocketReceiveBufferData | %MB12200 | USINT |
VAR | bSocketSendExecute | BOOL | |
VAR | bSocketSendAbort | BOOL | |
VAR | bSocketReceiveExecute | BOOL | |
VAR | bSocketReceiveAbort | BOOL | |
VAR | bSocketManageEnable | BOOL | |
VAR | bInit | BOOL | |
VAR | ArSocketSFData | %MB12000 | ARRAY[1..200] OF USINT |
VAR | ArSocketRFData | %MB12200 | ARRAY[1..200] OF USINT |
程序编写
//初始化 将MODBUS TCP数据初始化写入发送缓冲区
IF EDGEPOS(bInit) THEN
ArSocketSFData[1] := 16#00 ;
ArSocketSFData[2] := 16#00 ;
ArSocketSFData[3] := 16#00 ;
ArSocketSFData[4] := 16#00 ;
ArSocketSFData[5] := 16#00 ;
ArSocketSFData[6] := 16#0b ;
ArSocketSFData[7] := 16#00 ;
ArSocketSFData[8] := 16#10 ;
ArSocketSFData[9] := 16#10 ;
ArSocketSFData[10] := 16#00 ;
ArSocketSFData[11] := 16#00 ;
ArSocketSFData[12] := 16#02 ;
ArSocketSFData[13] := 16#04 ;
ArSocketSFData[14] := 16#aa ;
ArSocketSFData[15] := 16#bb ;
ArSocketSFData[16] := 16#cc ;
ArSocketSFData[17] := 16#dd ;
bInit := FALSE ;
END_IF;
//管理
Socket_Manage(Enable:= TRUE,EnableSocket:= bSocketManageEnable);
//配置
Socket_Config(Execute:= Socket_Manage.SocketReady,
SocketNum:= 1,
Protocol_Type:= 0, //0:Socket UDP ;1:Socket TCP
RemoteIP_segment1:= 192,
RemoteIP_segment2:= 168,
RemoteIP_segment3:= 5,
RemoteIP_segment4:= 10,
Remote_port:= 502,
Local_port:= 502,
LinkKeeptime:= 30,
//Done=> ,
//Busy=> ,
//Error=> ,
//ErrorID=>
);
//打开
Socket_Open(Execute:= Socket_Config.Done,
SocketNum:= 1,
OpenMode:= TRUE, //TRUE:客户端模式; FALSE:服务器模式
//Done=> ,
//Busy=> ,
//Error=> ,
//ErrorID=>
);
//发送
Socket_Send(Execute:= bSocketSendExecute,
Abort:= bSocketSendAbort,
SocketNum:= 1,
CyclicRun:= FALSE,//TRUE:周期发送数据;FALSE:仅发送一笔数据
CycleTime:= 100,
Send_Buffer_Address:= UsiSocketSendBufferData,
Send_Length:= 200,
//Done=> ,
//Sent=> ,
//Sending=> ,
//Busy=> ,
//Active=> ,
//Aborted=> ,
//Error=> ,
//ErrorID=>
);
//接收
Socket_Receive(Execute:= bSocketReceiveExecute,
Abort:= bSocketReceiveAbort,
SocketNum:= 1,
ReceiveMode:= 1,//0:持续接收数据;1:只接受一笔数据
DataSaveMode:= 1,//0:拼接模式;1:覆盖模式
Receive_Buffer_Address:= UsiSocketReceiveBufferData,
Receive_Length:= 200,
//Done=> ,
//Received=> ,
//Receiving=> ,
//Received_Length=> ,
//Busy=> ,
//Active=> ,
//Aborted=> ,
//Error=> ,
//ErrorID=>
);
//关闭
Socket_Close(Execute:= Socket_Receive.Done,
SocketNum:= 1,
//Done=> ,
//Busy=> ,
//Error=> ,
//ErrorID=>
);
//状态
Socket_Status(Enable:= TRUE,
SocketNum:= 1,
//Valid=> ,
//Conected=> ,
//Received=> ,
//Closed=> ,
//Send=> ,
//Opening=> ,
//Receiving=> ,
//Closing=> ,
//Sending=> ,
//Error=> ,
//ErrorID=>
);
Log:
2019-12-10 发布本文
网友评论