问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

汇川PLC使用socket与其他控制器通讯的完整示例

创作时间:
作者:
@小白创作中心

汇川PLC使用socket与其他控制器通讯的完整示例

引用
CSDN
1.
https://m.blog.csdn.net/normer123456/article/details/145466138

本文主要介绍汇川PLC使用socket通讯的详细步骤和示例代码,包括环境配置、具体指令的使用方法等。文章内容较为专业,主要面向有一定PLC编程基础的技术人员。

环境配置

系统:Windows 10
平台:汇川PLC编程软件autoshop
PLC型号:Eazy521
PLC编程语言:梯形图

汇川PLC socket通讯程序示例

1. 监听(TCP_Listen)

汇川PLC提供整套socket通讯的指令,包括ModbusTCP、TCP、UDP三种协议,其中TCP又包括服务端、客户端指令。本文仅以PLC作为服务端示例。

socket通讯,作为服务端,首先需要进行监听,汇川PLC中,使用TCP_Listen指令。

图中指令的变量,我们需要提前创建好,我们可以新建一个全局变量:

此处,为了方便调用,我们可以使用结构体,如listen指令块的相应变量,我们创建一个ListenCMD结构体:

监听的端口号,根据实际需求来设置,如果有触摸屏,可以添加到触摸屏上,自定义修改。

2. 接受客户端(TCP_Accept)

在FC中添加TCP_Accept指令块:

新建一个AcceptCMD结构体,与ListenCMD结构体类似,不再赘述。

查看以上两个指令,会发现出现了两个socket实例,socekt_server和socket_client。这两个实例数组是用于存储当前建立的服务端,以及接受的客户端的实例的数据:

但autoshop中,暂时还不支持自定义socket实例相关变量,因此,如果在autoshop中创建socket实例数组,使用INT[20]数组代替。所以,我们也需要创建两个INT[20]数组,用于表示serversocket实例与clientsocket实例,当然,如果你有多个客户端连接,那么就需要创建多个对应的客户端实例。

3. 关闭连接(TCP_Close)

socket连接可以主动关闭,但是需要注意,在汇川PLC中,如果要关闭连接,最好是将服务端与客户端的实例一起关闭。

我们同样创建CloseCMD结构体,然后在FC块中添加TCP_Close指令:

此处因为我们要同时关闭服务端与客户端实例,所以调用了两次TCP_Close指令。需要注意的是,两个close指令块对应的socket实例应该是不同的。

4. 发送数据(TCP_Send)

可以看到,理论上发送的最大数据长度为32767字节,而且要注意,发送长度不能大于数据缓存区即Buffer的数组的大小。

但一般来说,在PLC中进行的数据通讯,不会用到这么多,通常PLC用于工业现场的数据收集,大多是开关量数据,或者一些模拟量仪表数据,这么大的数据长度是肯定够用的。

同样的,我们创建SendCMD结构体,并在FC块中添加TCP_Send指令:

如上图,此处我们使用了定时器来模拟定时发送数据(M8013,1s脉冲),但是通常实际工况中,数据发送的触发条件与现场工艺或者其他因素有关,是有条件触发,这个可以根据实际情况,调整触发时机。

有个需要注意的点是,实际使用时,发送数据长度需要与客户端的控制器的设置匹配,如果双方设置不同,可能会造成发送接收不一样,引起不必要的误差。不过,通常如果工业现场进行通讯,肯定是设备双方提前进行沟通,数据协议也是提前定好的,应该不会存在这方面的失误,此处权作为一个提醒。

5. 接受数据(TCP_Receive)

接收指令块与发送指令块的结构基本上是一样的,一个小小的区别是,二者的预设数据长度的取值范围稍有差别,发送数据的预设值可以为0(为0时,发送数据以字符串格式进行),而接收数据时,其预设长度的范围是1-32767,如果设置为0,指令块会报错。

我们新建一个RecvCMD结构体,然后在FC块中添加TCP_Receive指令:

对于接收到的数据的处理,则根据自己需要,原则上,通过socket发送和接收的底层数据,是字节数组。可以转为PLC中的任意类型,如int、dint、real等。

总结

以上介绍了汇川PLC通用socket通讯的示例,事实上,汇川的官方手册也有使用示例,可以直接仿照使用,也可以加以修改。

如需源码的朋友,可以在此链接下载:
https://download.csdn.net/download/normer123456/90343690

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号