■ 李峰華 李付堂
〔北京中棉機械成套設備有限公司,北京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)棉花產后增值關鍵技術裝備研發與產業化示范