首页 / 基于FPGA的磁悬浮织针阵列系统与PC机的通信方法

基于FPGA的磁悬浮织针阵列系统与PC机的通信方法实质审查 发明

技术领域

[0001] 本发明涉及磁悬浮驱动织针技术领域,尤其涉及一种基于FPGA的磁悬浮织针阵列系统与PC机的通信方法,主要适用于提高数据传输速度与可靠性。

相关背景技术

[0002] 电脑横机是针织机械产品中应用比较广泛的机电一体化设备,其中织针驱动机构作为横机的重要组成部分,其性能极大地影响横机的编织效率及织物的好坏。磁悬浮驱动织针作为新型织针驱动方式,解决了传统凸轮式驱动带来的摩擦、发热和噪声等问题,从而极大地提高了编制效率。由于磁悬浮织针的控制具有复杂性、精确性、实时性等特点,在实际编织过程中,大量的编织数据、庞大的实时运算量和复杂的编织算法都对处理、传输速度提出了更高的要求,高速、稳定、实时、高效的数据传输方案体现着整个横机系统的性能,也是亟待解决的技术难点。
[0003] 传统横机织针系统多采用单层集中式的控制系统框架,由主CPU同时负责人机交互、实时控制和数据传输等功能,随着结构的不断改进和编织工艺要求的提高,系统处理的数据量与任务量都大大增加,此时传统横机系统难以做到数据实时传输与并行处理,使得数据传输速度低、可靠性低。

具体实施方式

