回复:关于modbus rs485通讯问题求助。

老石

  • 帖子

    47
  • 精华

    3
  • 被关注

    0

论坛等级:游民

注册时间:2008-08-04

普通 普通 如何晋级?

发布于 2008-09-08 17:47:41

0楼

今天杂事多,但还是抽空做了几个实验.

第一,按你的方法,MODBUS协议,对DB1修改数值,用定时器1:1方波,周期2秒.=1,触发03功能,=0,触发16功能.用SSCOM32接收数据,实验情况和你类似,虽然看变量表,需要修改的数据都在变,但是不是理想情况.确实没有规律。可能发几十条“写指令”,再发几十条“读指令”。这显然是失败的。
大概代码情况如下(我各复制了两条):
02 10 00 00 00 06 0C 00 0A 00 0B 00 0C 00 0D 00 0E 00 0F DC 7D
02 10 00 00 00 06 0C 00 0A 00 0B 00 0C 00 0D 00 0E 00 0F DC 7D
01 03 00 00 00 03 05 CB
01 03 00 00 00 03 05 CB

第二,用ASCII协议,使用两个FB8,各自有自己背景数据块和源数据块。(源数据块长度固定,也就是LEN,分别为6和18,一个读,一个写)用定时器1:1方波,周期2秒。=1,触发03功能,=0,触发16功能.用SSCOM32接收数据,这完全是理想情况。交替发送03功能代码和16功能代码,非常规律。我想如多设计指令,对四个站论询有可能成功。代码如下:
02 10 00 00 00 06 00 0A 00 0B 00 0C 00 0D 00 0E 00 0F
01 10 00 00 00 06
02 10 00 00 00 06 00 0A 00 0B 00 0C 00 0D 00 0E 00 0F
01 10 00 00 00 06
02 10 00 00 00 06 00 0A 00 0B 00 0C 00 0D 00 0E 00 0F
01 10 00 00 00 06
02 10 00 00 00 06 00 0A 00 0B 00 0C 00 0D 00 0E 00 0F
01 10 00 00 00 06
。。。。。。。

这里没有RCR校验码。对03功能等偶数字节的比较好办,自己添加CRC可以正确发MODBUS代码。但是恰恰FC16比较别扭,它的代码总数是奇数。第七字节是BYTE,我曾以前尝试在DB块里自己加,但是DB把中间加的BYTE作为WORD,总数变为偶数。(当然也可能我的方法还不对)所以有朋友建议自己以ASCII协议和ASCII码按MODBUS格式发,即使不考虑校验计算和双方握手,可能也有问题。

明天有时间再实验。你有什么进展吗?
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54617条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。