s7-200自由口通讯 中原量仪

采用串口调试工具可以读出 中原量仪 测微仪的数值 现在使用S7-200PLC自由口与之通讯却一直无法通讯成功 程序如图  都需要修正哪些地方

图片说明:

s7-200自由口通讯 中原量仪    s7-200自由口通讯 中原量仪    s7-200自由口通讯 中原量仪    s7-200自由口通讯 中原量仪   

最佳答案

主程序
网络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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年8月16日 下午11:23
下一篇 2017年8月16日 下午11:24

相关推荐