本期内容为9月24日横河资深软件开发支持专家冯洋的直播课讲义节选。
背 景

鉴于上述问题的普遍性,这次直播课就从基础开始为广大用户解释横河测量仪器与上位机之间的通信如何做程序开发。后续我们还会安排相关直播课程,请关注本公众号发布的课程信息。
什么是通信
通信,指人与人或人与自然之间通过某种行为或媒介进行的信息交流与传递,从广义上指需要信息的双方或多方在不违背各自意愿的情况下采用任意方法、任意媒介,将信息从某方准确安全地传送到另方。
横河测量仪器与上位机的通信,则是狭义的通信概念,指仪器彼此连通后传递信息。
横河测量仪器的通信接口
什么是通信接口?
通信接口就是CPU(中央处理器)与其他子系统间进行通信用的接口电路
通常需要按照其接口标准所规定的协议(通信协议)将通信方式与内容标准化
一个通信接口也可能有多种通信协议
横河测量仪中通常会使用的接口
以太网:Ethernet网口
USB :USB接口
GPIB :GPIB接口
RS232:RS232串口

图片来自网络
以太网
基于TCP协议
-
Ethernet --- 传统以太网
-
VXI11 --- 1G
-
HiSLIP --- 10G
-
Socket --- 套接字

基于UDP协议
UDP 横河仅有一款无线电波监测器使用此协议
TCP和UDP
TCP和UDP都是网络通信中常用的通信协议,都有着各自的特点以及应用场景。

USB
-
普通USB协议:Universal Serial Bus,通用串行总线。最常见的通信方式以及接口之一。一般老款的产品搭载的是普通USB协议。
-
USBTMC协议:USB Test & Measurement Class。建立在USB之上的一种通信协议。主要用于与仪器之间的通信。
-
VISAUSB协议:基于IVI USB驱动的通信协议。常用于LabVIEW通信开发。
目前主流产品都支持USBTMC协议,使用此协议时需要横河测量官网下载安装相应的USB驱动。
GPIB
横河测量仪器中搭载了GPIB通信接口的设备,都支持 IEEE Std 488.2 GPIB通信协议。使用此接口时,需要下载安装NI-488.2驱动。

RS232
横河测量仪器中搭载了RS232通信接口的设备,都支持标准 RS232 串口通信协议。使用此接口时,需要下载安装相应的转接口驱动。

横河测量仪器的通信类库
什么是TMCTL?
TMCTL是横河测量仪的通信类库。借助此类库可以非常容易地实现上位机与仪器间的通信。
如果使用USB接口通信,则需要安装相应的驱动(详情请参照仪器以及TMCLT使用说明书)。
TMCTL使用方法

-
大部分横河测量仪都可以通过TMCTL实现与上位机的通信(GM,GP系列以及个别产品除外)。
-
TMCTL涵盖了各种类型接口的API(详情也参照TMCTL使用说明书)。
-
说明书中提供了C++,C#,VB.Net以及VBA的通信连接Demo。但开发时并不局限于这几种编程语言。
TMCTL支持的仪器及通信接口

-
大部分仪器不仅支持一种通信接口。
-
HiSLIP是高速(10G)以太网协议。
-
详情可以参考TMCTL说明书第八章。(专业资料请至官网下载)
-
GM,GP系列无法使用此TMCTL。(可利用ModbusTCP协议进行通信)
TMCTL常用API介绍
-
Initialize:连接仪器设备
-
Send :发送通信命令
-
Receive :接收回复数据
-
Finish :断开设备连接

TMCTL使用注意事项
-
使用USB,GPIB或RS232接口通信时,请安装相应的驱动,其中USB驱动是横河提供。
-
配置TMCTL类库文件时,请根据电脑情况(32位/64位)以及所使用的编程语言选择相应的类库。
-
正常的通信都是从连接仪器开始(API: Initialize)。通信结束时请断开连接(API: Finish)。
-
使用某些接口通信时,可能需要对发送的命令进行编码,同时在获取回复数据时也可能需要解码。
-
编写程序时请参考说明书,同时请注意输入输出的均为英文半角格式。
-
可通过python语言调用TMCTL中API,实现上位机与仪器的通信。
-
GM,GP系列可通过ModbusTCP方式,实现上位机与仪器的通信。
Linux系统中的通信方法
Linux系统中通信接口
-
利用C++或python可以在Linux系统中实现与仪器进行通信。
-
如果使用USB接口,将通过VendorID和ProductID寻找到相应设备并进行连接。
-
如果使用GPIB时,仍需要安装驱动。
-
网口和RS232则可以正常使用。

总 结
Windows系统
通过TMCTL可以实现与测量仪器间的通信(请参考说明书上的demo)。
请注意仪器的通信接口以及所需要安装的驱动(如USB,GPIB)。
通过python可以实现调用TMCTL,并实现与仪器间的通信。
Linux系统
通过python可以在Linux系统中与测量仪进行通信(不需要TMCTL)。
请注意仪器的通信接口以及所需要安装的驱动(GPIB)。
来源:横河测试测量