您现在所在的是:

PLC论坛

回帖:8个,阅读:1485 [上一页] [1] [下一页]
858
leibo3008
文章数:6
年度积分:50
历史总积分:858
注册时间:2009/2/6
发站内信
发表于:2009/2/6 19:01:39
#0楼
要做一个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

858
leibo3008
文章数:6
年度积分:50
历史总积分:858
注册时间:2009/2/6
发站内信
发表于:2009/2/6 20:09:11
#1楼
这个程序的执行过程是:
先初始化端口
再接收PC发过来的字符串
如果字符串第一个字符是A
就调用子程序1,向PC发送VB200中存放的字符串AB
但是结果显示程序没这么做
PC这边接收的不是AB
有时候是(
有时候是p
有时候什么都没有
很是疑惑
1515
hehong
文章数:64
年度积分:50
历史总积分:1515
注册时间:2004/7/12
发站内信
发表于:2009/2/6 20:22:32
#2楼
问题出在你每个扫描周期都在RCV和XMT。可以不用RCV指令,用通讯口中断,在中断程序中接收字符(字符在SMB2中)。XMT在定时中断中执行。仔细研究一下系统手册,上面有例子。
858
leibo3008
文章数:6
年度积分:50
历史总积分:858
注册时间:2009/2/6
发站内信
发表于:2009/2/6 22:05:08
#3楼
谢谢3楼的兄弟,问题解决了,现在我才彻底明白接收发送中断的使用,非常谢谢
858
leibo3008
文章数:6
年度积分:50
历史总积分:858
注册时间:2009/2/6
发站内信
发表于:2009/2/6 22:08:15
#4楼
谢谢3楼的兄弟,问题解决了,现在我才基本明白接收发送指令及其中断的使用,非常感谢
858
leibo3008
文章数:6
年度积分:50
历史总积分:858
注册时间:2009/2/6
发站内信
发表于:2009/2/6 22:20:20
#5楼
还有一个问题,为什么手册里的那个例程中,当接收成功后再进行发送时为什么之间非得通过一个10ms的定时触发啊,我试了没有这个触发直接发送确实不行,不知道为啥 啊
12704
lixiaobai
文章数:7780
年度积分:49
历史总积分:12704
注册时间:2006/4/5
发站内信
08年最佳博客奖
发表于:2009/2/7 20:41:16
#6楼
这个通讯是单通道的吧,要有确认的
说说
858
leibo3008
文章数:6
年度积分:50
历史总积分:858
注册时间:2009/2/6
发站内信
发表于:2009/2/8 9:59:20
#7楼
是半双工的,应该是单通道的吧,7楼的朋友你说的确认不知道是啥意思啊,先谢谢了,呵呵
1761
yanxueqiang
文章数:325
年度积分:50
历史总积分:1761
注册时间:2009/1/6
发站内信
发表于:2009/2/8 16:46:05
#8楼
我现在的项目也是做这个

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

62.4004