LabVIEWwilliam hill官网
直播中

荣琪

8年用户 689经验值
擅长:可编程逻辑 测量仪表 嵌入式技术
私信 关注

多线程:异步调用及创建方式和注意要点

本帖最后由 荣琪 于 2019-8-24 09:23 编辑

1.打开VI引用如何为异步调用建立严格类型VI引用
2.被调用子VI的内部传值和外部传值细节。
3.欢迎在回复中补充。



写在后面叙事:
    最近在写仪器仪表程控上位机,说白了就是向下位机写TCP,发送SCPI指令字符串,并可选读取TCP。
   
最核心的思维是同一时刻只向一台设备发送一条指令。基于此,利用队列状态机,根据设备代号,设备链接端口等将指令发送给对应设备。由于某一时刻的设备代号,设备连接端口,操作指令均属于这一时刻被用户操作的设备。因此关键是保证多个队列的出入队列的同步(3种数据,同时入3个队列,再同时从3个队列出)。否则,可能出现以下情况,设备1的代号出队列,设备2的链接端口出队列,设备3的指令出队列写入TCP,相当于设备3的操作指令发给了设备2,界面上显示操作的设备1,那就尴尬了,这可以通过数据流控制方式实现。    另外,要实现仪器可以被用户操作的同时,用户还可以自主选择操控多台设备长时间自动化运行,如同时操作设备2,3,4,5互相配合运行,同时,操作设备6,7配合运行等等。在目前的架构下,这就涉及到多子VI(while循环)同时运行并入同一队列的问题,关键是如何保证不冲突(同一时刻只有一个子VI入数据进队列)。目前用信号量来协调各个VI实现。
    但是,串行发送指令的问题是,控制设备的最快速度,就是一个while循环中指令出队列,之后写TCP的最快速度。而当几百台几千台设备同时***控,不仅操控速度会更慢了,操控的时间精度也会面临极大风险,这样长时间运行会导致意外事故。

    因此考虑用写并行TCP,核心假设一台PC可以同时给多个IP地址写TCP。架构不会变化太多,关键知识点是异步调用子面板等。思路已经有了,但也不会改目前串行的架构,等写个更完善的demo,总结总结再发。



回帖(8)

jf_96891168

2021-3-5 10:31:36
期待楼主更完善的Demo
举报

kunpeng1984

2021-3-6 16:53:27
期待啊,樓主上是高手
举报

h1654156001.8642

2021-3-9 13:32:21
感谢楼主分享,认真学习。
举报

2021-3-29 19:07:00
感谢楼主分享,认真学习。
举报

更多回帖

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