• 采用LonWorks现场总线的步进电机群控———采用LonWorks现场总线的步进电机群控

    在研制某大型医疗设备控制系统时,其内部共有26个大小不一的进步电机需要控制。由于大部分的电机和控制器需要嵌人治疗设备内部,而且这些电机都驱动有对应的机械运动装置,所以要求尽量减少上位主控机与各控制器之间的连线。若采用传统的集中式或集散式控制方式将无法满足现场的要求。在对这些受控电机的控制任务进行了仔细分析后发现,系统的实时性要求也不是太高。为此我们采用了LonWorks现场总线技术来实现对这些步进电机的控制。

    一、主控机相关控制任务描述

     

     

    系统主体结构如图1所示。所有受控的步进电机及其控制器都将安装放置于治疗设备内,它们通过一条78K速率的双绞线与主机相连。主机内插一块PCLTA-20 LON网并行适配器(网卡),用于连接各测控节点。为了能直接对16位数据模式的LON网卡进行开发,选择了16/32位数据模式兼容的操作系统WIN/98。主控机的主要任务是根据操作员的命令设置和下发各步进电机的运动数据,收集步进电机运动过程中反馈的数据并以图形化方式加以显示。由于这些步进电机的运动都是独立的,不存在相互影响的关系,故可以分别对它们进行控制。主控机在工作过程中完成以下任务:

    1.开始工作时对各测控节点及电机驱动器进行状态检测和初始化设置

    2.设定步进电机工作于程控方式还是手动方式以及电机方向

    3.若是程控方式,需接受操作员设定的步进电机稳速频率和步进值并下传给各测控节点。

    4.接收并显示测控节点回送的由电机轴角编码器检测到的步进电机实际步进值

    二、Lonworks测控节点结构及功能描述

    Lonworks测控节点是以Neuron-3150芯片为核心构造的测控单元,配之以64K的Flash-ROM.收发器采用78K bps双绞线收发器。网络采用自由拓扑结构。每个Lonworks测控节点可以提供11个可编程多功能I/O端口。其结构如图2所示。

     

     

    在工作过程中Lonworks测控节点的主要功能是按主控机下发的控制命令和运动数据产生步进电机的方向控制信号和频率可变的步进脉冲,同时还要不断读人由电机轴角编码器回送的电机实际运动数据并转发给主控机。Lonworks测控节点的工作过程的主要部分如下:

    1.系统启动时对电机驱动器状态和自身工作状态进行自检并报送主机

    2.接受主机下发的步进电机控制参数。包括当前设定的稳速频率值和当前设定的步进值。并按照步进值产生具有合适上升速率和下降速率的频率脉冲。

    3.在给步进电机发步进脉冲的同时记录电机轴角编码器回馈的电机实际转动值,并在本次步进运动完成后上传给主控机。

    4.检测有关的开关量状态并据此进行相关的操作。具体开关量有:

    (1)电机手动/自动运行设置开关K1

    (2)手动方式下步进电机方向设置开关K2

    (3)手动方式下步进电机点动开关K3

    (4)步进电机所带机械装置运动零点限位开关状态ZERO

    (5)步进电机所带机械装置运动终点限位开关状态TERMINI,

    (6)步进电机及其驱动器故障状态ERROR

    三、程序结构与实现方法

    (一)主机应用程序结构

    主机应用程序用VC6.0开发。主机应用程序的主要任务是将控制台上输人的步进数据发送给指定的控制节点以及接收控制节点在电机运动过程中回馈的实际运动位置数据并加以显示。

    考虑到系统对主机应用程序的实时性要求及不同节点与主机所传输数据的多样性,在开发中采用了一些特殊的处理方法。

    首先是没有采用常规的网络变量来定义和传输数据包。因为网络变量不仅一次最多只能传输31个字节,而且使用中的限制较多,不符合本应甩的具体要求。所以主控机与各测控节点间的通信采用了显式报文方式,但实现过程较网络变量方法复杂。

    另外的一个特点是为了提高主机对节点的响应速度,没有采用DDE方式,而是采用了通过HOST程序直接对PCLTA-20卡驱动程序进行调用的方法。Lonworks网卡的驱动程序没有给出具体的功能调用,而商家提供的API开发系统又价格昂贵。经仔细分析PCLTA-20的网卡驱动程序WLDV. DLL;我们发现WLDV. DLL还是提供了四个最基本的功能调用,分别是:打开网卡Idv open(),关闭网卡ldv close(),从网卡中读取数据ldv_read(),和向网卡写数据ldv_write()。可以利用这四个基本函数进行二次开发。针对WLDV. DLL中的四个基本函数所进行的二次开发最终也是以动态链接库DLL形式存在的,名为Host. dll,它的主要作用是为上位机收集电机信息和下达上位机对电机的控制命令。主机应用程序与它们之间的关系可以简单的用图3表示。  Host. dll通过构造的三个函数与应用程序进行交互,它们分别是

     

     

    void Send(SEND_DATA buf ):

    应用程序调用此函数向下层LON网的节点发送电机的控制信息。  

    BOOL ReadShare (RCV DATA*readLon):

    应用程序调用此函数获取下层LON网发送上来的信息;

    BOOL OperateConfg (up date dv eon*pDvConfig):

    下层LON网上各节点的配置信息保存在一个名为lonmo-tor. ini的文件中,应用程序调用此函数可发更改下层节点的配置信息并将之保存在lonmotor. ini文件中,应用程序对下层的配置操作包括添加,删除节点,更换网卡等。如果Windows系统意外崩溃,应用程序还可调用该函数从下层节点提取信息,从而重建lonmo-tor. ini文件。

     

    _0 output triggeredc ount sync(10_4)fiqout_ctrl_0;

     

    (二)测控节点应用程序的设计

    测控节点应用程序用Neuron C语言编写。其主要功能是接受上位主控机的步进指令,然后根据各输入的控制信息实现对步进电机的控制,即输出按照设定转速和运动距离而产生的步进脉冲频率和脉冲个数。同时在电机运动过程中还需不断对由电机轴角编码器回送的电机实际运动值进行记录,一者为避免丢步,二者向主控机报送数据,主控机据此了解实际的步进数。

    编写测控节点应用程序的主要困难点有以下几个方面:(1)必须按照控制台任意设定的电机转速产生稳速过程步进频率以及起始/停止过程相应的渐升/渐降频率。(2)在向步进电机输出脉冲的同时还需要记录回馈的电机实际步进值。为此我们采用了NEURON I/O对象中的FREQUENCY和TRIGGERED C OUNT对象相结合的方法。用FREQUENCY对象来产生各种步进频率脉冲;而用TRIGGERED COUNT对象记录实际的步进脉冲数。各I/O对象定义如下:

     
     
    网站首页  |  关于我们  |  联系我们  |  广告服务  |  版权隐私  |  友情链接  |  站点导航