组态王在窗口修改IO变量属性 点击:603 | 回复:4



qiuyue

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 12回
  • 年度积分:5
  • 历史总积分:53
  • 注册:2006年7月26日
发表于:2022-12-18 13:02:38
楼主

在组态王modbusRTU通讯中,我们设置好io变量后在运行程序后不能改变了,我想在运行时在窗口修改io变量属性(例如com口、数据位、停止位、寄存器地址等),怎样可以实现?



楼主最近还看过

jgyan99

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 11回
  • 年度积分:21
  • 历史总积分:21
  • 注册:2009年11月15日
发表于:2024-02-29 09:55:21
1楼
  1. 使用组态王本身的Modbus-RTU驱动, 恐怕不行,

    目前在莫迪康Modbus-rtu 驱动帮助手册中没有看到 有相关的 寄存器

    串口设备通讯口更改 端口号、数据位、停止位、波特率 ,像串口调试助手都要 先关闭串口。

       目前驱动 只有 给 寄存器 commErr赋值 ,0时 打开,1为关闭 ,但是这个 关闭串口,端口关联的线程也不会被关闭

       使用 设置 设备状态  SetIoDeviceRunState("LoigicDeviceName", RunState);  也不行 。

       

2. 想在组态运行时在窗口修改io变量属性(例如com口、数据位、停止位、寄存器地址等),

   这完全 在 做类似 串口调试助手(modbus调试工具)的功能,

   估计你得写 一个modbus调试工具 这样的控件,然后 在 组态软件中 调用。


3. 但是组态软件 做这种 modbus调试工具的功能,貌似也没有这个 必要,

3.1 若测试通讯协议 ,完全可以用现成 调试工具 

3.2 若有 通讯协议, 那么 通讯参数 都可以固定,寄存器地址 也可以固定。


 但是,做为 尝试 ,序号2 --通过 控件的方法,倒是可以试试。





jgyan99

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 12回
  • 年度积分:22
  • 历史总积分:22
  • 注册:2009年11月15日
发表于:2024-02-29 10:06:27
2楼

其实,通过c# 写 一个modbus调试工具 这样的控件,然后 在 组态软件中 调用,

我也曾经想做过,

但是,现成的调试工具太方便了,

在组态软件中 做这种 带测试调试功能的工具 实用性 也不算太高,

毕竟软件 是让用户使用的,调试类的功能--不会让用户去操作。


有时间的话,

后续 我也会尝试一下,

如果,使用效果还行的话-- 再来分享。




jgyan99

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 13回
  • 年度积分:23
  • 历史总积分:23
  • 注册:2009年11月15日
发表于:2024-02-29 10:14:24
3楼


实际应用中,

最主要的 更改设备的串口号。

如果,电脑的 设备管理器中-- 设备的串口号 发生改变后,

通讯就会出现异常, 

这时,有两种方式 更改串口端口号:

一种是 在 设备管理器中 --直接 修改;

另一种是 在 组态软件中 修改 ,

而 组态软件中 修改 设备的端口 一般采用的是关闭组态运行系统 后,打开工程直接修改 ,再运行组态,

组态软件 暂时好像 没有 特别方便的可以 直接修改 某个设备 串口参数的 ini 配置 文件 .



jgyan99

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 14回
  • 年度积分:24
  • 历史总积分:24
  • 注册:2009年11月15日
发表于:2024-02-29 10:17:49
4楼

所以,如果 设备的串口号 发生改变,

最好 采用的 就是 关闭组态运行系统,

直接在  设备管理器中 --修改串口号。


保证设备串口号 与最初一致 。



热门招聘
相关主题

官方公众号

智造工程师