S7-200自由端口式通讯求助 点击:638 | 回复:6



qi_a

    
  • 精华:0帖
  • 求助:5帖
  • 帖子:12帖 | 29回
  • 年度积分:0
  • 历史总积分:142
  • 注册:2006年6月27日
发表于:2012-03-07 14:19:07
楼主
求助帖20分-已结帖

大虾们你们好,我现在在做一个一个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就应该是我需要的流量累积值了,这样的程序对吗? 请高手们看看我这段程序哪里有问题了?我调试没成功,谢谢!!



楼主最近还看过



yjig

  • 精华:2帖
  • 求助:6帖
  • 帖子:110帖 | 5237回
  • 年度积分:0
  • 历史总积分:12514
  • 注册:2004年6月04日
发表于:2012-03-07 15:38:06
1楼
既然仪表支持MODBUS协议,那为何不直接用MODBUS库指令。

闪电游侠

  • 精华:0帖
  • 求助:7帖
  • 帖子:34帖 | 485回
  • 年度积分:0
  • 历史总积分:1205
  • 注册:2006年2月09日
发表于:2012-03-07 17:17:46
2楼
我以前做过大量的MODBUS通讯的程序,应该不难。QQ:951162134

青岛黄工

  • [版主]
  • 精华:5帖
  • 求助:89帖
  • 帖子:171帖 | 4776回
  • 年度积分:0
  • 历史总积分:24301
  • 注册:2007年4月02日
发表于:2012-03-07 17:26:46
3楼
调试没有成功应该是说通讯不上吧,你看看PLC通讯设置有没有选中报文起始字,结束符之类的,和智能仪表通讯,按照上面的报文格式没有理由通讯不上,除非PLC默认的在报文中增加了别的字符。

zhanziling

  • 精华:0帖
  • 求助:16帖
  • 帖子:51帖 | 1242回
  • 年度积分:0
  • 历史总积分:6030
  • 注册:2009年4月06日
发表于:2012-03-08 08:20:33
4楼
既然仪表支持MODBUS协议,那为何不直接用MODBUS库指令。



qi_a

  • 精华:0帖
  • 求助:5帖
  • 帖子:13帖 | 29回
  • 年度积分:0
  • 历史总积分:142
  • 注册:2006年6月27日
发表于:2012-03-08 09:49:50
5楼

谢谢zhanziling,刚才学习了下Modbus,感觉确实比自由端口好用,还没调试程序,感觉应该没问题了,谢谢各位!!

ye_w

  • 精华:23帖
  • 求助:1帖
  • 帖子:84帖 | 5217回
  • 年度积分:0
  • 历史总积分:46739
  • 注册:2002年4月17日
发表于:2012-03-08 10:24:51
6楼
引用 qi_a 的回复内容:谢谢zhanziling,刚才学习了下Modbus,感觉确实比自由端口好用,还没调试程序,感觉应该没问题了,谢谢各位!!



200的modbus协议库也是使用自由口指令按照modbus规约编写的。对于调试,请一定使用串口调试助手来监控所有报文,这样才易查出那边出的错误

热门招聘
相关主题

官方公众号

智造工程师