LabVIEW新手求助:基于TCP与QMH控制TTI电源的实现疑问
LabVIEW QMH架构下TTI电源TCP控制解决方案
一、QMH消息循环与TCP通信的结合实现
针对你已有的Case分支,逐个对应TCP操作:
- Init分支:除初始化控件值,新增TCP连接引用的初始化(设为无效引用),存入QMH移位寄存器,同时初始化错误簇为无错误状态。
- Open Connection分支:调用
TCP Open Connection函数,填入TTI电源的IP地址和对应端口(参考手册,常见为5025),将返回的连接引用更新到移位寄存器。添加错误处理:若连接失败,弹窗提示并终止后续通信操作。 - Set Values分支:从前面板获取用户输入的电压、电流值,按照TTI的SCPI命令格式拼接字符串,例如设置通道1电压用
VOLTage1 <输入电压值>\n,电流用CURRent1 <输入电流值>\n。调用TCP Write函数发送命令,注意末尾必须加换行符(\n或\r\n,以电源手册要求为准)。发送完成后,向消息队列插入Measure/Display消息,触发实时采集显示。 - Output分支:发送SCPI开启输出命令,例如
OUTPut1 ON\n,通过TCP Write发送至电源,确认通道1输出开启。 - Stop分支:先发送
OUTPut1 OFF\n关闭电源输出,再调用TCP Close Connection关闭TCP连接,最后停止QMH循环,释放所有资源。
二、疑问解答
1. 每200ms采集并显示电压电流
在Measure/Display分支中实现:
- 发送查询命令:依次发送
MEASure:VOLTage1?\n和MEASure:CURRent1?\n,分别查询通道1的电压和电流。 - 读取响应:调用
TCP Read函数读取电源返回的字符串,设置合理的超时时间(如1000ms)。 - 解析并显示:将读取到的字符串转换为数值后赋值给显示控件(具体解析方法见下一小节)。
- 循环触发:添加
Wait (ms)函数设置200ms延迟,然后向消息队列再次插入Measure/Display消息,实现周期性采集。
注意:移位寄存器需持续传递TCP连接引用和错误状态,若检测到通信错误,立即停止循环触发。
2. TCP响应解析
TTI电源返回的响应为ASCII格式字符串,处理步骤如下:
- 清理字符串:用
Trim Whitespace函数去除字符串中的换行符、空格等冗余字符。 - 转换数值:调用
String to Number函数将清理后的字符串转换为数值型数据,直接赋值给显示控件。 - 多参数处理:若命令返回多个参数(如部分批量查询命令),使用
Split String函数按分隔符(通常为逗号)拆分字符串,再分别转换为数值。 - 错误处理:若
TCP Read超时或返回异常字符串,标记通信错误并提示用户。
三、关键注意事项
- 所有TCP操作必须串联错误簇,通过QMH移位寄存器传递错误状态,一旦出现错误立即终止后续通信操作。
- 严格遵循TTI电源的SCPI命令规范,不同型号的命令可能存在差异,务必对照官方手册调整命令格式。
- 避免使用全局变量传递TCP连接引用和关键数据,全部通过QMH的移位寄存器进行传递,保证程序稳定性。
内容的提问来源于stack exchange,提问作者Aldocest
相关产品推荐
相关产品推荐

