回复:编写一个MODBUS-RTU通信的功能块,当连续读取多个寄存器时,其中的DATA_PTR 数据指针应怎么定义?

努力前行

  • 帖子

    823
  • 精华

    5
  • 被关注

    51

论坛等级:奇侠

注册时间:2011-10-08

黄金 黄金 如何晋级?

发布于 2016-09-05 10:05:32

3楼

    感谢Zane的提示,参照了 N侠 的例程,做了如下整理,并通过在线实验,希望对大家的应用有所参考。

1、  在原声明的结构体数据类型的静态变量中增加了一个数组,用于存放连续读取的数值,见截图;

2、  将编辑的FB块的“优化的块访问”取消,否则出现”818C”错误,(DATA_PTR 的指针无效或 Blocked_Proc_Timeout 无效)见截图;

2、修改程序,在MODBUS-MASTER库的DATA_PTR管脚填入已声明的数组变量,见截图;

3、程序下载运行,在线监测,正常,见截图;

      至此,解决了轮询多台变频器的多组数据采集及指定变频器的起、停、初始化。通过上述程序的调整,缩短了轮巡的时间,便于某一台变频器的状态发生改变后能更早的时间发现。另外应用中还应尽可能的将从站地址连续。减少通信判断的延时。


   应注意的是:

    DATA_PTR 参数指向要写入或读取的 DB地址,应取消“优化的块访问”,否则无法支持绝对寻址。在前期编程过程中也声明了数组变量,但由于没有取消“优化”,因此无法实现功能,参照了N侠的分享后此问题解决。


程序运行在线监图1.jpg

程序运行在线监图2.jpg

程序运行在线监图3.jpg

程序运行在线监图4.jpg


办法总比困难多

精华帖版主置评:不但自己学会,并且分享给大家,好样的!

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15229条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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