TCP communication test function block, version V1.2, support data sending and receiving, heartbeat timing transmission, display receiving, and Time-limited reception, can be downloaded and tested.(Only for personal test use, do not use in the field production environment, if you have questions please contact the author)
支持常规数据收发,心跳定时发送,限时接收,以及数据接收验证;仅供个人测试;
程序中如有问题感谢反馈,我会及时做出修改!
一、功能块引脚
功能块引脚包括:initialize初始化、TCP_Parameter,两个引脚;
二、內部程序(部分)
1、程序段1:Initialize初始化
2、Parameter mapping
#S_TSEND_C_Instance.CONT := #TCP_Parameter.DATA.Control.CONT; //连接赋值
//Data
IF #"S_Ephemeral data".HeartSend_State
THEN
//#TCP_Parameter.DATA.S_HeartBeat.RECEIVE := #S_HeartBeat.RECEIVE;
#TCP_Parameter.DATA.S_HeartBeat.RECEIVE.Recv_LEN := #S_HeartBeat.RECEIVE.Recv_LEN;
#TCP_Parameter.DATA.S_HeartBeat.RECEIVE.Recv_Count := #S_HeartBeat.RECEIVE.Recv_Count;
#TCP_Parameter.DATA.S_HeartBeat.RECEIVE.Recv_Valid := #S_HeartBeat.RECEIVE.Recv_Valid;
#TCP_Parameter.DATA.S_HeartBeat.RECEIVE.Recv_Check_Err := #S_HeartBeat.RECEIVE.Recv_Check_Err;
#TCP_Parameter.DATA.S_HeartBeat.RECEIVE.Recv_ASCII := #S_HeartBeat.RECEIVE.Recv_ASCII;
#S_HeartBeat.RECEIVE.Recv_Check_Enable := "TCP_Parameter".Data.DATA.S_HeartBeat.RECEIVE.Recv_Check_Enable;
UMOVE_BLK(IN := #S_Data.RECEIVE.Recv[0],
COUNT := 32,
OUT => #TCP_Parameter.DATA.S_HeartBeat.RECEIVE.Recv[0]);
UMOVE_BLK(IN := #TCP_Parameter.DATA.S_HeartBeat.RECEIVE.Recv_CheckData[0],
COUNT := 32,
OUT => #S_HeartBeat.RECEIVE.Recv_CheckData[0]);
#S_HeartBeat.RECEIVE.Recv_Check_Enable := #TCP_Parameter.DATA.S_HeartBeat.RECEIVE.Recv_Check_Enable;
#S_TSEND_C_Instance.LEN := #TCP_Parameter.DATA.S_HeartBeat.SEND.Send_Len;
#TCP_Parameter.DATA.S_HeartBeat.SEND.Send_Count := #S_HeartBeat.SEND.Send_Count;
#TCP_Parameter.DATA.S_HeartBeat.SEND.Send_Valid := #S_Data.SEND.Send_Valid;
#TCP_Parameter.DATA.S_HeartBeat.SEND.Send_ASCII := #S_Data.SEND.Send_ASCII;
UMOVE_BLK(IN := #TCP_Parameter.DATA.S_HeartBeat.SEND.Send[0],
COUNT := 32,
OUT => #S_Data.SEND.Send[0]);
END_IF;
IF #"S_Ephemeral data".HeartSend_State = FALSE
THEN
#TCP_Parameter.DATA.Data.RECEIVE := #S_Data.RECEIVE;
#S_TSEND_C_Instance.LEN := #TCP_Parameter.DATA.Data.SEND.Send_Len;
#TCP_Parameter.DATA.Data.SEND.Send_Count := #S_Data.SEND.Send_Count;
#TCP_Parameter.DATA.Data.SEND.Send_Valid := #S_Data.SEND.Send_Valid;
#TCP_Parameter.DATA.Data.SEND.Send_ASCII := #S_Data.SEND.Send_ASCII;
#S_Data.SEND.Send := #TCP_Parameter.DATA.Data.SEND.Send;
#S_TSEND_C_Instance.REQ := #TCP_Parameter.DATA.Control.Send_REQ;
#S_TRCV_Instance.EN_R := #TCP_Parameter.DATA.Control.Recv_REQ;
END_IF;
//Communication
#S_TCP_Comm.Tcon_Connect.InterfaceId := #TCP_Parameter.DATA.TCP_Communication.parameter.InterfaceId;
#S_TCP_Comm.Tcon_Connect.ID := #TCP_Parameter.DATA.TCP_Communication.parameter.Connect_ID;
#S_TCP_Comm.Tcon_Connect.ActiveEstablished := #TCP_Parameter.DATA.TCP_Communication.parameter.ActiveEstablished;
#S_TCP_Comm.Tcon_Connect.RemotePort := #TCP_Parameter.DATA.TCP_Communication.parameter.RemotePort;
#S_TCP_Comm.Tcon_Connect.LocalPort:= #TCP_Parameter.DATA.TCP_Communication.parameter.LocalPort;
//Addr
#S_ADDR_SPLIT.Addr_ALL := #TCP_Parameter.DATA.TCP_Communication.parameter.RemoteAddress;
//Status
#TCP_Parameter.DATA.TCP_Communication.Status.Tsend_DONE := #S_TSEND_C_Instance.DONE;
#TCP_Parameter.DATA.TCP_Communication.Status.Tsend_BUSY := #S_TSEND_C_Instance.BUSY;
#TCP_Parameter.DATA.TCP_Communication.Status.Tsend_ERROR := #S_TSEND_C_Instance.ERROR;
#TCP_Parameter.DATA.TCP_Communication.Status.Tsend_STATUS := #S_TSEND_C_Instance.STATUS;
#TCP_Parameter.DATA.TCP_Communication.Status.Trcv_NDR := #S_TRCV_Instance.NDR;
#TCP_Parameter.DATA.TCP_Communication.Status.Trcv_BUSY := #S_TRCV_Instance.BUSY;
#TCP_Parameter.DATA.TCP_Communication.Status.Trcv_ERROR := #S_TRCV_Instance.ERROR;
#TCP_Parameter.DATA.TCP_Communication.Status.Trcv_STATUS := #S_TRCV_Instance.STATUS;
//HeartBeat
#S_HeartBeat.HeartBeat_Enable := #TCP_Parameter.DATA.S_HeartBeat.HeartBeat_Enable;
#S_HeartBeat.Send_interval := #TCP_Parameter.DATA.S_HeartBeat.Send_Interval;
AI 代码解读
4、communication
5、正常收发信号处理
6、心跳信号处理+发送有效状态
7、心跳信号接收
8、数据校验
9、超限判断
```IF #"S_Ephemeral data".HeartSend_State AND
#S_Time.TON[1].ET = #TCP_Parameter.DATA.S_HeartBeat.Send_Time_Limit AND
#"S_Ephemeral data".Resend_Cycle=FALSE
AI 代码解读
THEN
#TCP_Parameter.DATA.S_HeartBeat.Status.HeartBeat_Err := true;
AI 代码解读
END_IF;
IF #TCP_Parameter.DATA.S_HeartBeat.HeartBeat_Enable = FALSE OR
#TCP_Parameter.DATA.S_HeartBeat.Reset
AI 代码解读
THEN
#TCP_Parameter.DATA.S_HeartBeat.Status.HeartBeat_Err := FALSE;
#TCP_Parameter.DATA.S_HeartBeat.Status.Resend_count := 0;
AI 代码解读
END_IF;
``` **
此功能块在特定设备上测试OK。如需源码下载 请关注WX公众号:CCLib