回复:那位朋友手头也有CP341(RS485)以及MODBUS_MASTER硬件狗能否帮忙做个实验并解答我的问题??

老石

  • 帖子

    47
  • 精华

    3
  • 被关注

    0

论坛等级:游民

注册时间:2008-08-04

普通 普通 如何晋级?

发布于 2008-09-04 22:35:20

0楼

谢谢斑竹鼓励,大家给我帮助很大,也深为感谢!
先复"dcount107"朋友":
LEN的确是不用考虑第7个BYTE和CRC校验.我的体会终究这里还是一个FB8调用,LEN需要的是告诉某个环节在该共享数据块的命令的BYTE数量。以你在5楼粘贴的PDF文档为例,这个LEN就是DB块那12个字节的数量,在真实的DB块组态页面,最下面一行有总数12的数字,LEN填这个数字即可。该PDF文档表格下面有一串命令代码不包括CRC校验码共13个BYTE,其中第七个不需要用户考虑,是自动添加的。你说的公式“LEN = 6 + Num * 2”我觉得不必要,因为有的功能只需要2个BYTE。该公式只适合功能16.

再答复“万”版:确实如你所说,LEN的长度与DB块实际BYTE有关,但是不包括CRC。我发一条从MW200开始写6个数字的MODBUS命令,测试软件收到代码如下:01 10 00 C8 00 06 0C 00 01 00 02 00 03 00 04 00 05 00 06 12 1E,在FB8,LEN=18,不包括第七字节0C和CRC两个字节,在DB1只填写了01 10 00 C8 00 06 00 01 00 02 00 03 00 04 00 05 00 06 ,共18个字节就是LEN长度。其中第七字节0C和CRC两个码是自动加的。
确实如"dcount107"朋友"所说,我以前也实验过LEN=12,可是没有成功。过程是我最先实验的就是你哪个PDF文档的例子,应该LEN=12。但是我由于先试通了功能03等6个字节的功能,当时LEN=6,没有及时修改。看了万版帖子意识到这个问题,但对功能16仍受以前对第七BYTE认识的影响,说明书又不清楚,一直认为说明书印刷有误。在初次失败后,自做主张在DB1里增加了第七BYTE内容,所以尽管实验了LEN=12,13,14都失败了。
总之,谢谢大家。
我说的还有个问题是我实验所有的功能是在不同的程序中通过的,也就是说不断修改DB1的配置和FB8的LEN长度实现的。但是我在一程序中建立两个FB8调用(各有自己背景数据块和共享数据块),甚至也在使能EN端加了控制,但是只有一个FB8可以发码。困惑????
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54616条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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