回复:S7-200Smart子程序编程思路之二-分享最简单的ModbusRTU多参数读写

已锁定

holdkcsxyz

西门子1847工业学习平台

  • 帖子

    1560
  • 精华

    24
  • 被关注

    161

论坛等级:至圣

注册时间:2015-06-03

钻石 钻石 如何晋级?

发布于 2022-08-11 12:59:33

9楼

一般来讲优先级问题相对不是很急迫

优先级高(比如优先级为2甚至是3)的写指令数据区如果有变化:

1先查优先级最高的写指令(写指令的优先级也有可能是有最高和次高),或者干脆简单只区分三级或两级优先级

2优先级相同的且数据都有变化的,按先来后到排序

3大概要用到指针的指针,不过这也是很简单的;

针对两级优先级先判断优先级为2的写数据(一般为主站写急停/写拉绳停止/主站写停止);再回到优先级为1的平级顺序读写

私有数据:判断历史和现实数据区是否有变化:

(1)先将函数指针偏移定位到优先写的#从数据址;

(2)用*取一次当前函数指针放到一个双字D里面得到 #从数据址的内容D;

(3)此时#从数据址的内容D里面的内容是要写数据区的首地址;

(4)再用*取一次双字D得到真正的底层数据结合#从寄存数做FOR循环得到要写的历史数据和现实数据对比是否有变化;

(5)没变化函数指针继续偏移查找下个优先级为2的写操作的私有数据区

(6)有变化则执行写然后再回到循环

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有8941条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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