Blog of Mthings摩尔信使的博客

分享Mthings摩尔信使的最新资讯和使用技巧

MODBUS寄存器写操作缓存功能指导

寄存器写操作缓存功能用于主站设备的写命令缓冲与合并下发。

启用后,用户在短时间内连续修改多个写入值,系统不会立刻逐条发送,而是先写入本地缓存,等缓存时间到达后再统一下发。
图片
目的

  1. 减少短时间内重复写同一数据点导致的无效报文发送
  2. 同地址、同区块、可合并的数据尽量打包,降低总线压力,提高写入效率

图片

功能逻辑

  1. 用户执行写操作后,系统先把目标值更新到本地数据缓存中。
  2. 当“写指令缓存时间(ms)”不为 0 时,写命令不会立即发送,而是进入写缓存队列。
  3. 同一数据点如果在缓存期内被重复修改,缓存中只保留最新值。
  4. 设备定时器周期检查缓存队列,某条缓存命令超过设定时间后,会被取出并发送。
  5. 实际发送前,系统会根据打包方式按地址/列表顺序进行组包;对可合并的寄存器写请求,会尽量合并成更少的报文。
  6. 对“同一寄存器中的部分位数据”写入时,系统依赖已有缓存值来补齐未修改位,避免把其他位误写掉。

图片

适用场景

  1. 逻辑控制中执行滑动调节、频繁设定参数,短时间内会连续改值

  2. 多个保持寄存器需要连续写入,希望减少报文数量

  3. 通讯链路带宽有限,或设备对高频写入较敏感

图片
操作步骤
1、打开设备数据配置页面,选中目标 Modbus 主站设备。点击工具栏中的“高级参数”按钮,进入设备高级参数设置界面。
图片
2、在高级参数列表中找到 写指令缓存时间(ms)。根据实际需求填写缓存时间。
输入 0:表示关闭写缓存,写命令立即发送
输入大于 0 的值:表示启用写缓存,单位为毫秒
该参数最小分辨率是100ms。
3、启用缓存后,系统会先将写入值放入缓存队列,在达到设定缓存时间后统一下发。如果在缓存时间内再次修改同一数据点,系统会自动以最后一次修改值为准。
4、若希望操作后立即写入,请将 写指令缓存时间(ms) 设为 0。若现场连续修改较多,建议适当增大缓存时间,以减少总线写操作频率。

注意事项

  1. 该功能主要针对主站写操作生效。

  2. 缓存期内同一数据点多次修改,最终只发送最后一次值。

  3. 缓存时间越大,总线压力越小,但写入实时性越差。

  4. 对“寄存器中的部分位”写入,必须先有该寄存器当前值缓存,否则系统可能跳过此次写入,以避免误改其他位。

  5. 本地缓存会先更新,所以从界面观察时,可能会先看到目标值已变化,而实际报文发送是在缓存超时后执行。


发表评论:

Powered By Z-BlogPHP 1.7.5

Copyright Blog of Mthings摩尔信使的博客.Some Rights Reserved.