迪文科技论坛

 找回密码
 立即注册
搜索
查看: 2333|回复: 14

【提问】06指令和03指令冲突问题

[复制链接]

5

主题

13

回帖

196

积分

注册会员

Rank: 2

积分
196
发表于 2021-7-23 17:25:38 | 显示全部楼层 |阅读模式
当前我的程序有5条03指令,10余条06指令,使用最新的modbus OS版库,06指令配置方式是数据变化时生效。
但是遇到一个问题是寄存器数据发生变化了,刚好03指令又触发了,此时寄存器数据又被改写回来,导致06指令没有效果。
现象就是多次点击改写,较大概率又被还原成原来的数据。
回复

使用道具 举报

0

主题

981

回帖

4079

积分

论坛元老

Rank: 8Rank: 8

积分
4079
发表于 2021-7-23 17:38:07 | 显示全部楼层
您好,如果是在同一个页面相同的变量地址同时执行读写指令是会产生冲突的,建议一个页面只用来显示读回来的数据,参数改写用另一个专门的设置页面,采用相同的变量地址即可。
回复

使用道具 举报

8

主题

102

回帖

1448

积分

金牌会员

Rank: 6Rank: 6

积分
1448
QQ
发表于 2021-7-24 08:57:16 | 显示全部楼层
如果是T5L芯片,可以使用DGo框架实现,不会存在冲突情况。
回复

使用道具 举报

5

主题

13

回帖

196

积分

注册会员

Rank: 2

积分
196
 楼主| 发表于 2021-7-24 16:32:02 | 显示全部楼层
wolfgd 发表于 2021-7-24 08:57
如果是T5L芯片,可以使用DGo框架实现,不会存在冲突情况。

请教一下需要怎么做呢?我使用是DGUS II,这个问题挺严重的
可能我前面表达不太清楚,比如我预置相同地址的03读指令和06写指令,03指令是无条件触发,06指令是当该地址内容发生改变是触发。这时候内容发生改变,06指令生效但是排队排在03指令后面,03指令触发之后内容又变回原来的样子,于是06指令没有实际效果
回复

使用道具 举报

0

主题

981

回帖

4079

积分

论坛元老

Rank: 8Rank: 8

积分
4079
发表于 2021-7-26 09:18:02 | 显示全部楼层
pmk_health 发表于 2021-7-24 16:32
请教一下需要怎么做呢?我使用是DGUS II,这个问题挺严重的
可能我前面表达不太清楚,比如我预置相同地址 ...

您好,您可以试试用两个一样的界面,在第一个界面使用03指令的01模式,指定页面读取所有的数据用于显示,在另一个一样的页面使用06指令的04模式,数据发生变化时执行,这样问题应该是可以得到解决的。
回复

使用道具 举报

8

主题

102

回帖

1448

积分

金牌会员

Rank: 6Rank: 6

积分
1448
QQ
发表于 2021-7-26 09:39:42 | 显示全部楼层
其乐融融 发表于 2021-7-26 09:18
您好,您可以试试用两个一样的界面,在第一个界面使用03指令的01模式,指定页面读取所有的数据用于显示, ...

你参看DGo源码,使用循环任务完成数据读取,命令任务实现内容变化时的处理,更具你的需求,调整源码就可以实现。
回复

使用道具 举报

8

主题

102

回帖

1448

积分

金牌会员

Rank: 6Rank: 6

积分
1448
QQ
发表于 2021-7-26 11:46:00 | 显示全部楼层
这个问题要注意的是判断内容变化的处理时刻,在每次通讯完成准备下次通讯前进行判断,当变化时,直接发送06指令,就避免了你现在遇到的问题。DGo框架处理命令任务时刻就是下次通讯前。
回复

使用道具 举报

2

主题

13

回帖

121

积分

注册会员

Rank: 2

积分
121
发表于 2021-12-2 12:52:08 | 显示全部楼层
其乐融融 发表于 2021-7-26 09:18
您好,您可以试试用两个一样的界面,在第一个界面使用03指令的01模式,指定页面读取所有的数据用于显示, ...

我在同一个界面,放了03读取,用的01指定界面触发模式(为了一上电就能读取下位机的数据),然后也放了06写用的04变化了才触发模式,大概读写各7个,一共14条指令,然后就变得有点卡,写入数据好一会才到下位机里,读取也是好一会才能更新上来。有时候按快点,就可能上一个数据还没写到下位机,新的数据又已经写下去了,实际写下去的是之前那个,读上来的还是之前的数据而不是最后一次写入的数据。屏上读取与写入的地址是同一个。这个有什么办法能解决吗?
回复

使用道具 举报

0

主题

981

回帖

4079

积分

论坛元老

Rank: 8Rank: 8

积分
4079
发表于 2021-12-2 13:17:31 | 显示全部楼层
zcm 发表于 2021-12-2 12:52
我在同一个界面,放了03读取,用的01指定界面触发模式(为了一上电就能读取下位机的数据),然后也放了06 ...

可以改下屏上写入数据的变量地址,数据改变后先用06指令写到下位机,然后用03指令将数据读到显示控件的地址去显示。
回复

使用道具 举报

2

主题

13

回帖

121

积分

注册会员

Rank: 2

积分
121
发表于 2021-12-2 13:49:17 | 显示全部楼层
其乐融融 发表于 2021-12-2 13:17
可以改下屏上写入数据的变量地址,数据改变后先用06指令写到下位机,然后用03指令将数据读到显示控件的地 ...

我刚刚试了下,也还是有问题,我先写入的话需要一会时间才写到下位机,然后读取上来又需要一会时间,这两个时间我显示控件的数据一直是之前的数据,没有刷新。指令发送顺序是不是和22号文件配置的顺序有关系,比如:读放在前面的话先执行读指令,然后才是写指令。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2024-11-22 14:03 , Processed in 0.119001 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表