回复:求教:CP341做MODBUS通讯(MASTER)是否只能调用一次FB8?

老石

  • 帖子

    47
  • 精华

    3
  • 被关注

    0

论坛等级:游民

注册时间:2008-08-04

普通 普通 如何晋级?

发布于 2008-09-08 18:27:07

0楼

quote:以下是引用dcount107在2008-09-07 13:51:01的发言:
我手头没有模块,没法测试。
你可以做个简单的实验,用ASCII方式,只调用FB8,用PC串口调试工具监视接收内容。
如果接收到的内容是交替显示的,那就没什么问题了。

今天完全按照你的建议做,用ASCII协议,使用两个FB8,各自有自己背景数据块和源数据块。(源数据块长度固定,也就是LEN,分别为6和18,一个读,一个写)用定时器1:1方波,周期2秒。=1,触发03功能,=0,触发16功能.EN和REQ的控制和我复述你帖子一样.
用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校验码。

但是把这段程序用到MODBUS协议(拷贝了OB1和相关数据块,协议变为MODBUS-MASTER),不再发码了.TDX灯不亮了.
对03功能等偶数字节的比较好办,自己添加CRC可以正确发MODBUS代码。但是恰恰FC16比较别扭,它的代码总数是奇数。第七字节是BYTE,我曾以前尝试在DB块里自己加,但是DB把中间加的BYTE作为WORD,总数变为偶数。(当然也可能我的方法还不对)所以有朋友建议自己以ASCII协议和ASCII码按MODBUS格式发,即使不考虑校验计算和双方握手,可能也有问题。
为什么在MODBUS协议下不能两次调用FB8呢?EN和REQ的控制和我复述你帖子一样.

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54710条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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