自由口通讯-xmt和rcv的问题

问题1:200plc xmt指令和rcv指令必须配对使用吗?我通过smb30对端口初始化以后直接使用sm0.0调用xmt指令向变频器传送数据,可是不成功,分配了数据缓冲区并且已经赋值,通过串口调试助手可以向变频器传送数据,波特率、数据位等设置的都一致,请问plc不能发送数据的原因是什么呢?
 问题2:200plc编程软件帮助文件里面关于xmt和rcv的例子程序判断接收数据是否完成是通过smb86的r位状态也就是是否收到结束符进行的,但是我现在用的是rtu模式,这样是不是只能通过判断是否存在3.5个字符时间间隔的方式确认接收是否完成,要是这样的话我应该使用空闲线smw90还是时间段smw92来判断呢,或者还是用其他的方式?

问题补充:
谢谢laohuai高工的回答,我现在对以下两个问题已经明白:1.两个指令可以单独使用,2.执行这两个指令时需要用沿或者中断,不可以使用sm0.0。另外我对以下问题还不是很明确:
   如果我用smw92判断数据结束是否需要设置sm87.3?
   如果算出来接受一个字符的时间为T,那么smw92设置的数值是不是需要大于3.5T,比如说5T?
   这样当间隔时间超过3.5T时sm86.5是不是会置1,也就是确认收到了结束符?
   如果间隔时间超过了5T时sm86.2是不是会置1?
   sm86.5和sm86.2以及sm86.1和sm86.0、sm86.6是否都可以作为接收完成的判断依据,还是只能根据sm86.5来判断?
   以上问题总结起来就是如何判断接收完成,问题比较琐碎,给您添麻烦了。

最佳答案

1 如果我用smw92判断数据结束是否需要设置sm87.3?
   需要设置sm87.2,只有sm87.2=1,smw92的值才有效。
   同样sm87.3也要设置,sm87.3=0,那么定时器是字符计时器,sm87.3=1,那么定时器是帧计时器。

 2 3.5T是默认值,大于默认值也可以,但通讯要讲究效率。

 3 当间隔时间超过3.5T时sm86.5是不是会置1,也就是确认收到了结束符?
   结束符和超时是两种不同的概念

 4 如果sm87.2=1,smw92=5T,那么时间超过了5T时sm86.2会置1。

 5  sm86.5和sm86.2以及sm86.1和sm86.0、sm86.6是否都可以作为接收完成的判断依据,还是只能根据sm86.5来判断?
  都不能。

 6 200PLC通讯口是485口,是半双工通讯口,收发不能同时进行。

 7 200plc xmt指令和rcv指令都可以单独使用。

 8 要用沿或中断执行发送和接收,不能用SM0.0调用XMT

 9 smw90判断数据的开始,smw92判断数据的结束,不能模糊不清。

 10 具体的通讯程序应该根据你设备的通讯协议来写。

提问者对于答案的评价:
谢谢您耐心的回答

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc345204.html

(1)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月4日 下午10:35
下一篇 2021年7月4日

相关推荐

发表回复

登录后才能评论