恭喜,你发布的帖子
发布于 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)有变化则执行写然后再回到循环
请填写推广理由:
分享
只看
楼主