采用串口调试工具可以读出 中原量仪 测微仪的数值 现在使用S7-200PLC自由口与之通讯却一直无法通讯成功 程序如图 都需要修正哪些地方
图片说明:
最佳答案
主程序
网络1
// SMW92设为100mS时来不及接收72个字符,150mS就没问题
LD SM0.1 // 首次扫描时,
MOVB 16#09, SMB30 // 初始化自由端口:
//选择9600波特
//选择8个数据位
//选择无校验
MOVB 16#9C, SMB87 //允许接收信息
MOVW 150, SMW92 //要小于接收中断里定时中断的时间,超过SMW92值停止接收。
MOVW 0, SMW90 //使用SMB90值检察空闲状态,设为0表示从站允许立即响应。
MOVB 21, SMB94 //SMW94 最大接收字符数,这里无用,但必须要设置。
ENI
网络2
LD SM0.1
ATCH INT_2:INT2, 9 //传输完成中断
MOVB 150, SMB34
ATCH INT_0:INT0, 10 //定时中断发送,首次延时150mS
网络3
LD SM0.1
MOVB 8, VB300
MOVB 16#08, VB301
MOVB 16#03, VB302
MOVB 16#0, VB303
MOVB 16#1, VB304
MOVB 16#0, VB305
MOVB 16#08, VB306
MOVB 16#15, VB307
MOVB 16#55, VB308
网络4
LD SM0.1
MOVB 8, VB310
MOVB 16#09, VB311
MOVB 16#03, VB312
MOVB 16#9C, VB313
MOVB 16#41, VB314
MOVB 16#0, VB315
MOVB 16#06, VB316
MOVB 16#BA, VB317
MOVB 16#C4, VB318
网络5
LD SM0.1
MOVB 8, VB320
MOVB 16#0A, VB321
MOVB 16#03, VB322
MOVB 16#9C, VB323
MOVB 16#41, VB324
MOVB 16#0, VB325
MOVB 16#06, VB326
MOVB 16#BA, VB327
MOVB 16#F7, VB328
网络6
LD SM0.1
MOVB 6, VB340
MOVB 16#31, VB341
MOVB 16#32, VB342
MOVB 16#33, VB343
MOVB 16#34, VB344
MOVB 16#35, VB345
MOVB 16#36, VB346
中断0
网络1
LD SM0.0 //接收延时到标志位置位
= M0.0
网络2
LD SM0.0
INCB SB31
AB> SB31, 4
MOVB 1, SB31
网络3
LD SM0.0
LPS
AB= VB201, 16#08 //WP仪表回应特征
BMB VB200, VB600, 21
LRD
AB= VB201, 16#09 //5#WP移动接收缓冲区数据到VB600数据区
BMB VB200, VB700, 17
LPP
AB= VB201, 16#0A //3#WP移动接收缓冲区数据到VB700数据区
BMB VB200, VB800, 17
//ZW仪表回应特征
//8#ZW移动接收缓冲区数据到VB800数据区
//5#ZW移动接收缓冲区数据到VB900数据区
网络4
LD SM0.0
LPS
DTCH 10 //中断分离
AB= SB31, 1
XMT VB300, 0 //8#ZW读指令数据在VB300起始的5个字符中
LRD
AB= SB31, 2
XMT VB310, 0 //5#ZW读指令数据在VB310起始的5个字符中
LRD
AB= SB31, 3
XMT VB320, 0 //5#WP读指令数据在VB320起始的9个字符中
LPP
AB= SB31, 4
XMT VB340, 0 //3#WP读指令数据在VB340起始的9个字符中
//接收中断子程序
中断2
网络1LD SM0.0
RCV VB200, 0
MOVB 250, SMB34
ATCH INT2, 10
这个是我项目中用到的一段程序,自由口轮询程序,也是来自本论坛的一位高手给的提示,在此表示感谢。
提问者对于答案的评价:
虽然看不懂 谢谢
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc193547.html