最近遇到一个有关485通讯的问题,使用某种PID调节表头,需要用485通讯将相应的数据读取到S7-226中。该仪表的协议格式中读取动态数据的指令为“@ DE RD CRC CR” 即”启始符+地址+操作命令+效验码+命令结束符“ 相应发送的数据为“40 30 31 52 44 31 37 0D”。
使用232-485转接口将PC的232口和仪表的485口连接,运行串口调试软件,从PC机的232口发送该指令,可得到正确的反馈数据。。。。。可判断仪表处设置正确。
编写200的程序,定义1口为自由口,运行后发现数据接受缓冲区内未接受到数据,SM186。7有一次0-》1-》0的过程。
自己检查该程序,找不到问题所在;拨打西门子技术支持热线,态度极其恶劣!求各位帮忙看下程序,指导一二。。多谢了。
附上程序(由LAD转换来的)
OB1
Network 1
// 数据发送缓冲区数据写入
LD SM0.1
MOVB 16#09, VB100
MOVB 16#40, VB101
MOVB 16#30, VB102
MOVB 16#31, VB103
MOVB 16#52, VB104
MOVB 16#44, VB105
MOVB 16#31, VB106
MOVB 16#37, VB107
MOVB 16#0D, VB108
Network 2 // Network Title
// 通讯口设置
// 初始化1口为自由口,9600波特,8位/字符,无校验。
// 初始化RCV信息控制字节
// 信息字符结束设置为16进制的0d
// 空闲超时时间为5毫秒秒
// 24 (接受信息完成)
中断0发送数据
// 26(发送信息完成)中断1接受数据
// VB100处设置接受缓冲区
LD SM0.1
MOVB 16#09, SMB130
MOVB 16#B4, SMB187
MOVB 16#0D, SMB189
MOVW 5, SMW190
MOVB 100, SMB194
ATCH INT1, 24
ATCH INT2, 26
ENI
XMT VB100, 1
END_ORGANIZATION_BLOCK
---------------------------------------------------------
INT0
Network 1
// 发送指令
LD SM0.0
DTCH 10
R SM187.7,1
RCV VB200,1
XMT VB100, 1
-----------------------------------------------------------
INT1
Network 1
//附加一10毫秒的定时器,时间到调用中断程序0
LD SM0.0
MOVB 10, SMB34
ATCH INT0, 10
-----------------------------------------------------------
INT2
Network 1 // 接受指令
LD SM0.0
S SM187.7, 1
RCV VB200, 1