龍秀光 吳震宇


摘? 要: 針對傳統電子式斷紗檢測傳感器智能化程度低的問題,提出優化探頭結構以滿足嵌入式系統控制需求的解決方案。優化后的探頭結構搭載兩組紅外發射器與接收器分別用于紗線檢測和系統操作模式切換,再將接收器的動作信號處理后送入MCU進行邏輯運算,最后賦給硬件功能模塊相應指令進行終端操作。使用C語言開發并利用MCU的定時器、外部中斷等資源,可實現紗線的實時檢測、斷紗報警、斷紗干預停機、系統自啟及操作模式切換功能。
關鍵詞: 斷紗檢測; C語言; MCU; 定時器; 外部中斷
中圖分類號:TP23? ? ? ? ? 文獻標識碼:A? ? ? 文章編號:1006-8228(2023)05-91-03
Design and research of intelligent yarn breaking detection system based on C language
Long Xiuguang1,2, Wu Zhenyu1,2
(1. School of Mechanical Engineering, Zhejiang Sci-Tech University, Hangzhou, Zhejiang 310018, China;
2. Xinchang Zhejiang Sci-Tech University Technology Innovation Research Institute Co. LTD)
Abstract: Aiming at the problem of low intelligence of traditional electronic yarn breaking detection sensors, a solution to optimize the probe structure to meet the control requirements of embedded systems is proposed. The optimized probe structure is equipped with two sets of infrared transmitters and receivers for yarn detection and system operation mode switching, and then the receiver's action signal is processed and sent to the MCU for logic calculation, and finally the corresponding instructions are assigned to the hardware function module for terminal operation. Developed in C language and utilizing resources such as MCU timers and external interrupts, it can realize real-time yarn detection, yarn breaking alarm, yarn breaking intervention shutdown, system self-start and operation mode switching functions.
Key words: yarn breaking detection; C language; MCU; timer; external interrupt
0 引言
上世紀七十年代,人們在數據傳輸、通訊和檢測技術上對計算機提出了新的要求,但由于通用計算機主要面對控制對象,若要凸顯它的控制功能、體積小、應用靈活的優勢,通用計算機沒有辦法滿足這個要求,一種全新的嵌入式系統由此產生[2]。如今隨著科技的進步,嵌入式系統已大量應用于制造工業、過程控制、機器人、通訊、儀器儀表、汽車、船舶、航空航天、軍事裝備、消費類產品等國民經濟的主要行業[1-3]。就傳統的工業控制產品而言,如數控機床、電網檢查設備、工業控制等低端型工業設備常采用的是八位單片機[4]。紡織工業是我國的重點支撐產業,有著非常廣闊的發展前景。紗線斷裂實時檢測在整個紡織作業過程中有著舉足輕重的作用。隨著嵌入式的發展,斷紗檢測技術從機械式發展到如今的電子式,并逐步向檢測精度更高的圖像檢測發展。電子式中的光電式具有非接觸、反應速度快、結構袖珍等特點廣泛應用于紡織設備中的斷紗檢測。嵌入式的廣泛應用,極大推動了智能制造的進步,但在科技不斷發展的今天,對嵌入式系統也提出了更高的要求。
1 項目任務
本研究基于光電原理設計了智能斷紗檢測系統,主要用于實時檢測紡織紗線的通斷狀態并進行干預停機,其結構示意圖如圖1所示;其中T和R組成操作模式選擇器,代替傳統機械開關,通過手勢遮擋光路一段時間來切換系統操作模式(自由模式和干預模式);T1、T2和R12組成紗線檢測探頭,紗線通過遮擋部分光量而引起接收器R12內部光電流變化,在反向電壓的作用下將得到一個變化的電壓信號。正常工況下,當紗線Y斷裂時,系統報警并及時干預紡織設備停機,減少卷筒對殘余紗線的抽取量,降低后續紗線重接難度,節約能源;此外,系統還設置了工作模式記憶存儲功能和自啟功能,節約人為調試時間。
2 項目設計
2.1 硬件設計
本系統所搭載的硬件模塊如圖2所示,紗線信號采集模塊負責采集紗線的動作信號;數據處理模塊將以上紗線信號作濾波、隔直、運算放大、AD轉換處理后送入MCU操作。MCU對所送入數據進行邏輯判斷后賦給狀態指示模塊或干預輸出模塊相應指令,用于紗線檢測狀態提示以及對紡織設備停機干預操作。其中電源模塊為各個模塊供電。
2.2 軟件設計
系統設置了自由和干預兩種操作模式。在自由模式下,系統的紗線信號采集模塊仍能檢測到紗線,并點亮綠燈提示。當在系統設定時間t2內檢測到的紗線次數n1大于系統設定的次數N1時,即n1>N1,系統從自由模式自動切換到干預模式;當不滿足切換條件時,系統不會發出斷紗停機指令和亮紅燈報警。在干預模式下,當在系統設定時間t3內未檢測到的紗線次數n2大于系統設定的次數N2時,即n2>N2;此時系統判定為斷紗狀態,MCU立即給干預輸出模塊相應指令來對紡織設備進行干預停機操作,并點亮紅燈用于斷紗報警。此外,系統也可通過操作模式選擇器判斷手指遮擋光束的時間t1來切換操作模式,具體流程如圖3所示。
3 程序設計及分析
嵌入式系統性能強大,技術復雜,須有良好的系統層次。本研究將嵌入式系統中編程軟件部分規劃為功能需求分析、硬件環境分析、層次架構間調用關系、功能優化及融合[5]。在代碼管理和模塊管理中,全局變量和局部變量的定義依據變量在程序中的調用范圍確定,例如該變量只在子程序中出現,應該定義為局部變量。
3.1 主函數
主函數是程序的入口,有且僅有一個,位于主函數后面的子函數需在主函數前聲明。在主函數的while循環中,系統往復讀取紗線輸入信號的AD轉換結果,等待外部中斷和定時器中斷的發生。
void main()
{? int n1=0; //全局變量,存放自由模式下檢測到紗線的次數
int n2=0; //全局變量,存放干預模式下檢測到紗線的次數
TMOD=0x01; //設置定時器0工作方式為16位定時器
TMOD=0x10; //設置定時器1工作方式為16位定時器
TH0=(65536-45872)/256; //定時器0高位裝初值
TL0=(65536-45872)%256; //定時器0低位裝初值
TH1=(65536-45872)/256;
TL1=(65536-45872)%256;
EA=1; //打開總中斷
ET0=1; //開啟定時器0中斷
ET1=1;
EX0=1; //開啟外部中斷0
TR0=1; //啟動定時器0
TR1=1;
IT0=0; //設置外部中斷0為低電平觸發,觸發源為操作模式選擇器的R
while(1)
{? Init();
}
}
3.2 初始化函數Init()
初始化函數中根據ADC的時序圖對其進行啟動轉換和數據讀取操作,并將轉換結果根據實際項目需要做進一步處理。本研究所用的為12位的逐次比較型ADC,其在一定程度上兼有并行ADC轉換速度快和雙積分ADC精度高的優點。ADC對輸入信號的分辨能力取決于其分辨率,系統中ADC的參考電壓VREF為3.3V,則能區分的最小輸入信號電壓約為3.3V/212≈0.81mV。
void Init()
{? ucharnum=0; //局部變量
ucharAD_data=0;
adcs=0; //ADC片選置低
adwr=0; //啟動ADC采集數據
_nop_(); //延時一個機器周期
adwr=1;
while(INTR); //轉換完成,INTR=0
adcs=0;
adrd=0; //讀取ADC轉換結果
_nop_();
AD_data=P1; //結果賦給變量AD_data
adrd=1;
num=AD_data*(3.3/4096); //轉換結果賦給變量num
if(CZMS==1) //系統為干預模式
{? if(num 真則檢測到紗線 n2++; } if(CZMS==0) //系統為自由模式 {? if(num n1++; } } 3.3 中斷服務函數 中斷是為使單片機具有對外部或內部隨機發生的事件實時處理而設置的,很大程度上提高了單片機處理外部或內部事件的能力[6]。當中斷發生時,系統收到中斷請求后,將會按照中斷優先級前往相應的中斷服務函數中執行中斷處理程序。 3.3.1 定時器0中斷服務函數 void timer0() interrupt 1 {? TH0=(65536-45872)/256; TL0=(65536-45872)%256; num1++; if(num1==10) {? if(n1>5&&CZMS==0) //檢測到紗線次數n1>5,且為自 由模式(CZMS==0) {? CZMS=~CZMS; //操作模式取反 Green LED=1; //點亮綠燈 n1=0; //存放檢測到紗線次數的變量n1清零 } Green LED=0; if(n1<5&&CZMS==0) {? Green LED=1; n1=0; } Green LED=0; } } 3.3.2 定時器1中斷服務函數 void timer1() interrupt 1 {? TH1=(65536-45872)/256; TL1=(65536-45872)%256; num2++; if(num2==10) {? if(n2>3&&CZMS==1) //系統檢測到紗線次數n2>3, 且為干預模式 {? Green LED=1; n2=0; } Green LED=0; if(n2<3&&CZMS==1) {? Stop flag=1; //向紡織設備主控板發送停機指令 Red LED=1; //點亮紅燈報警 n2=0; } } } 3.3.3 外部中斷0服務函數 void ex0_intr() interrupt 0 {? CZMS=~CZMS; //操作模式取反 } 4 結束語 本文基于光電原理等硬件條件,利用C語言對MCU開發出用于紡織設備紗線斷裂實時檢測的智能斷紗檢測系統,并給出了程序流程圖及參考代碼。所使用的芯片,ADC的參考電壓、分辨率、轉換速度等可根據實際項目的需求做出更換。嵌入式系統的廣泛應用極大提高了工業體系的生產效率,希望本研究能為紡織工業的實際應用提供一定的參考價值。 參考文獻(References): [1] 馬志剛.嵌入式系統的現狀及發展趨勢[J].中國設備工程,2020(21):145-147 [2] 王龍飛.嵌入式系統的應用現狀及發展趨勢[J].中國新通信,2018(23):95-96 [3] 王海波,湯東陽,趙德明.嵌入式技術發展綜述[J].數字技術與應用,2014(6):117-118 [4] 任宏宇.淺談嵌入式系統的應用[J].農家參謀,2019(7):238 [5] 劉林芳.嵌入式系統中C語言編程軟件設計[J].電子技術與軟件工程,2021(1):24-25 [6] 郭天祥.新概念51單片機C語言教程[M].北京:電子工業出版社,2009:1-524