johnsonxjq
必攻不守
级别: 略有小成
精华主题: 0
发帖数量: 149 个
工控威望: 333 点
下载积分: 470 分
在线时间: 70(小时)
注册时间: 2007-08-31
最后登录: 2024-12-19
查看johnsonxjq的 主题 / 回贴
楼主  发表于: 2018-07-03 09:21
图片:
三菱Modbus通信初始化,结构化编程,上面的首尾相联初始化成功,可以正常通信,
下面的书写模式初始化失败,端口不发送数据.失联状态.原因不明,哪位高手解释一下.
读写是用ADPRW ,在这里不要怀疑其它部分程序了,我只改这里,一个通信正常,一个完全不能通信
难道是三菱结构化编程还存在bug.三菱的推出结构化编程,真心比西门子的难用,写程序很慢,本人也是尝试
[ 此帖被johnsonxjq在2018-07-03 09:27重新编辑 ]
johnsonxjq
必攻不守
级别: 略有小成
精华主题: 0
发帖数量: 149 个
工控威望: 333 点
下载积分: 470 分
在线时间: 70(小时)
注册时间: 2007-08-31
最后登录: 2024-12-19
查看johnsonxjq的 主题 / 回贴
1楼  发表于: 2018-07-03 18:11
恶魔就躲在 EN 和 ENO。
SFC、ST 的样子不代表就是阶梯图的样子。
将两段程序写进 PLC 后以阶梯图读出来观察就会明白了。

读出来,一个是M8411只有一个,全部初始化在后面,一个是M8411有多个,每个带两个Mov指令,逻辑上没问题呀,但实际唉,
三菱的编译器是否有问题?那就坑人了.
johnsonxjq
必攻不守
级别: 略有小成
精华主题: 0
发帖数量: 149 个
工控威望: 333 点
下载积分: 470 分
在线时间: 70(小时)
注册时间: 2007-08-31
最后登录: 2024-12-19
查看johnsonxjq的 主题 / 回贴
2楼  发表于: 2018-07-03 21:09
引用
引用第4楼twingo49于2018-07-03 20:03发表的  :

其實在modbus通信手冊第35頁已經有提醒了

我正是在此页看到问题才改的程序,但问题是这样不对呀,不符合规则啊.西门子的PLC就没有这样的说法.三菱的仿西门子还是有点莫名其妙
johnsonxjq
必攻不守
级别: 略有小成
精华主题: 0
发帖数量: 149 个
工控威望: 333 点
下载积分: 470 分
在线时间: 70(小时)
注册时间: 2007-08-31
最后登录: 2024-12-19
查看johnsonxjq的 主题 / 回贴
3楼  发表于: 2018-07-04 15:07
图片:
引用
引用第7楼instanttw于2018-07-04 10:09发表的  :
@johnsonxjq

身边没东西可测试,以下只是猜测。

[code]INC(MOV(M8411, H1087, D8420), D0);
.......


谢谢你的回答,你的思考深入了,实际情况D0=0;另外,我用的是FX3U,结构化编程和ST编程竞然不能混用,和西门子相比,三菱的灵活性实在差很多,不过三菱,欧姆龙,台达都有结构化编程出来 了,向西门子这个龙头老大告拢.希望不久的将来,能形成大一统局面,为何不同的厂家不能使用同样结构的语言,来少去我们这些代码工人的劳动呢.虽然到那时写程序变得更没价值了.但毕竟这是进步.
[ 此帖被johnsonxjq在2018-07-04 15:15重新编辑 ]
johnsonxjq
必攻不守
级别: 略有小成
精华主题: 0
发帖数量: 149 个
工控威望: 333 点
下载积分: 470 分
在线时间: 70(小时)
注册时间: 2007-08-31
最后登录: 2024-12-19
查看johnsonxjq的 主题 / 回贴
4楼  发表于: 2018-07-04 15:09
引用
引用第8楼twingo49于2018-07-04 12:19发表的  :
其實重點在M8411,手冊有提到建議M8411只有一次(35~38頁),如果用超過一次,只有最後一次有效,第二種寫法會變成M8411用4次所以只有最後一次有效,因此通不起來。


对,仔细看了下手册,的确有如此说法,如果这样说就和编译器有关.我想说的是,三菱这样做,像是在设陷井.