wenliang
擡頭白雲悠悠,前竟一片黯愁……
级别: 家园常客
精华主题: 0
发帖数量: 715 个
工控威望: 907 点
下载积分: 43026 分
在线时间: 546(小时)
注册时间: 2014-04-04
最后登录: 2024-11-02
查看wenliang的 主题 / 回贴
楼主  发表于: 2021-12-01 08:49
请问各位大师三菱MODBUS通讯,现在问题是PC发送一条数据给PLC,当PLC收到数据时M8123动作、而且马上回复PC已经收到指令,但是现连机讯运行时偶而会出现PC发送数据给PLC、而PLC收到后并没有回复PC,现在用串口软件来测试也是一样的情况,PC轮询指令间隔时间160MS,轮询N多条指令后就会出现PLC少回复的情况,另外也问过三菱客户了,说是把D8129超时改成1也没有用,不知道各位大师有什么高见,烦请多多指点一下,在此谢过了!!!


  
[ 此帖被wenliang在2021-12-01 09:32重新编辑 ]
wenliang
擡頭白雲悠悠,前竟一片黯愁……
级别: 家园常客
精华主题: 0
发帖数量: 715 个
工控威望: 907 点
下载积分: 43026 分
在线时间: 546(小时)
注册时间: 2014-04-04
最后登录: 2024-11-02
查看wenliang的 主题 / 回贴
1楼  发表于: 2021-12-01 09:32
请问如图所示,PLC发送14个字符时间为17.5MS,那么接收PC14个字符是不是按同理17.5MS计算,可是为什轮询间隔都设成160MS了为什么PLC还是会偶而没有回复呢?另外PC做了一个判断、当收不到PLC的回复时PC就不在轮询了停在当前状态。   
wenliang
擡頭白雲悠悠,前竟一片黯愁……
级别: 家园常客
精华主题: 0
发帖数量: 715 个
工控威望: 907 点
下载积分: 43026 分
在线时间: 546(小时)
注册时间: 2014-04-04
最后登录: 2024-11-02
查看wenliang的 主题 / 回贴
2楼  发表于: 2021-12-01 12:02
程序上面看不出什么问题,当M8123接收到指令时,立马就启动M8122回复PC,上面图片上有程序就是接收和发送的,然后就是一直往复接收发送,没有理由程序还有什么其他延时不回复的情况啊?
wenliang
擡頭白雲悠悠,前竟一片黯愁……
级别: 家园常客
精华主题: 0
发帖数量: 715 个
工控威望: 907 点
下载积分: 43026 分
在线时间: 546(小时)
注册时间: 2014-04-04
最后登录: 2024-11-02
查看wenliang的 主题 / 回贴
3楼  发表于: 2021-12-01 15:01
早上又问了三菱客服,说让降低频率发送报文,还是没有找到问题所在     
wenliang
擡頭白雲悠悠,前竟一片黯愁……
级别: 家园常客
精华主题: 0
发帖数量: 715 个
工控威望: 907 点
下载积分: 43026 分
在线时间: 546(小时)
注册时间: 2014-04-04
最后登录: 2024-11-02
查看wenliang的 主题 / 回贴
4楼  发表于: 2021-12-01 19:20
引用
引用第5楼zmrs163于2021-12-01 17:06发表的  :
两线制还是四线制,我写了个脚本没设置延时,PLC和PC都是收到就发。300多秒收发了10000多次没出现你的情况

是二线制通讯的,我就是用串口调试助手160MS循环测试都会偶尔会少发几条指令,PLC也是没有设置任何延时,收到数据就会马上回复,所以没有找到问题所在,不知道大师你们的程序是如何收发数据的呢,另外我现在收发都是14个字符没有关系吧?下图是通讯设置和数据收发程式,还大师请多多指点,在此谢过了!


  
[ 此帖被wenliang在2021-12-01 19:27重新编辑 ]
wenliang
擡頭白雲悠悠,前竟一片黯愁……
级别: 家园常客
精华主题: 0
发帖数量: 715 个
工控威望: 907 点
下载积分: 43026 分
在线时间: 546(小时)
注册时间: 2014-04-04
最后登录: 2024-11-02
查看wenliang的 主题 / 回贴
5楼  发表于: 2021-12-02 11:56
引用
引用第7楼jacking于2021-12-02 11:24发表的  :
你有没有观察你在收时会不会发,两线半双工不能同时收发,观察下M7会不会偶然间误触发导致的没有收到。

数据收发速度太快不太容易观察,现在用串口助手测试监控收发能看到有发送给PLC、而PLC没有回复(见下图),我明白半双工不能同时收发的,另外M7我在使用列表里面查过了没有在其他地方使用,现在情况是上位机发送的比回复的多,也就是说PLC少回复了,正常接收要和发送的一样多才对
[ 此帖被wenliang在2021-12-02 12:05重新编辑 ]
wenliang
擡頭白雲悠悠,前竟一片黯愁……
级别: 家园常客
精华主题: 0
发帖数量: 715 个
工控威望: 907 点
下载积分: 43026 分
在线时间: 546(小时)
注册时间: 2014-04-04
最后登录: 2024-11-02
查看wenliang的 主题 / 回贴
6楼  发表于: 2021-12-02 20:04
引用
引用第10楼gxtmdb82164于2021-12-02 16:46发表的  :
本身modbus是应该有重试机制的,一问一答保证每次都会有回应,如果没收到就重来一次.

LZ可以试试看PC对PC发送和PLC对PLC发送,一端固定不变就是你现在的PC程序和PLC程序,另一端写一个最简单的收发程序,这样跑一段时间来看一下结果如何.

最后提醒一个点是这样的,两线串口这种半双工的通信程序,要给数据传输完成留时间,换言之并不是收到了马上就发送硬件可能还还没准备好,或者对方的buffer还没清空,这个是底层硬件和底层系统软件的机制决定的,在PLC这样的环境中,至少延迟一个周期是非常有用的方法.
.......

您好 大师!我现在遇到的问题是PC发送数据线PLC,当PLC收到上位机的数时会马上回复PC说已经收到数据了,但现在会出现偶尔PLC没有回复PC收到数据,这样就导致PC上位机软件无法继续运行,我换了其他的电脑过来测试也是出现一样的问题,我直接用串口助手来跟PLC对发指令也是会少收到PLC回复,另外上位机软件工程师说他的软件不能重发数据、因为正常程序都是他发送一条数据PLC就要回复一条数据,就类似心跳包一样,现在都已经没有心跳了,所以后面的程序不能执行下去了,上位机软件是每条指令都有间隔160MS延时的、他说这个时间也不能太长了,所以始终没有找到问题所在?
wenliang
擡頭白雲悠悠,前竟一片黯愁……
级别: 家园常客
精华主题: 0
发帖数量: 715 个
工控威望: 907 点
下载积分: 43026 分
在线时间: 546(小时)
注册时间: 2014-04-04
最后登录: 2024-11-02
查看wenliang的 主题 / 回贴
7楼  发表于: 2021-12-03 20:36
今天问采购才知道485模块是在网上买的国产的,也不知道是不是国产模块产品质量问题,准备买个正品模块来试一下看是什么问题、、、