引言
现代组合机床装备了大量的电子设备来满足加工精度、加工速度等要求,如果采用常规的点到点方式,直接把12V/24V电源连到负载设备上(如电机、液压泵等),用开关使电路闭合,势必造成导线数量不断增加,而有限的布线空间则在相对减少。此外,这些电控单元还要进行复杂的控制决策运算,包括从周边设备收集信息,发出控制命令,再根据反馈的信息做下一步的决策等。这一过程需要不同的电控单元之间进行通信,彼此影响。这些是不能通过简单的连接所能实现的。
有多种信息传输手段可以实现不同的电控单元之间的通信,如常用的RS-232、RS-485和CAN。RS-232虽然应用广泛,但是传输速率较低,传输距离较短,抗干扰能力较差,而且最重要的是它只适合点对点的连接方式;RS-485也是一个常用的通信规范,它可以实现半双工的总线型的网络,总线上允许连接多收发器,即具有多站能力;而CAN(控制器局域网)具有现场总线的特征,与RS-485相比,CAN的信号形式更适合于热插拔,而且它的网络层协议在满足模块间通信高实时性要求的同时,与定时触发的TIP相比更适合不定时传送信息的要求。CAN继承了集散控制系统(DCS)的优点,可以更方便地构建模块间通信网络。
本文介绍利用CAN总线,实现组合机床电控系统间通信的系统设计与应用,给出模块控制器以及监控PC机的CAN总线接口的硬件设计,和应用层协议软件的设计思路。
系统的描述
● 系统的组成及网络结构
系统的组成如图1所示,系统由监控主机、并联组合机床电控的数据采集模块和CAN总线组成。
本文研究的组合机床采用了上述CAN总线接口的微处理器系统。该系统包括数据采集和加工过程控制两部分,前者由挂接在CAN总线上的数据采集单元完成,主要是从总线上收集有关组合机床的运行数据(由组合机床上的控制单元提供),进行一些基本的数据处理和诊断,如有关传感器、执行器是否失效,然后将有关数据和加工状况存储在扩展的EPROM中,在适当时刻将存储的数据通过RS232总线上传到监控主机(PC)进行分析。实际上可以直接把PC机挂接在CAN总线上。加工过程控制运行在PC机上,主要是处理由数据采集系统发送的数据,如动力头转速、进给量、切削深度等。这种分层处理的好处在于可以更好地利用PC数据处理能力以及已有的一些控制软件资源,并且可以脱机处理。
监控主机通过CAN总线从各模块获取现场控制数据,监控整个系统的工作状态,控制各模块的投入和退出,完成人机对话,响应近端和远端的操作。
各个组合机床电控单元间以及模块与监控主机之间通过CAN连接通信,通信网络拓扑结构采用总线式结构。
这种结构的特点是多个节点共用一条传输线,结构简单、成本低;采用无源抽头连接,可靠性高。信息的传输采用CAN通信协议,线路利用率高。传输介质为双绞线,如需进一步提高抗干扰能力,还可在控制器和传输介质之间加接光电隔离。
● 硬件介绍
硬件包括TMS320LF2407A与CAN总线的接口、监控机与CAN的接口。其中LF2407A与CAN总线的接口如图2所示。
由于LF2407A内嵌CAN控制器,因此它的CAN总线接口只需一个完成电平转换和线路驱动的驱动器PCA82C250T。PCA82C250T是CAN协议控制器和物理总线的接口,对总线提供差动发送能力,对CAN控制器提供差动接收能力,完全符合“ISO11898”标准。在CAN总线的网络终端,总线上需加一个120Ω的匹配电阻。
监控机使用了工业控制用PC机,与CAN的接口用一块CAN总线通信接口适配卡实现,适配卡插在PC机的扩展槽内。
● LF2407A的CAN控制器
LF2407A的CAN控制器是一个16位的外设模块,可以通过设置或读取内部寄存器来访问CAN控制器。LF2407A的CAN控制器由可编程位定时器和6个邮箱组成。邮箱方式是CAN控制器的特点,邮箱是一个48×16位的RAM空间,此空间分为6个邮箱,每个邮箱由邮箱标识寄存器、邮箱控制寄存器及4×16位的存储空间组成,其中邮箱0和邮箱1是接收邮箱,邮箱4和邮箱5是发送邮箱,而邮箱2和邮箱3则可随意配置成发送或接收邮箱。CPU以统一的内存编址来访问这些邮箱寄存器。
LF2407A的CAN控制器支持CAN2.0协议,有自动重发功能,支持数据帧和远程帧,数据收发采用邮箱方式,可工作在标准模式和扩展模式,有可编程位定时器,可编程实现总线唤醒功能,可对中断配置编程。TMS320LF2407A芯片的这些特点方便了系统功能的实现。
CAN网络发送周期
CAN网络发送周期如图3所示。该图为在其他站处于等待状态时,一次成功发送周期的时序图,成功发送周期=传输时延+传输时间。
由于CAN网络的信息传递是基于ID优先权的竞争机制仲裁。当t时刻发生在A节点仲裁场结束之前,即有不少于两个站同时发送时,需根据优先权的比较结果,决定发送站的成功发送周期时序。这里的“同时”可定义为,“当节点A发送信息时,另一个节点B在t时刻发送信息,若t时刻发生在A节点仲裁场结束之前,则称A节点和B节点为同时发送信息”。在仲裁场结束之后,信息的成功发送周期由优先权的比较结果决定。此时,优先权高的占据总线,信息得以成功发送,优先权低的发送失败,等待下一次发送。此时若A的优先权高于B的优先权,成功发送周期不变。否则,则成功发送节点为B节点,成功发送周期为B节点的发送时间加上两节点同时发送进行优先权比较时A节点的仲裁场时间,即
成功发送周期=传输时间+2×最大传输时延+仲裁场时间
若t时刻发送在A节点仲裁场结束之后,则B节点等待下一次发送,成功发送周期不变。
CAN控制器的编程
● 包过滤功能的编程
CAN结点对数据包的选择接收是通过接收包过滤功能来实现的。在数据链路层LLC(逻辑链路控制)子层实现数据包过滤。只有符合一定条件的数据包才会被该节点接收,其他数据包在底层即被丢弃。因此只要在发送节点为数据包设置正确的标示符,即可将其发送到指定的一个或多个节点。利用CAN总线端口验收码AC,验收屏蔽码AM,报文标识符ID的关系,即可实现上述目的。设目的CAN端口验收码、验收屏蔽码分别为AC、AM,则源CAN端口报文标识符ID设置应满足如下条件,(ID.10~ID.3)或(AC.7~AC.0))或(AM.7~AM.0)=11111111B。应用中可以灵活设置CAN节点的验收码和验收屏蔽码,达到点对点,一点对多点,以及多主机的工作方式。
● 波特率设置的编程
CAN总线的传输速率与两个节点之间最大距离有关,如表1所示。表中还同时给出了LF2407A的可编程位定时器的数值。这些值还与LF2407A的主时钟频率有关,表中的数值是在主时钟频率为16MHz下得到的,一般地可以按下面的公式计算位速率。
波特率=ICLK/[(BRP+1)+BitTime]
其中ICLK为DSP的系统频率,BRP由总线时序寄存器0(BTR0)决定。
BitTime=(TSEG1+1)+(TSEG2)+1
其中TSEG1和TSEG2由总线时序寄存器1(BTR1)决定。
● 帧结构设计
按照CAN2.0规范,CAN总线上传送的报文由3~11个字节组成,其中包含3个字节的控制字节和0~8个数据字节,见表2。
其中,方向位决定一半的优先级,而剩余的优先级由节点地址决定,低地址优先级为高。当方向位为“1”时,地址域是源节点地址(从节点到主节点),优先级由地址决定;当方向位为“0”时,地址域是目标节点地址(主节点到从节点),优先级由地址决定。类型的三个比特可以有多个取值,10×为单帧(广播),111为非结束多帧(广播),110为结束多帧(广播),00×为单帧(点对点),011为非结束多帧(点对点),010为结束多帧(点对点)。每帧字节数用五个比特表示。忙信号位表示主节点正在与某一从节点通信,如果有另外从节点提出与主节点通信的要求时,主节点就向此从节点发出忙反馈信号,通知此节点稍后再与主节点通信,否则,从节点会连续向主节点提出通信请求,如果一直未收到任何响应,此节点会发出报警信息,从而会造成通信系统的误操作。控制命令表示该帧所传送消息的具体意义,可对各个消息(如测量、调整、控制等)编码,实现模块间的信息交换以及对外界的安全保密。
系统的软件
● 主控节点的确认
为了使连接在一起的组合机床电控单元模块能够协调工作,在所有入网的模块中动态地确立一个主模块。所有非主模块的数据基准取自主模块。为了适应模块热插拔的要求,并避免主模块故障导致系统的工作失常,主模块是动态确立的。每隔一定的时间间隔,各个模块都要广播一个“争主”请求,如果有已经确立的主模块,则主模块广播一个“反对”应答,禁止其他模块成为主模块;如果尚未确立主模块、或者已经确立的主模块因故障而不能发出“反对”应答,则发出“争主”请求的模块就可以成为新的主模块。利用多主竞争的原则,在某一主机失效的情况下,由其他从机竞争成为主模块,代替原有主机的地位,这样的机制可以保证整个系统不会因为一台通信主节点的瘫痪造成整个组合机床电控单元间通信系统的瘫痪。
● 监控主机的软件
用一台工控机作为监控机,通过适配卡与CAN连接。在监控机上用VB6.0编写监控的操作软件,并且把监控机作为局域网上的一台操作服务器,用户通过它可以对各个模块进行操作。