2 I/O模块通信软件设计
IEEE 1394协议支持异步传输和等时传输两种机制。本设计采用的是异步传输模式,其特点是叮靠,通过发送ACK信号及响应包来实现。1394芯片为收发数据准备了FIFO空间。针对异步传输的是ARF(异步数据包接收FIFO),ATF(异步数据包传输FIFO)空间,空间大小可以进行配置分配,FIFO空间总和为512个Quadlet(4字节字)。由于FIFO不能直接映射到DSP空间,需要通过操作CFR寄存器(配置寄存器)来读写FIFO空间。
发送数据时,通过Write First,Write Continue,Write Update 3个寄存器将数据写入ATF,发送器从ATF寄存器中取出数据,并把它们打包成规则的串行总线数据包的格式,然后通过物理层仲裁总线,并发送数据包。发送数据包之后若能接收到正确的ACK信号及响应包则表示发送成功,否则需要重传。接收数据时,首先接收器从物理层接口取走数据并检查目标节点是否为当前节点,CRC字段是否正确。若检测到是正确的异步包,则将数据包存入ARF中。ARF中存人数据后,可以通过读取ARFThere寄存器,了解ARF中收到的数据量,之后通过操作ARFRead寄存器读取接收到的异步数据。读取之后发送正确的响应包,完成数据接收。实现数据发送接收部分代码如下:
3 I/O模块在数控系统中的应用
3.1 I/O模块在数控系统中的功能测试
使用基于1394通信的I/O模块完成上位机应用程序对机床的控制。I/O模块输入端连接刀库左移极限、刀库右移极限、刀库回零、刀库定位、刀库提前感应、手轮轴选择(x、y、z、A、C共5个输入)、手轮挡位选择(1,0.1,0..01共3个输入)共13个输入。I/O模块输出端连接机床照明灯、冷却泵、主轴使能、主轴定位、主轴正转、主轴反转、主轴停止、主轴松刀、润滑泵、伺服上电、刀库左移、刀库右移、刀库正转、刀库反转、刀具夹紧、刀具松开和刀具定位共17个输出。其余输入输出端口置高。为了保证数据的准确性,1394通信采用异步传输方式。所有数据运算及处理均由上位机应用程序完成,I/O模块主要负责数据传输。程序框图如图4所示。
上位机每4 ms向I/0发送一次异步数据,I/O模块收到上位机数据后触发中断,进入中断程序。根据收到数据命令控制机床运行,并将输入GPIO状况发送给上位机。数百万个周期测试下来,机床运行正常。查看到输入开关量被正确传输到上位机,上位机控制数据也被正确的输出给数控机床,并且机床能够实时执行指令。验证了1394总线的高速传输,及I/O模块在高档数控系统中的功能实现。