大虾们你们好,我现在在做一个一个S7-200和智能仪表之间的RS-485通讯的问题,前段时间经过在网上搜索一些资料自己做了一个程序,结果调试没成功,现在向大虾们求助来了。情况是这样的:
智能仪表RS-485通讯协议如下
支持MODBUS协议,出厂默认设备地址是1(用户可自己分配),速率9600bps,8位数据,1个停止位,偶校验:注本协议所有浮点数均是符合IEEE标准的单精度浮点数。
我需要发送两条命令,一条是清零,一条是接收命令。仪表通讯协议里规定了该两条命令的具体内容
清零信号:PLC发送01 10 01 90 00 02 04 00 00 00 00 F7 53
接收命令:PLC发送01 03 01 90 00 02 C5 DA
PLC接收到的回应是 01 03 04 (1)(2)(3)(4)CRCL CRCH(注:括号内序号为10进制)
字节含义:
01:MODBUS从机地址
03:功能代码
04:上传字节数
(1)~(4)流量累积值
浮点数存储格式与接收顺序关系图
(3) 高字节
(4)
(1)低字节
(2)
我做的程序如下:
1、给SMB30赋值2#1001001
2、给SMB87赋值2#10010100
3、给SMW90赋值15
4、给SMW92赋值1000
5、给SMB94赋值2#11111111
6、给VB100赋值2#1101(XMT-TBL管脚),即发送字节数13(清零信号01 10 01 90 00 02 04 00 00 00 00 F7 53)
7、给VB101~VB113赋值01 10 01 90 00 02 04 00 00 00 00 F7 53
8、XMT的EN信号由程序控制,需清零流量计流量累积值时置位
9、给VB200赋值16#8(XMT-TBL管脚),即发送字节数8(读取流量累积命令01 03 01 90 00 02 C5 DA)
10、给VB201~VB208赋值01 03 01 90 00 02 C5 DA
11、XMT的EN信号由程序控制,需要读取流量累积值时置位
12、第11步发送动作完成后SM4.5置位,SM4.5置位后执行RCV命令,RCV-TBL管脚为VB300
13、VB306 MOV_B VB600
14、VB307 MOV_B VB601
15、VB304 MOV_B VB602
16、VB305 MOV_B VB603
那么VD600就应该是我需要的流量累积值了,这样的程序对吗? 请高手们看看我这段程序哪里有问题了?我调试没成功,谢谢!!
楼主最近还看过