2024-07-03
现在做的一个项目用到了FX5U的Socket的通讯,通讯连接上了,因为速度的关系所有收发的速度都是毫秒级别,我自己用以太网助手发单一的命令接收与发送中间只需要4MS的间隔时间就可以了,但因为控制命令的不同就有收发命令的不同,导致PLC会报通讯包收发数据混乱,有个M849发送数据是长发送是我接收到上位机的命令后回复给上位机的中间间隔大概4MS左右,上位机接收方在两个发送命令中间有时会接收到一个空的命令,但查看发送的次数只有两次,没搞明白这个空的命令是如何引起的,询问下不同命令的收发中间需间隔多少时间,发送命令一直是40个字节,会因不同的状态嵌入到这40个字节上,接收的字节数长度不定,最大有20个字节,现在有个想法是如果没有收到其他的命令M849状态回复命令仍然以4MS的间断发送,需要发送其他命令时M849发送4MS后嵌入需要发送的命令在等4MS后在发送M849
评论3
楼主 2024/7/3 18:42:20
不可能的,那是你自己程序的问题了。我从来没遇到过这样的问题,自己程序做断线重连机制就行了呀!一直打开链接又关闭链接,直到连接上了,就不关闭就行了
楼主 2024/7/3 18:47:08
上位机直接写MC协议就好了完成不用考虑这个问题~上位机调用三菱通信库网上资源很多的,不过很多写上位机的很死脑筋就是了~以前我不会搞但是我有查到HSL通信库能调用档文跟测试程序发给搞PC的他也没用硬是他自己又按着程测程序发出的报文仿写了一段,现在自己会搞C#才发现调用通信库上位机很简单。
using HslCommunication;
using HslCommunication.Profinet.Melsec;
MelsecMcNet socket = new MelsecMcNet("192.168.10.11", 6000);//创建对象
isConnect = socket.ConnectServer().IsSuccess;//连接PLC
楼主 2024/7/3 18:48:31
就标题而言,我觉得不需要刻意的延时,可以参考视频:
三菱FX5U系列PLC使用Socket编程实现以太网开放式通信服务器视频教程:
三菱FX5U系列PLC做以太网开放式通信服务器、以太网调试助手做以太网开放式通信客户端,以太网调试助手先行发送8个字节数据给三菱FX5U系列PLC,三菱FX5U系列PLC再返回8个字节数据给以太网调试助手。视频较为详细的讲解了三菱FX5U系列PLC实现以太网开放式Socket通信服务器所需SP.SOCSND、SP.SOCRCV等2个指令。
https://www.ixigua.com/6905211498595877383?utm_source=xiguastudio
三菱FX5U系列PLC使用Socket编程实现以太网开放式通信客户端视频教程:
三菱FX5U系列PLC做以太网开放式通信客户端、以太网调试助手做以太网开放式通信服务器,三菱FX5U先行发送8个字节给以太网调试助手,以太网调试助手再返回8个字节给三菱FX5U。视频较为详细的讲解了三菱FX5U系列PLC实现以太网开放式Socket通信客户端所需SP.SOCOPEN、SP.SOCCLOSE、SP.SOCSND、SP.SOCRCV等4个指令。
https://www.ixigua.com/6904857492723859981?utm_source=xiguastudio