1  引言

  传统的LIA中Marx是通过步进电机带动自耦变压器来实现升压的,根据实际应用情况来看,这种方式会造成精度低、噪声大、磨损高、安全系数低、系统集成难度大等问题。新建的脉冲功率系统Marx升压采用Chroma可编程交流电源来解决上述问题。该电源的固定工作方式中通过调整输出斜率可以满足升压要求;电源的保护功能提高了系统的安全性;利用其上的GPIB接口容易实现系统集成。运行结果表明了系统的有效性和可靠性。
 
  2  系统的硬件拓扑结构
  直线感应加速器运行时,会产生较强的电磁干扰,Marx发生器自放电也会产生危害,系统的电磁干扰防护和抑制显得尤为重要,同时考虑到实际系统规模、协议转换器和GPIB接口的技术特性,该系统的硬件结构如下:
1.png
  Chroma可编程交流电源向负载提供高品质的交流输出,输出电压、频率连续可调。在 其固定工作方式下,输出电压可以一定的斜率上升。例如,可设斜率为:0.001V/mS,即每秒上升1V,这就满足了Marx充电的技术要求,代替了原来的自耦变压器调节功能。各交流电源上的GPIB接口通过GPIB-LAN适配器,将GPIB协议转换成TCP/IP协议,通过光纤和服务器连接,组成一个局域网系统。GPIB-LAN适配器支持IEEE488.2(GPIB) 和IEEE802.3(10Base-T以太网〕协议,提供VISA(Virtual Instrument SoftwareArchitecture)软件接口函数库。一个适配器最多可带14个GPIB设备,通过组态软件,可很方便地组成局域网。经过试验证实,虽然VISA是VXIplug&play联盟的标准,但各大公司的产品仍存在不兼容性。在本系统中,使用Tektronix公司的AD007网络适配器就无法和Chroma可编程电源通信,而改为NI公司的适配器则工作正常,因为该电源的VISA驱动是由NI公司提供的,这是值得注意的问题。从实际应用的情况来看,在服务器中直接插入GPIB卡对电源进行控制,曾出现了卡损坏、死机等现象。采用网络适配器的好处是显而易见的,它使电源系统和计算机控制系统实现电气隔离,有效地抑制了电磁干扰,提高了系统的可靠性。   
 
  3  软件设计
  3.1 虚拟仪器与软件开发环境
  虚拟仪器是指具有虚拟仪器面板的计算机系统,操作人员通过友好的图形用户界面来控制仪器的运行,以完成数据采集、分析、显示、存储等。其最大的特点是用户能够根据自己的需要更改或重新定义仪器的功能。虚拟仪器的硬件平台主要有PC总线、GPIB总线和VXI/PXI总线。目前,虚拟仪器的开发软件主要分为两类:一类是图形化的编程语言,代表性的有LabVIEW,HPVEE;一类是文本式的编程语言,如C,VisualC++,LabWindows/CVI等。本系统的开发软件选择LabWindows/CVI 5.5,它比LabVIEW具有更大的灵活性。LabWindows/CVI是一种开放的开发环境,以工程文件为主体框架把C源代码文件、头文件、库文件、目标模块、用户界面文件、动态链接库、仪器驱动程序集成在一起。NI公司专门为Chroma可编程电源提供了仪器驱动程序,可以很方便地加入到工程文件中。
 
  3.2 基于DataSocket实现客户机/服务器模式的软件结构
  计算机控制系统中的通信往往是各个用于控制的应用程序间进行数据交换的数据通信,实现应用程序间的数据通信有多种方式:文件共享、标准的Socket和WinSock编程、DCOM编程、ActiveX等。LabWindows/CVI也提供了丰富的实现应用程序间的数据通信的库函数,其中,DataSocket库使用DataSocket服务器来提供对一个网络上不同机器间的数据交换的支持。应用DataSocket库函数来编程,可以方便地从HTTP服务器、FTP服务器、OPC服务器、DSTP(DataSocketTransfer Protocol)服务器、文件中读取多种类型的数据,同时,也可向文件、DSTP服务器写入数据。虽然可采用文件I/O函数、TCP/IP库、FTP/HTTP来实现数据交换,这样势必要编写大量的程序代码。由于DataSocket库提供了针对底层通信协议的一致的API,大大的简化了实现不同机器间的文件、应用程序间的数据交换编程的工作量。
  DataSocket技术包含两方面的内容: DataSocket API和DataSocket服务器。DataSocket API自动把要通过网络传送的测量数据转化成字节流,并在DataSocket应用端把字节流恢复成原来的数据格式。DataSocket API也是很简单的,其操作和标准的文件I /O相似。DataSocket服务器是一个单独的组件,它自动映射和客户机的连接,负责访问控制和安全管理,为实时的测量数据向多个客户机高速同时发布提供支持。利用DataSocket服务器广播数据需要三个角色:发布者、DataSocket服务器、订阅者。发布者使用DataSocket API向服务器写入数据;订阅者从服务器中读取数据;发布者和订阅者都是服务器的“客户”,这三个角色可运行在同一个机器上。DataSocket服务器是免编程的,通过对DataSocket Server Manager的配置,完成安全管理、权限管理、进程管理等。首先设置允许连接数和允许创建的数据项目(Item)数,系统允许的最大值都是1000个;然后设置分组:包括管理组、默认订阅组、默认发布组、允许创建组;定义默认数据项目组。这样一来,DataSocket服务器可由一个或多个主机管理,一个数据项目可对应多个发布者和订阅者,每一个数据项目都可规定其访问权限,并允许多进程、并发服务。
  在本系统中,发布者和DataSocket服务器运行在同一机器上,简称服务器端,响应订阅者客户端的请求,对下层可编程电源进行控制与数据采集。订阅者客户端响应用户的请求,向服务器发出请求,并进行参数回显。这样的服务器的功能与国外加速器流行的EPICS系统中的IOC的功能很相似,前者是通过DSTP协议中的数据项目访问数据,而后者是通过中间的动态数据库进行通道存取(ChannelAccess),但两者的访问都对用户透明。
 
  3.3 驱动程序的缺陷及解决途径
  NI公司提供的IVI(InterchangeableVirtual Instrument)驱动程序中的数据采集函数VoltCurrPowerMeas能一次性读入可编程电源的所有测试参数,如电压、电流、功率、谐波测量等,但响应速度非常慢,从命令发出到数据返回大概需要5秒钟的时间,这对于Marx升压所要求的实时性是不能接受的,而全部采用ASCII码命令显得很繁琐,并且有些命令间的顺序有严格的规定,容易出错。本系统采用两种方式来解决虚拟仪器驱动的缺陷,一种是采用现有的仪器驱动函数和ASCII码命令相结合的方式来实现实时性控制、保护与数据采集。12台可编程电源的采样周期下降到0.1秒。部分的源程序代码如下:
  VIResult = chr616xx_close(GpibHandle[i]);       /* 关闭设备句柄 */
  device[i] = ibdev (8, address[i],NO_SAD, T10s, 1, 0);  /* 获得新的设备描述符 */
  writebuffer = "FETCh:VOLTage:ACDC?";  /* 读取电压命令 */      
  WrResult = ibwrt (device[i],writebuffer, strlen(writebuffer));  /* 写命令 */   
  RrResult = ibrd (device[i] , readvolt,100);  /* 读电压 */
  另外一种解决办法是利用LabWindows/CVI 5.5中集成工具Create IVI Driver修改该仪器的数据采集IVI驱动,保留电压、电流测量,删去实际应用中不常用的功率、谐波等参数的测量,大大提高了响应速度,并省去了前一方法管理设备句柄和设备描述符的麻烦,不失为一种可行、可靠的方法。
 
  3.4 系统功能与服务器端主程序流程
  根据Marx升压和点火机触发的要求,该系统的主要功能有GPIB-LAN适配器与可编程电源初始化与设备管理,可编程电源的参数配置、控制与数据采集,点火机触发,联锁保护,数据显示与保存。下面介绍服务器端的一部分功能。
  GPIB-LAN适配器的配置:由于GPIB-LAN适配器对用户的透明性,不采用与采用适配器的软件的不同之处在于VISA资源不同。把适配器当作远程主机,加入到VISA系统资源中,定义其远程接口(GPIB0)和VISA名称(例如GPIB9)。LabWindows/CVI 5.5自带有VISA驱动库,使用其VISA名称,就可和与之相连的GPIB设备进行通信。
  可编程电源的参数设置、数据采集与控制:利用初始化得到的与各电源对应的设备句柄,设置诸如电压、电流限制值、阻抗匹配、上升斜率、工作方式、寄存器状态字等参数,开始升压并进行数据采集,升压时间到,停止升压。升压过程中若出现Marx自激,切断电源输出。系统的主程序流程图2所示。
2.png
 
  3.5 客户端界面设计及设计技巧
  Marx加压要求各充电电源输出有较好的同步性,输出的负载也基本相同。为了使操作人员及时、全面地了解加压的状态,设计了实时的趋势图界面和指针仪表界面。如图3所示:
3.png
  LabWindows/CVI中用户图形界面设计好后,头文件可自动生成,针对本应用有多个指针仪表,采用特殊的命名规则,系统生成的指针仪表的ID号也会按一定的顺序排列。例如,在头文件中定义:
        #define PANEL_VOLTMETER12  5    /* 电压表常数*/
        #define PANEL_CURRENTMETER12       6    /* 电流表常数*/
        #define PANEL_VOLTMETER11           7   
        #define PANEL_CURRENTMETER11        8  
      在程序开发中,用ID值代替常用的命名常数,会给程序编制带来相当大的方便。例如:
         SetCtrlVal(panelHandle, 5 ,fvolt);       /*电压表赋值*/  
         SetCtrlVal(panelHandle , 6 , fcurrent );   /*电流表赋值*/
      可替代:
         SetCtrlVal (panelHandle,PANEL_VOLTMETER12,fvolt);      
         SetCtrlVal(panelHandle ,PANEL_CURRENTMETER12, fcurrent );

  4  结论
  利用LabWindows/CVI中集成的VISA库、GPIB488.2库、IVI库,和可方便加入的虚拟仪器驱动库开发的具有虚拟仪器特点的脉冲功率升压控制系统,特别是采用DSTP协议较容易实现了C/S分布式系统,经系统运行证明是可行的,可靠的。
 
参考文献:
  1 ProgrammableAC power source User’s Manual  April 2001
  2  NI-488.2Function Reference Manual for Windows  National Instruments  June1999
  3 LabWindows/CVI RELEASE NOTES  National Instruments  2000
  4 GPIB-LAN Adapter User Manual   National Instruments 2001.