自由口通信!

主程序:
 Network 1 
 // 传送指令数据结构
 LD     SM0.1
 MOVB   16#55, VB100
 MOVB   16#03, VB101
 MOVB   16#10, VB102
 MOVB   16#68, VB103
 Network 2 //  初始化自由端口:1
 // 
 //  // - 选择9600波特、 选择8个数据位、 选择无校验
 // //接收功能禁止、使用smb88检测数据开始、使用smb89检测数据结束。
 // //设定开始字符AAH
 // //设定结束字符22H
 // //设定最大字节长度25
 LD     SM0.1
 MOVB   16#09, SMB130
 MOVB   16#60, SMB187
 MOVB   16#AA, SMB188
 MOVB   16#22, SMB189
 MOVB   25, SMB194
 Network 3 // 一分钟通讯一次
 // //开始发送vb100后面4位数据
 // //并启用发送完成中断 int_0
 LD     SM0.4
 A      M0.0
 EU
 XMT    VB100, 1
 ATCH   INT0, 26
 ENI
 子程序:
 Network 1 
 // //使能接收位
 // //开始接收数据,存于vb200后22个位
 LD     SM0.0
 S      SM187.7, 1
 RCV    VB200, 1
 Network 2 
 // 收到结束字符,停止接收。
 LD     SM186.5
 EU
 R      SM187.7, 1
 没有接收到任何数据,帮忙看看,那出问题了?
 

最佳答案

1 XMT    VB100, 1   //VB100=16#55,每次发送85个字节数据

 2 ATCH   INT0, 26   //但是你没有列出中断程序

 3 更改如下,你再试试

 INT0:
 LD     SM0.0
 S      SM187.7, 1
 RCV    VB200, 1

 4 以下这段可以不要,因为如果收到结束字符,RCV就结束了,不会和XMT发生冲突,实际上这段并不能停止RCV
 复位SMB187.1后,还需要执行RCV,才能停止RCV.
 LD     SM186.5
 EU
 R      SM187.7, 1

 5 另外这个程序没有考虑从站失电和通讯故障的情况,如果和从站通讯不上,或者通讯有问题,收不到结束字符,
 那么RCV始终不会结束。

 6 参考这个程序:http://www.ad.siemens.com.cn/club/bbs/post.asp?b_id=3&a_id=636193&s_id=0&num=21#anch

 

 

提问者对于答案的评价:
3q

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

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

相关推荐

发表回复

登录后才能评论