LabVIEW论坛
直播中

YANZHI

未满1年用户 8经验值
擅长:测量仪表
私信 关注
[问答]

请问各位大神,我要用一个串口控制12台串联的气体流量计,想要做好一点该怎么修改程序呢

我刚开始学串口通信,我想请问一下各位大神,我要用一个串口同时控制12台串联的气体流量计,每台流量计的机器号都不一样,因为要实现在一个界面去同时控制所有流量计的读写操作,用的RS485协议,我把每一台机器的读操作都放在顺序平铺结构里面了,然后前面板就是一次只能读一台机器的流量,此时如果我要执行写操作,比如写设定流量值的大小,我就只能在读相邻机器的流量之间加一个时间延时,这样程序就会非常难用,通常要点好几次才能将写操作指令顺利传输进去,我想求助各位大佬,碰到这种很多台相同的仪器需要串联一个串口通信,同时又要实现可以每台单独读写的操作,这种labview算法该怎么去设计呢?
附一个我自己写的程序图
image.png
最上面的平铺结构是12个机器的读操作,一台一台读,性能很差

image.png

image.png
这是程序的源代码
*附件:S600-BR223MB-2(1).zip
该怎么去优化这些功能呢?

已退回2积分

回帖(2)

冯凯

2025-10-2 15:05:56
485是可以级联的,也就是一条总线可以连接你所有的设备,轮询通讯。你现在的程序每次都涉及打开串口和关闭串口,这才是耗时的操作。如果无法级联,那就程序开始的时候,打开串口,中间各种收发,停止程序时,关闭串口,效率会高一些。
1 举报
  • YANZHI: 感谢回答!确实是一个好方法

古月飞

2025-10-10 17:18:52

你用的同一个串口,只不过设备地址不同。
对于读取,看样子,你是要实时监测,放在一个循环里一直读取倒是可行,但是,对单独的设备地址,可以简化一下,你现在是读两次,可以读一次,多读几个寄存器位,然后数据处理一下,得到你要的信息,这样,读取部分的串口操作次数可以减少一倍。
对于数据写入,你用一个循环就行,用个状态机,不同的事件操作与相应的设备地址关联好就行,如,设备地址01,前面板的三个按钮事件写入的命令,全部用01,其他的也是一样的。
这样,最后你就剩两个循环。循环外配置串口信息,一个循环用来监视设备的状态,一个循环用来控制设备的运行。

2 举报
  • YANZHI: 感谢回答!其实问题是在于我在实时监测的时候串口是被一直占用的,这个时候我想要数据写入的话就很困难,只能在两次读取之间加一个延时去提高我数据写入成功的概率
  • 古月飞 回复 YANZHI: 确实,普通485,不能同时读写,假如实时性要求比较高的话,可以试试4线485。
    或者,反正只能读,或者写,可以试试只用一个状态机,超时里,定时读取设备信息,比如5分钟读一次,其他按钮触发的事件里进行指令写入。
    这样,可以保证你的数据写入是必定生效的,就是可能实时性没那么高。

更多回帖

发帖
×
20
完善资料,
赚取积分