棉包刷唛信息采集与通信技术研究
2017-07-24李峰华李付堂
■ 李峰华 李付堂
〔北京中棉机械成套设备有限公司,北京100089〕
棉包刷唛信息采集与通信技术研究
■ 李峰华 李付堂
〔北京中棉机械成套设备有限公司,北京100089〕
棉包自动化刷唛取代人工刷唛的一个重要优势在于其取得的信息(需要往棉包两端喷印的标识内容)是通过通信技术自动获得的,准确高效,避免了人为因素造成的错误。
棉包的刷唛信息包含一些固定的信息(产地、加工单位、企业logo等)和每包变化的信息(毛重、包号、批号、生产日期、异性纤维含量)。
图1 棉包的刷唛信息示意图
喷码控制器将输入的棉包动态信息(毛重、包号、批号、生产日期、异性纤维含量)与静态的内容(即固化的字库文件)组合成完整的图形,再通过将图形进行数字处理,按正确的时序将处理后的数字化内容以电信号的形式驱动喷头工作实现喷印。
以下就如何实现采集棉包的动态信息和通信及怎么实现排队喷印做一些探究。
一、喷码控制器与上位机的通信
在设计上,喷码控制器是通过串口(UART)接收来自于上位机(数据采集器或信息转换器)的动态信息的,采用RS232 电平标准通信,参数为(9600,n,8,1),也就是以9600bps的波特率,无校验位,8位数据位,1位停止位。
上位机在给喷码控制器发送数据前先通过查询指令询问下位机(喷码控制器)的状态,在收到反馈信息确认状态正常后将数据下发。发送的内容有:生产日期、毛重、异性纤维、包号、批号、条码,以ASCII码发送。
生产日期为6位数字,形如“131104”,表示2013年11月04日;
异性纤维为1位数字,形如“1”,表示“L”(注:0、1、2、3分别表示为无、低、中、高,对应刷唛的内容为“N”、“L”、“M”、“H”);
毛重为4位数字,形如“2548”,表示254.8Kg;
包号为6位数字,形如“100096”。
即:日期(6位)+毛重(4位)+异性纤维(1位)+包号(6位)+批号(11位)+32位条码+/r/n
形如:
31 35 30 34 32 3932 33 34 32 3131 30 30 30 34 30 30 30 30 30 30 30 30 30 30 3030 35 31 33 30 34 30 30 30 30 30 30 30 30 30 30 3030 35 31 33 30
表示的是150429(日期)+234.2(毛重)+异性纤维1(表示低)+100004(包号)+00000000000(11位批号)+05130921504291233082000111100004(32位条码)+/r/n。
需要指出的是,这个串口是由FPGA扩展出来的UART,这个串口起到上位机与ARM处理器之间通信的中间作用,由于它是“中间者”,既是接收者也是发送者,它的接收和发送需要有指向性,在FPGA程序中规定了在指定的寄存器(arm_gpio_out)里指定的某位数值为“1”时,喷码控制器向上位机发送的内容是ARM处理器发送的内容(对UART而言就是它接收的内容)。
图2 数据流向图
二、棉包数据的排队及按顺序依次处理
为适应棉包打包车间的实际生产节奏,不能等一个棉包刷唛结束后才采集下一个棉包的数据,也就是当一个棉包还正在刷唛时,下一个棉包的数据已经采集了,这就要求按先后顺序把已经采集的棉包数据进行排队,再按顺序将在队列中的棉包数据逐一进行刷唛处理。
公职律师与政府法制机构的职能多有交叉,可以考虑通过严格规范政府法制部门工作人员准入制度,对法制部门的专业人员队伍进行重构,逐步实现公职律师对法制工作人员力量的“置换”。明确公职律师和法制部门的职责分工,一方面,可将法制部门的职能范围明确为侧重于法律、法规等规范性文件的制定和审查,协调部门之间的法律活动和处理实施过程中出现的矛盾等方面;另一方面,将公职律师的职能明确为侧重于具体法律业务的处理,如代理政府或部门参与诉讼、非诉讼业务,提供法律援助等。理顺二者关系,明确各自分工,促进法制机构和公职律师的共同发展。
为解决这个问题,需要开辟一个数组,用来按先后顺序寄存采集的棉包数据进行排队。
图3 数据存取图
如图3所示,假设这个数组的大小为MAXPACKET,往这个数组寄存采集到的棉包数据时是按顺序从[0]到[1]到[2]… … 一直到[MAXPACKET-1],都放置完后,又再从[0]开始依次存放,如此循环往复。
我们需要定义一个bool型的数组newpacket[MAXPACKET]和一个与之对应的用于存放数据的数组pr_pkg_queue[MAXPACKET],bool型数组newpacket[MAXPACKET]表征对应数组中的某个元素是否已刷唛处理,如果已进行刷唛处理的,这个bool值表征为false,等待进行刷唛处理的表征为true。如果数组中的元素是已进行过刷唛处理的(bool值为false),那么就可以往对应的数组中放置新采集的数据,放置数据完成后bool值置为true。
在程序开始时先对这个bool型数组newpacket[MAXPACKET]进行初始化,将所有元素的bool值置为false,让其都处于一个可以放置新数据的状态。
… …//数据置于数组对应空间
newpacket[wr_index]=true ;//放置完数据后bool值置为true
wr_index=(wr_index+1)%MAXPACKET ;//依次按顺序操作,当到[MAXPACKET-1]后再从[0]开始
}
同样,为了保证按先后顺序将数组中的元素(棉包数据)取出进行刷唛处理,需要对这个数组按顺序进行“轮询”操作。
比如,先查询newpacket[0]的值,如果是true,则取出对应数组中的棉包数据进行刷唛操作(刷唛完成后,将newpacket[0]置为false),然后按顺序往后依次查询MAXPACKET-1次直到newpacket[MAXPACKET-1],假设从 newpacket[1]到 newpacket[MAXPACKET-1]的值都是false,本次轮询结束。但下一次的轮询就不能还从newpacket[0]开始,而是应该从newpacket[1],也就是下一次“轮询”开始的起点,应该是上次“轮询”中进行取数操作的下一个,这样才能形成闭式的环状接力式的“轮询”,也只有这样才能保证是按顺序取数操作。
代码的实现如下:
以上对喷码控制器是如何与数据采集器通信、如何对棉包动态数据进行采集在接口方式和原理上做了一些介绍。在如何实现数据的排队并按顺序依次处理方面做了一些探究和介绍,采用这种对数组闭式的环状接力式“轮询”方法,实现了按顺序依次取数操作。☆
“十二五”国家科技支撑计划项目(2015BAD19B04)棉花产后增值关键技术装备研发与产业化示范