1、CPLD驱动程序
CPLD驱动程序主要实现的功能有:读取嵌入式处理器内核数据,完成CPLD控制数据发送;读取来自CPLD硬件数据,并传送给嵌入式核心处理器内核空间。CPLD程序设计为字符控制程序,程序采用file_operations结构体的数据结构,对应于用户程序调用CPLD驱动程序的read、write、ioctl、open、release函数,在驱动程序内部分别定义了sensor_read()函数、cpld_write()函数、gpio_ioctl()函数、设备打开函数cpld_open()、设备释放函数cpld_release()[9-11]。cpld_write()函数完成数据的传送功能。首先将数据线设置为输出模式,然后将内核空间和用户空间进行数据传递,最后,将来自内核空间数据发送到数据线上输出,上述操作分别通过函数set_gpio_ctrl()、copy_from_user()、和up_out_date()完成。sensor_read()函数完成数据读取功能。首先判断GPDDAT寄存器的值,当寄存器值发生变化,将对应传感器信号位赋值为“1”,然后采用sensor_put_user()函数将传感器控制字从内核空间传递到用户空间。gpio_ioctl()函数主要完成选址功能。首先读取寄存器数据,判断选址控制字,根据不同控制字,采用函数write_gpio_bit()完成地址线信号输出。
2、控制开关驱动程序
控制开关驱动程序也是字符设备,控制程序完成控制开关数据从内核空间传递给用户空间功能。首先判断控制开关对应端口是否有信号,并将端口信号数据传递给用户空间,然后根据数据判断触发信号位,当有信号触发,则启动开关中断程序int__initswitchbd_init(void)。开关中断程序通过函数ioremap()将端口的控制寄存器物理地址映射成虚拟地址,然后采用逻辑与运算控制寄存器值,实现设备控制寄存器上拉。
3、ARM9控制程序设计
ARM9控制程序完成横机工艺控制和上位机通讯协议设计。ARM9主控程序首先作为客户端,与服务端即管理主机建立连接,等待主机下达控制命令,控制命令分为花型文件下传、设备自检、生产状态查询、编织、开机、暂停、关机、退出等命令。编织命令根据花型数据,解析为控制数据,根据奇数行和偶数行控制机头左移或者右移、结合传感器位置判断行程,如选针行程、纱嘴行程和机头行程等,进而对机上可控机构进行协调控制。机上机构的控制函数包括选针器控制函数,步进电动机控制函数,移圈、成圈、脱圈、集圈控制函数,纱嘴控制函数,开关控制函数。
3.1函数设计
选针器控制函数流程首先通过片选选择CPLD模块,然后写地址,选中选针器控制模块的物理地址,最后写数据,将控制字写入CPLD的电磁铁控制模块;传感器控制函数流程首先通过片选信号选择CPLD模块,然后写地址,选中CPLD的传感器控制模块物理地址,最后读物理寄存器内的数据,机头控制的步进电动机控制程序流程比较复杂,步进电动机控制程序流程见图2。程序调用的几个重要的内部函数有open(gpiodrv,rdw)、ioctl(fd1,A,0)、write(fd1,&da,1)、read(fd1,ret,1),功能分别为打开设备驱动程序、地址选择、将数据写入选址控制模块,实现用户程序与驱动程序之间数据交换与地址选择。
3.2通信协议设计
根据横机控制中通信数据,本文采用TCP和UDP联合的数据传输方式,对传输速度要求较高的数据采用UDP协议,而对于传输精确度要求较高的数据采用TCP协议[12]。控制命令、设备状态信息和故障报警信息等数据传输格式,由于数据量小、传输速度要求较高,将其数据长度采用46个字节。数据帧包括操作码、数据长度、数据信息,操作码用于判断数据类型,数据信息字段是本次传输的数据,对于长度不足部分采用字符串填充。对于花型文件传输格式,由于花型文件在1~5M之间,所以选用TCP/IP协议中TFTP协议,设计数据长度512个字节,传输格式包括操作码、数据块编号、数据信息,数据块编号用于花型文件传输片段编号。
4、系统测试
系统测试程序设计了client端和server端,即横机主控程序和上位机控制程序[8],采用LINUX系统,QT和KDE为开发环境,C语言开发。client端程序包括通讯连接的建立、控制命令的接收和状态数据的发送、横机编织工艺控制等;server端程序包括界面设计、通讯连接的建立、client端控制命令发送和状态数据接收等。server端控制命令包括开机、关机、慢速试织、状态查询,状态数据有花型、产量、横机设备号、设备IP、转速、故障显示等状态信息。client端和server端控制流程对照图见图3。测试流程:①ARM9主板供电,启动控制开关。通过这一步测试ARM9主控程序对机上设备控制是否运行正常。②server端发送控制命令,测试网络连接是否正常,控制命令传送情况。③server端发送状态查询命令,通过界面查看设备运行状态,这一步主要测试横机控制系统对传感信号读取是否正常,以及网络对状态数据的发送与接收情况。server端状态查询运行界面见图4。
5、结论
本文提出了基于ARM9和双CPLD横机控制系统软件设计,软件通过测试程序进行系统调试运行正常。系统设计实现了以下功能:①根据编织工艺设计了横机控制程序,满足了横机复杂工艺流程和大量的机上设备的控制。②设计了合理的通讯协议,满足横机控制系统数据传输对实时性和可靠性需求。③针对横机控制程序,设计了软件测试的client端和server端程序设计,对系统的网络通信和数据传输进行了测试。该设计经测试表明,系统具有实时性和可靠性,满足了高性能横机控制的需要,而且支持网络化管理,具有较好的应用前景。
作者:汝吉东 王颖 孙振龙 单位:齐齐哈尔大学轻工与纺织学院 齐齐哈尔大学网络信息中心 齐齐哈尔大学招生办