|
Socket TCP 在工业控制中是一种 “通用可靠的传输底座”,相比传统串口 / 总线,它传输更快、扩展性更强;相比 UDP,它更可靠;相比专用工业以太网协议,它更灵活。 PLC在Socket TCP 通讯中,既可以做服务器,也可以做客户端。服务器-客户端与主从站不同,服务器-客户端是通用网络连接架构:客户端发起连接请求,服务器监听并建立连接。连接建立后,双方地位对等,均可主动发送/接收数据。 在本次的样例中,使用两个plc,分别作为客户端和服务器,首先来介绍一下plc作为客户端时的需要配置的指令: SOCK_Open:建立Socket连接,创建一个UDP连接/TCP客户端连接 SockTy 链接类型,UDP(0)和TCP-CLIENT(1)不支持TCP服务器连接。 DestIP0 目标IP地址的第1个字节。DestIP1 目标IP地址的第2个字节。DestIP2 目标IP地址的第3个字节。DestIP3 目标IP地址的第4个字节。 Lport 本地端口,Rport 目标端口,与远程服务器端口号一致。超时报警。Timeout 超时时间,单位:100ms。 Enable 使能位,输入输出类型,M0.0会自复位Done 读写功能完成位。SockID 输出连接号,底层分配,应用要提供一个全局内存保存连接号。 Error 错误代码。 SOCK_Send/SOCK_Recv:使用指定的连接给发送或接收数据 SockID 输出连接号底层分配,应用要提供一个全局内存保存连接号。 SndPtr/RcvPtr:数据缓冲区指向待发送数据的指针,可以指向I、Q、M或V存储器的指针。 Len待发送字节数范围为1~512字节。 Timeout 超时时间,单位:100ms。 Enable 使能位 Done 读写功能完成位,使能后自动清零。 Error 错误代码 SOCK_Close:关闭指定的连接
需要注意的是,在发送和接收数据时都需要触发发送和接收指令块的Enable位,再触发之后会自动复位。 作为socket服务器时,则只需要确定客户端端口号,不需要再根据IP,链接建立成功后的客户端IP会在TCP_CONNECT的输出引进显示。指令块ServerID和ConnertID需要完全对应,便可实现服务器的链接。需要注意的是,在创建服务器以及链接时,enable使能位是输入类型的变量,需要常通,如果使能位为0则会导致链接中断。发送与接收指令块与客户端不同,Enable位都为输入类型,发送数据需要每次发送新数据时都触发一次Enable,但是接收数据库时只需要常通就可以一直接收数据。
本样例程序使用触摸屏来对两个PLC进行监控,按照顺序,先创建tcp服务器,然后启动tcp服务器连接,再启动客户端连接。
|