摘要:网络技术应用到虚拟仪器系统是虚拟仪器发展的趋势。文中介绍了采用LabVIEW为开发平台,用Lonworks网络作为数据通道来实现远程监测的Lonworks网络虚拟监测系统的设计方法。同时详细介绍了虚拟仪器与Lonworks网络的接口设计和系统通信的实现方法。
关键词:虚拟仪器;Lonworks;LabVIEW
传统仪器,无论是早期的模拟仪器,还是现在的数字化智能仪器,虽然它们的功能日益完善和强大,但是所有的功能块都以硬件的形式存在,这使对它们的开发和应用都缺乏灵活性。虚拟仪器的出现是测试技术与计算机深层次的结合,从而使测试技术上升到一个新的层次。虚拟仪器在工程应用方面具有突出的优势,它可在通用硬件平台确定之后,用软件取代传统仪器中的硬件来完成仪器的功能,仪器的功能可由用户根据需要通过软件来定义,甚至能完成传统仪器因工艺和制造水平的限制而难以完成的测试工作。随着通信技术和网络技术的不断发展,将网络技术应用到虚拟仪器领域,以形成网络化虚拟仪器是虚拟仪器发展的一个趋势。本文介绍了一种用于Lonworks网络(简称LON网)的虚拟仪器监测系统,给出了采用LabVIEW软件开发平台,并用Lonworks网络作为信号传输通道来实现Lonworks网络与虚拟仪器的接口设计以及通信方式。
1 Lonworks网络虚拟仪器系统的结构
虚拟仪器由一台PC机和LabVIEW开发的应用软件构成。LabVIEW 是一种基于图形化编程语言的虚拟仪器软件开发工具,它提供有丰富的功能模块,可以支持GPIB、PXI、VXI、串口等多种总线标准。用户可利用不同的模块组合来编制图形化软件流程图,以实现多种测试功能。该系统操作面板设计灵活,且不受“标准件”和“工艺”的限制。
Lonworks总线是Echelon公司研制的一种局部操作网络,是一种串行数字通信链路。它支持双绞线、电力线、光纤、同轴电缆等通信媒介,并支持多种网络拓扑,可用于建立生产领域中现场设备之间以及更高层次控制过程设备之间的联系。Neuron神经元芯片是Lonworks系统设备的核心器件。在Lon-works网络中,以Neuron芯片为核心的智能节点主要完成各现场设备的信号采集和控制,一个Neuron芯片可连接多个物理I/O设备,节点挂接在lonworks总线上即可形成现场测控网络。通过Neuron芯片和LonTalk通信协议便可实现各节点之间以及节点和上位机间的通信。由于总线具有串行特征,同时LabVIEW又提供了对串口的支持,而且PC机一般都带有串行接口,因此,可以通过串口来实现虚拟仪器与Lonworks网络的交互,并通过操作软面板形成控制信号,以控制给定的节点,然后由节点将现场设备的状态信号送到虚拟仪器进行显示和分析。
2 虚拟仪器与Lonworks接口卡的设计
虽然Neuron芯片的I/O引脚提供了RS232半双工异步串行工作方式,但是在传输速率、数据格式和通信方式方面仍有较大的局限性。网络上节点间的通信是通过LonTalk通信协议用网络变量或显式消息报文的形式实现的。为了实现更灵活的应用,笔者设计了一块LON-RS232接口卡以实现RS232协议与LonTalk协议的相互转换,从而实现高速率、全双工的通信。
该接口卡包括51协议转换模块、LON网接口模块和RS232通信模块。接口卡采用双CPU技术。51协议转换模块由P89C51单片机构成,P89C51也是接口卡的主CPU,用于完成RS232标准信号与LonTalk协议之间的转换。接口卡向上经RS232通信模块与虚拟仪器进行通信;向下与TMPN3150进行并口通信。
LON网接口模块由TMPN3150芯片、收发器FTT-10A、程序存储器、数据存储器等组成,该模块可将主CPU接收的报文解析成LonTalk协议报文,然后通过收发器传到LON网,或将从LON网上收到的LonTalk协议报文转发给主CPU。TMPN3150芯片通过11个I/O口(IO0~IO10)与P89C51进行连接,它采用并行I/O模式的从A工作方式。在这种方式下,IO0~IO7将作为双向数据线与P89C51的P0.0~P0.7连接,IO8作为片选信号线连接到P2.0脚,IO9为读写信号线,连接于P89C51的WR脚,IO10为握手信号线,接P2.1脚,主机(P89C51)和从机(TMPN3150)之间的数据传输通过虚拟的写令牌传递协议来实现,拥有令牌的一方具有对数据线的写控制权。
RS232通信模块由RS232接口芯片完成串口通信网络的链路和协议。它由P89C51的UART进行驱动,采用中断驱动方式。
3 系统通信方式的实现
通常,虚拟仪器测试的物理量较少,而且被测试的设备比较集中,因而信号通道一般采用并行方式。但是在设计网络虚拟仪器系统时,除了要解决接口问题,还要考虑由于网络的多种拓扑结构而要解决虚拟仪器与各个节点的有效通信问题,如寻址信息、控制信息以及数据传输等。
3.1 控制信号的传输
一个Lonworks网络包括多个节点,每个节点可以监测多个信号,即一个节点有多个测量通道。当虚拟仪器要获取某个被测量数据时,必须同时指定该被测量所在的节点和通道。可在虚拟仪器的软面板上根据实际要测量的物理量设置选择开关,当选中某一开关时,这样程序将根据预先的设置自动形成包含节点号、通道号的控制信息,其消息格式包括节点号、通道号、控制命令代号共3个字节。经过接口卡转换后,节点号、通道号、控制命令代号将被写入LonTalk显式消息报文数据的前三个字节,报文消息代码为CONTRL_MSG,该报文以广播方式在LON网上传播。具体实现代码如下:
IO_0 parallel slave s_bus; //定义并口I/O对象
#define DATA_SIZE 255
Typedef struct
{
unsigned int length;
unsigned int data[255];
} pio; //定义并口通信结构
far pio p_in;
msg_tag tag_out0;
when(io_in_ready(s_bus)) //并口有数据来
{
p_in.length=DATA_SIZE
io_in(s_bus,&p_in); //从并口读取数据
//构造显式报文
msg_out.code=CONTRL_MSG //CONTRL_MSG是预定义的消息代码
memcpy(msg_out.data,p_in.data,3);
msg_out.dest_addr.bcast.type=BROADCAST;
msg_out.dest_addr.bcast.domain=0;
msg_out.dest_addr.bcast.subnet=0;
msg_out.tag=tag_out0;
msg_send();
}
一般情况下,节点通过when(msg_arrives(CONTRL_MSG))接收该消息,然后判断消息数据的第一个字节的节点信息,如果不是本节点,则不作处理,如果是本节点,再判断第二个字节的通道号,然后作相应的处理并将选中通道的数据传送出去。
3.2 测量数据的传输
在测控系统中,各个需要测量的参数每次需要采集的数据个数可能各不相同,少的可能只有一个数据,多的可能有上千个数据,因此节点收到虚拟仪器传来的控制信号后,选中通道的监测数据要采用显式消息报文传输。在LON网中,设计的接口卡也是一个节点,当其余节点收到发给本节点的控制信号后,会同时将相应通道的数据都发送到接口卡上。笔者采用的是消息标签寻址。消息标签是显式消息的一个连接点。网络管理工具给输入标签和每个输出标签都会赋一个唯一的网络地址。这样,利用捆绑器可将各个节点发送给接口卡的显式报文的消息标签与接口卡节点的消息输入对象msg_in连接起来,这样就可以实现点对点的数据传送。下面以节点2收到要求发送给1号通道的数据,且该通道每次发送40个字节的数据为例,给出其发送程序:
msg_tag LON_232;
when(msg_arrives(CONTRL_MSG))
{
if(msg_in.data[0]==2)
{
switch(msg_in.data[1])
{ case 1: //通道1
msg_out.tag=LON_232;
msg_out.code=0x0c; //消息代码,接口卡依此处理接收的数据
msg_out.service=ACKD;
memcpy(msg_out.data,ch1_buf,40);
msg_send();
break;
case 2: //其他通道的处理
......
}
}
}
LON_232是定义的输出消息标签,由网络管理器将LON_232与接口卡的输入消息标签msg_in相关联。在接口卡上对该消息进行处理的程序如下:
far pio p_out;
when(msg_arrives(0x0c))
{
p_out.length=msg_in.len;
memcpy(p_out.data,msg_in.data,msg_in.len);
//接收从LON网来的数据
mio_out_request(s_bus); //向并口总线请求获取令牌
}
when(io_out_ready(s_bus))
{
io_out(s_bus,&p_out); //数据传向并口总线
}
4 结束语
采用Lonworks网络化虚拟仪器,可将所有测量通道的数据都在Lonworks总线上进行传输,从而避免了多通道并行布线的弊端,有效实现了远程数据的采集和控制。通过该网络接口卡可使虚拟仪器任意挂接在LON网的任何地方,因而可以做成便携式仪器,并方便灵活地在LON网上进行测试。