主程序:
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