登录
首页 PLC论坛 PLC论坛
回帖 发帖
正文

主题:XMT指令在子程序中为啥出错啊

点击:1515 回复:8

要做一个PLC和PC通信程序,但以前没学过PLC,从PC至PLC的部分通了,PLC至PC这部分有个问题请教各位大侠。
问题:XMT指令在子程序中为什么运行出错?
程序中要发送的是字符串“AB”,可结果有时候是(,有时候是p,有时候是什么都没有,不知道为什么啊。
下面是测试XMT的程序:
主程序:
net1:
LD     SM0.1      
CALL   SBR_0     //设置通信参数
net2:
LD     SM0.0
RCV    VB100, 0
AB=    VB101, 16#41
CALL   SBR_1
子程序1:    //设置通信参数
LD     SM0.0
MOVB   16#09, SMB30
MOVB   16#B0, SMB87
MOVB   16#0A, SMB89
MOVW   +5, SMW90
MOVB   100, SMB94
子程序2:     //发送“AB”
LD     SM0.0
MOVB   2, VB200
MOVB   16#41, VB201
MOVB   16#42, VB202
XMT    VB200, 0
09-02-06 19:01
这个程序的执行过程是:
先初始化端口
再接收PC发过来的字符串
如果字符串第一个字符是A
就调用子程序1,向PC发送VB200中存放的字符串AB
但是结果显示程序没这么做
PC这边接收的不是AB
有时候是(
有时候是p
有时候什么都没有
很是疑惑
09-02-06 20:09
问题出在你每个扫描周期都在RCV和XMT。可以不用RCV指令,用通讯口中断,在中断程序中接收字符(字符在SMB2中)。XMT在定时中断中执行。仔细研究一下系统手册,上面有例子。
09-02-06 20:22
谢谢3楼的兄弟,问题解决了,现在我才彻底明白接收发送中断的使用,非常谢谢
09-02-06 22:05
谢谢3楼的兄弟,问题解决了,现在我才基本明白接收发送指令及其中断的使用,非常感谢
09-02-06 22:08
还有一个问题,为什么手册里的那个例程中,当接收成功后再进行发送时为什么之间非得通过一个10ms的定时触发啊,我试了没有这个触发直接发送确实不行,不知道为啥 啊
09-02-06 22:20
这个通讯是单通道的吧,要有确认的
09-02-07 20:41
是半双工的,应该是单通道的吧,7楼的朋友你说的确认不知道是啥意思啊,先谢谢了,呵呵
09-02-08 09:59
我现在的项目也是做这个
09-02-08 16:46

工控新闻

更多新闻资讯