数控系统模块间RS-422串行通信协议的设计
2015-08-22范鹏飞崔锡奎王祥宝刘敬猛
范鹏飞 崔锡奎 王祥宝 刘敬猛
(1.阜阳轴承有限公司,安徽 阜阳 236000;2.北京航空航天大学自动化科学与电气工程学院,中国 北京100191)
数控系统是制造业的基石,是制造设备的设备。国家在《国家中长期科学和技术发展规划纲要)》[1]中明确提出,基本实现高档数控机床、工作母机与关键零部件的自主设计制造,并确定了高档数控的发展为优先主题。RS-422是一个通用的物理通信接口规范,规定了物理接口的电气特性,而不涉及协议。在此基础上,用户可以建立自己的高层通信协议[2]。该通信协议既满足数控系统的实时性要求又大大降低开发成本[3]。本文结合阜阳轴承有限公司-北京航空航天大学联合开发的两轴数控车床系统,设计了一种基于RS-422总线标准的串行通信协议并讨论了基于此的硬件以及软件的设计,完成了相关的现场试验。
1 数控系统串行通信模块介绍
图1 数控系统框图
随着现代数控技术的发展,数控系统的功能越来越多,系统的构成也越来越复杂,除了运算速度不断提高外,硬件的升级、扩展和维护都要在系统设计时考虑。图1是数控系统的结构框图,主要包括4部分:主板、系统键盘板、用户键盘板和接口板。接口板连接IO和伺服电机。系统键盘用于G代码编程,该矩阵式键盘通过并行总线与主板FPGA连接。主板包括ARM和FPGA两块处理器。FPGA是协处理器,负责时序、“方向+脉冲”信号、接口扩展。ARM是主处理器搭载UCOS操作系统实现G代码编辑、编译、界面、插补运算。该主板搭载三个异步串口,UART0、UART1和UART2。UART0接超级终端,打印系统信息。UART1和UART2扩展成RS422,分别接操作键盘板和接口板通过串口进行通信。串行通信的波特率是115200bps,8为数据位,1位停止位,没有校验位。机床的主令开关、指示灯、继电器、电磁阀、用户键盘板的手动调整开关等通过RS-422传至ARM。这种通讯架构主要有以下三个优点:第一,用户键盘和接口板从主板上分离出来,用RS422连接,便于安装,并且兼容了不同类型的数控系统。第二,用双RS422而不用RS485,最大限度提高带宽,简化应用层通信软件的设计。第三,设计了一套完整的帧传送协议,保证了数据快速有效传递。
2 串行通信硬件设计
图2是RS-422接口电路图[4],该系统的接口板和操作键盘板的信息采集是通过RS-422完成的。选择 RS-422的理由如下:(1)RS-422的通信速率和误码率完全能够达到信号传输的要求。(2)RS-422是工业标准的总线,可靠性高,应用广泛,价格低廉。(3)ARM端有UART,FPGA端可通过 IO口扩展串口。(4)MAX3491可将LVTTL/CMOS的信号转换为RS-422的差分信号。本系统用到3片MAX3491,分别接在主板的ARM上,接口板的FPGA上,和用户键盘板的FPGA上。图2中的MAX3491右侧是3.3V的LVTTL/CMOS信号,接ARMS3C2410的UART管脚或者FPGA的IO口。FPGA选用 Cyclone的EP1C6Q240,对于串口115200bps的波特率,可用FPGA的通用IO口。由于RS-422采用输入、输出通道独立,三态门缓冲器的控制引脚/RE接高,DE接低。MAX3491左边的信号是差分信号。RS422_T+、RS422_T-是差分信号输出的正和负,RS422_R+、RS422_R-是差分信号输入的正和负。差分信号在进入电平转化芯片MAX3491之前进行滤波和限幅处理,消除信号在传输过程中接收到的噪声。L1是滤波器,消除共模干扰。D1~D4、R11、R12将信号大致限幅在电源和地之间,避免尖峰电压损坏接口芯片。C9是压片电容,25V/104,接在接口芯片的电源和地之间。
3 串行通信协议的设计
图2 RS-422接口电路图
本协议解决上位机(ARM)和下位机(FPGA)间的数据传输,约定了数据格式、通信的建立、故障的处理。
3.1 帧结构
串行通信分为异步串行和同步串行,RS-422是基于异步串行通信设计的。异步通信的双方没有时钟,通信始于发送方的逻辑‘1’到逻辑‘0’的下跳沿,一般是1位起始位,5~8位数据位,1位奇偶校验位,1位停止位。停止位是逻辑’1’,停止后总线保持逻辑’1’状态,直到下一次的起始位出现。这样,一次通信的信息量很小,8位数据最多只能表示256种状态,无法在复杂的通信系统中直接使用。于是,将要传送的数据按照一定的格式组成帧,由协议控制帧中的数据,一个字节接一个字节地发送和接收。
图3
图3 (a)是本文设计的通讯协议帧结构。对主站和从站,命令和数据的定义有所不同。帧长12个字节,编号0到11,低编号字节先发、先收。帧头0X55,帧尾0XAA,编号是10的字节是累加和SUM,SUM是CMD、Data7~Data0共9个字节的累加。帧长为12个字节的设计使得主板到接口板和操作键盘板所有的通信信息均可在一帧内完成,节省了通信时间,ARMS3C2410的FIFO模式中断支持一次12字节的发送和接收。该协议不需要ID,ARM有两个UART,点对点连接接口板和用户键盘板。图3(b)是一个字节Data0的解析,D7~D0每位控制一个输出端口,每位输出端口(OUT-7~OUT0)对应机床的一个继电器或者电磁阀或者用户键盘板的一个指示灯。数控机床的输入输出以及用户键盘板上有很多这样的数字IO,它们经过编码后被填入图3(a)的 Data7~Data0。
3.2 通信的建立
图4是通讯建立的状态机。帧的第1字节是CMD,共8位,支持256个命令。本数控系统用到的的常见命令:复位命令0X01,启动命令0X02,停止命令0X03,正常数据0X04。前三个命令要有应答。通信的建立从硬件复位开始,由主站(ARM)发起,在周期任务里发送复位命令0X01给从站,从站的状态信息依赖这个复位命令进行初始化。从站完成复位以后,发一个应答给主站,表示复位已完成。然后,主站发送启动命令0X02,该命令发给从站,启动从站里的一些定时模块,为接下来的数据采集做准备。从站启动完成后,发送应答给主站,表示启动已完成。接下来主站发一个数据帧,表示接数准备完成,同时打开看门狗计时器(溢出时间是3秒)。每当收到从站发来的数据时看门狗计时器清零,当看门狗计时器溢出时状态机复位,表示通讯系统故障。此时,系统进入自修复自动通信状态。
图4 通信建立状态机
通信系统建立以后,主站通过看门狗监视从站的通信是否正常工作。主站收到来自从站的数据,根据自动循环或手动调整的加工要求决定是否返回应答数据。考虑到频繁的帧应答不仅需要大量的时间,而且还会造成死锁。本协议规定,当通信建立以后,从站每20ms定时向主站发送一帧数据,不管主站是否应答,当收到停止命令时,从站停止数据帧发送。
4 串行通信协议的软件设计
函数RenewOSInitUart为ARM9S3C2410的初始化代码,解决串口初始化、串口发送中断和接收中断初始化问题。其中ARM的串口1接接口板,串口2接用户键盘板。具体的代码如下所示:
图5 ARM串口接收中断流程图
图5 是上位机ARMS3C2410串口接收中断流程图,使能了超时中断。在正常情况下,当下位机开始向上位机发送数据的时候,ARM S3C2410连续收到12个字节的数据后,进入接收中断。若因为通信的原因没有接收到触发深度设定的12个字节且三个字长的时间没有收到任何数据,进入超时中断。超时中断和接收中断共用同一个中断源。在接收中断的最开始,读取接收数据长度,看是否等于触发深度12,若不是,说明是超时中断,清空串口缓冲区数据,丢弃数据,清零看门狗计时器,中断返回。当接收数据等于触发深度,说明接收的是一帧完整的帧。把串口缓冲区数据逐个读出,送到接收数组,同时,计算累加和。接下来判断帧头、帧尾和累加和是否正确,若正确,将接收到的数据填充到IO的据结构里去,称IO处理。若不正确,丢弃数据,然后返回。
5 系统实测结果
图6(a)数控系统控制箱,包括系统键盘、用户键盘、手轮、主轴波段开关和用于界面显示的液晶屏。图6(b)是数控系统的主板。图6(c)是自动加工时的操作和显示界面。图6(d)是加工的工件。
图6 实验系统
6 结论
本文设计了一种RS-422的通信协议,用于解决数控系统模块间信号通信。利用ARMS3C2410异步串行通信接口的资源,结合模块间数据通信的需求,将中断和FIFO帧(12字节)用于数据通信。实现了下位机每隔20ms向上位机传送一次数据的功能。看门狗、超时中断、出错重发机制、帧头帧尾和累加和校验保证了数据通信的可靠性和稳定性。该协议应用在两轴车床上,完成了轴承外环沟道的小批量试产。其加工样品完全满足工艺和误差的要求,达到了预期的设计要求,验证了本协议的有效性和实用性。
[1]中华人民共和国国务院.国家中长期科学和技术发展规划纲要(2006-2020年)[Z].北京:中华人民共和国国务院,2006.
[2]阳宪惠,工业数据通信与控制网络[M].北京:清华大学出版社,2003.
[3]谢剑,金永乔,等.高档数控系统中的RS485串行总线接口研究与开发[J].组合机床与自动化加工技术,2010(5):22—25.
[4]李腾飞.嵌入式车床数控系统设计与研究[D].安徽工程大学,2014.