[0037] 以下结合附图说明和具体实施方式对本发明作进一步详细的说明。
[0038] 参见图1,一种基于FPGA的磁悬浮织针阵列系统与PC机的通信方法,该方法包括以下步骤:
[0039] S1、PC机将花型数据编译成驱动数据协议,并将驱动数据协议按照串口通信协议发送给FPGA;
[0040] S2、FPGA通过串口接收数据帧的第一个字节数据,并将第一个字节数据与设定的驱动数据帧头进行比较;
[0041] 若第一个字节数据为驱动数据帧头,则继续接收剩下的数据到缓存空间,待接收到驱动数据帧尾,则表示一次数据帧传输结束;
[0042] 若第一个字节数据不为驱动数据帧头,则不进行数据的接收;
[0043] S3、FPGA对接收到的数据值进行解析,通过CRC校验判断数据发送帧的完整性和正确性;
[0044] 若校验正确,则将数据从缓存空间取出放入指定寄存器中,并向PC机发送响应数据帧;
[0045] 若校验不正确,则向PC机发送响应数据帧,并清空缓存空间中的数据;
[0046] S4、PC机接收FPGA发送的响应数据帧;若响应标识符为正确,则进行新数据帧的传输;若响应标识符为错误,则重新发送上一次传输的数据帧;
[0047] S5、磁悬浮织针阵列系统从指定寄存器中取出数据指令完成编织动作。
[0048] 步骤S1中,所述驱动数据协议包括帧头、动作标识符、织针状态、电磁铁状态、编织动作、CRC校验和帧尾;
[0049] 所述帧头占1个字节,用于判断是否进行数据接收;
[0050] 所述动作标识符占2个字节,用于表示织针驱动数据与电机运动数据;
[0051] 所述织针状态占2N个字节,用于表示N根织针的位置信息、针号信息、动作信息;
[0052] 所述电磁铁状态占N个字节,用于表示机头上N个电磁铁通入电流的大小和方向;
[0053] 所述编织动作占2个字节,用于表示第N号织针进行浮线动作或者集圈动作或者成圈动作;
[0054] 所述CRC校验占4个字节,用于校验数据传输过程中是否发生丢失或者错误;
[0055] 所述帧尾占1个字节,用于表示一次完整数据帧的传输完成。
[0056] 所述编织动作中,采用OxN01表示第N号织针进行浮线动作,OxN02表示第N号织针进行集圈动作,OxN03表示第N号织针进行成圈动作。
[0057] 步骤S3中,所述响应数据帧由帧头、响应标识符、CRC校验和帧尾组成;
[0058] 所述帧头占1个字节,用于判断是否进行数据接收;
[0059] 所述响应标识符占1个字节,用于表示数据接收状态;
[0060] 所述CRC校验占4个字节,用于校验数据传输过程中是否发生丢失或者错误;
[0061] 所述帧尾占1个字节,用于表示一次完整数据帧的传输完成。
[0062] 所述响应标识符中,采用0x00表示数据接收失败,0x01表示数据接收成功。
[0063] 步骤S3中,所述缓存空间采用FIFO循环队列进行数据的环形缓存。
[0064] 本发明的原理说明如下:
[0065] FPGA器件属于专用集成电路中的一种半定制电路,是可编程的逻辑列阵,能够有效的解决原有的器件门电路数较少的问题。FPGA的基本结构包括可编程输入输出单元、可配置逻辑块、数字时钟管理模块、嵌入式块RAM、布线资源、内嵌专用硬核、底层内嵌功能单元。
[0066] 本设计以PC机与FPGA双层分布式控制系统结构为框架,结合磁悬浮织针阵列模型对织针控制的驱动数据进行了定义,并采用FIFO循环队列进行数据的环形缓存,提供一种基于FPGA的磁悬浮织针阵列与主机的串口通信方法。
[0067] FIFO循环队列结构由写指针(Wr_pointer)、读指针(Rd_pointer)、数据区(Data)、数据空白区(Empty)几个主要部分组成,通过比较写指针与读指针的地址来判断数据区与空白区的位置。写指针(Wr_pointer):该指针指向第一个存储空间,由于数据是直接送到输出端口,所以写指针从0开始计数,每收到写入数据时更新写指针,写指针进行加1,直到写指针到达缓冲区末端,若数据区数据已被全部读出,就会自动返回到缓冲区头部进行下一次循环,反复进行。读指针(Rd_pointer):该指针进行数据的读出,当读端口使能时,按照顺序依次从0开始读出数据,与写指针一样,每次读出数据时更新其指针地址,待所有数据读出后回到缓冲区头部准备下一次读操作。数据区(Data):写指针与读指针之间已填充数据的区域,存放刚进入队列的缓存数据。数据空白区(Empty):此区域中的数据已经被读指针提出,而写指针还未写入数据的空白区,数据空白区和数据区在数据传输过程中依次交替出现,进行数据的读写。在处理器内部,并是在真正意义环形内存结构,循环队列实际上是采用数组的线性空间来实现的。当数据到达数组尾部后,像环形一样回环到0位置再进行数据的传输,进而实现循环队列。循环队列FIFO可以划分成四种模块:存储模块、指针产生模块、指针比较模块和标志位产生模块;双端口RAM作为FIFO的基础,通过使用两个完全独立的读、写端口来实现收发,整个FIFO通过读、写指针模块来分别产生各自的地址指针,分别进入比较模块来进行空满状态的判断,最后由标志位产生模块给出FIFO当前内部存储状态,FIFO根据其状态实现数据接收的循环。
[0068] 实施例:
[0069] 参见图1,一种基于FPGA的磁悬浮织针阵列系统与PC机的通信方法,该方法包括以下步骤:
[0070] S1、PC机将花型数据编译成驱动数据协议,并将驱动数据协议按照串口通信协议发送给FPGA;
[0071] 所述驱动数据协议包括帧头、动作标识符、织针状态、电磁铁状态、编织动作、 CRC校验和帧尾;
[0072] 表1驱动数据协议
[0073] 内容 占用字节数 说明帧头 1 0x3F
动作标识符 2 0x5100
织针状态 16 0000H~FFFFH
电磁铁状态 8 0000H~FFFFH
编织动作 2 00H~FFH
CRC校验 4 0000H~FFFFH
帧尾 1 0x3E
[0074] 所述帧头占1个字节,用于判断是否进行数据接收;若为0x3F,则符合驱动数据帧头,FPGA进行接收数据,反之不进行接收;
[0075] 所述动作标识符占2个字节,用于表示织针驱动数据与电机运动数据;0x5100 表示织针驱动数据,0x4A01表示电机运动数据;
[0076] 所述织针状态占16个字节,用于表示8根织针的位置信息、针号信息、动作信息;一次记录8根织针的信息,1根织针信息占用2个字节,如0x011F表示前针板第 31号织针动作,0x102F表示后针板第47号织针不动作;
[0077] 所述电磁铁状态占8个字节,用于表示机头上8个电磁铁通入电流的大小和方向;每个电磁铁占1个字节,如0xD2表示第5个电磁铁通入2A正向电流,0x52表示第5 个电磁铁通入2A反向电流;
[0078] 所述编织动作占2个字节,用于表示第N号织针进行浮线动作或者集圈动作或者成圈动作;如0x0F01表示第16号织针进行浮线动作;
[0079] 表2编织动作
[0080]
[0081] 所述编织动作中,采用OxN01表示第N号织针进行浮线动作,OxN02表示第N号织针进行集圈动作,OxN03表示第N号织针进行成圈动作;
[0082] 所述CRC校验占4个字节,用于校验数据传输过程中是否发生丢失或者错误;
[0083] 所述帧尾占1个字节,用于表示一次完整数据帧的传输完成;
[0084] S2、FPGA通过串口接收数据帧的第一个字节数据,并将第一个字节数据与设定的驱动数据帧头0x3F进行比较;
[0085] 若第一个字节数据为驱动数据帧头,则继续接收剩下的数据到缓存空间,待接收到驱动数据帧尾0x3E,则表示一次数据帧传输结束;
[0086] 若第一个字节数据不为驱动数据帧头,则不进行数据的接收;
[0087] S3、FPGA对接收到的数据值进行解析,通过CRC校验判断数据发送帧的完整性和正确性;
[0088] 若校验正确,则将数据从缓存空间取出放入指定寄存器中,并向PC机发送响应数据帧;
[0089] 若校验不正确,则向PC机发送响应数据帧,并清空缓存空间中的数据;
[0090] 所述响应数据帧由帧头、响应标识符、CRC校验和帧尾组成;
[0091] 表3响应数据帧
[0092]内容 占用字节数 说明
帧头 1 0x3E
响应标识符 1 0x00~0x01
CRC校验 4 0000H~FFFFH
帧尾 1 0x3F
[0093]  所述帧头占1个字节,用于判断是否进行数据接收;
[0094] 所述响应标识符占1个字节,用于表示数据接收状态;
[0095] 所述响应标识符中,采用0x00表示数据接收失败,0x01表示数据接收成功;
[0096] 表4响应标识符
[0097]
[0098] 所述CRC校验占4个字节,用于校验数据传输过程中是否发生丢失或者错误;
[0099] 所述帧尾占1个字节,用于表示一次完整数据帧的传输完成;
[0100] 所述缓存空间采用FIFO循环队列进行数据的环形缓存;
[0101] S4、PC机接收FPGA发送的响应数据帧;若响应标识符为正确,则进行新数据帧的传输;若响应标识符为错误,则重新发送上一次传输的数据帧;
[0102] S5、磁悬浮织针阵列系统从指定寄存器中取出数据指令,织针阵列在机头的驱动下进行动作,等待下一次新指令的到来,改变当前动作,往复执行。

当前第1页 第1页 第2页 第3页