廉佐政,王海珍
(1.齊齊哈爾大學 計算中心,黑龍江 齊齊哈爾 161006; 2.齊齊哈爾大學 計算機與控制工程學院,黑龍江 齊齊哈爾 161006)
工業(yè)生產過程往往是一些斷續(xù)、按某種程序有規(guī)律地完成預定的動作的過程,對這類生產過程的控制稱為順序控制[1]。順序控制是工業(yè)生產過程中一種常用的控制方式,它是按照生產工藝預先規(guī)定的順序,在各個輸入信號的作用下,根據(jù)內部狀態(tài)和時間順序,控制生產過程中各個執(zhí)行機構自動有序地進行動作[2]。
文獻[3-9]提出應用PLC編程實現(xiàn)順序控制;文獻[10]提出應用PLC梯形圖指令編程控制化纖打包機;文獻[1]提出利用8031單片機控制注塑機的7道工序;文獻[11]提出用C語言描述有限狀態(tài)機算法設計單片機順序控制程序;文獻[12]提出間歇式化工形式化建模與順序控制器設計,實現(xiàn)了復雜化工過程的閉環(huán)控制系統(tǒng)的形式化建模、分析和優(yōu)化。
本文基于Dais-52PH+單片機實驗系統(tǒng),重點研究采用8032單片機設計通用工業(yè)順序控制實驗系統(tǒng),目標是為了增強學生對單片機課程學習的重要知識的理解,熟悉工業(yè)順序控制的方法。設計的系統(tǒng)改進了原有的工業(yè)順序控制實驗,可以設置工序的道數(shù)及時間,可以為每道工序精確定時,可完成不同的工業(yè)順序控制的實驗。系統(tǒng)的主要特點如下:硬件成本低,時間控制采用單片機自帶的定時器實現(xiàn),定時精確;能自由設置工序的道數(shù)、每道工序持續(xù)的時間,靈活性好;采用中斷方式模擬生產故障,實時性好;系統(tǒng)程序采用51匯編編程,實現(xiàn)簡單、運行效率高。
該系統(tǒng)最多支持12道工序,每道工序最多持續(xù)100 min,實際的工序道數(shù)及持續(xù)時間從鍵盤輸入,并通過LED顯示器顯示出來;用不同的發(fā)光二極管點亮代表每道工序正常運行,運行時間以倒計時的形式顯示在LED顯示器上;模擬故障處理,通過外部中斷通知系統(tǒng),系統(tǒng)響應中斷并暫停工序運行,發(fā)出報警聲并延時10 min,故障排除后從中斷的工序繼續(xù)運行。
系統(tǒng)硬件基于Dais-52PH+單片機實驗系統(tǒng)設計,用發(fā)光二極管點亮來表示某個工序正在運行。主要包括電源模塊、復位和時鐘模塊、譯碼模塊、發(fā)光二極管控制模塊、LED顯示模塊、鍵盤掃描識別和處理模塊、故障及報警等模塊。系統(tǒng)的硬件結構如圖1所示。
電源模塊、復位和時鐘模塊是設計單片機系統(tǒng)必備的模塊。譯碼模塊為其他模塊提供端口地址。發(fā)光二極管控制模塊控制發(fā)光二極管的亮滅。定時和LED顯示模塊進行定時,并以倒計時的形式顯示各道工序的運行時間。按鍵掃描識別和處理模塊模擬掃描識別鍵盤上按下的鍵并進行相應處理。故障及報警模塊模擬生產過程中出現(xiàn)故障,并發(fā)出報警聲。
圖1 系統(tǒng)的硬件結構圖
將Dais-52PH+單片機實驗系統(tǒng)的8255的I/O擴展電路、發(fā)光二極管、單脈沖電路、4×8鍵盤、6位LED顯示器、揚聲器驅動及譯碼電路等與8032的P1口、P3口相應引腳連接,組合成系統(tǒng)的硬件部分,以此為基礎編寫匯編程序。
主程序模塊完成初始化工作。初始化工作主要包括工作區(qū)和全局變量的設置,定時/計數(shù)器0、1和外部中斷0的相關寄存器設置。工作區(qū)設置見表1,全局變量的設置見表2。
定時/計數(shù)器0、1的初始化包括工作方式控制寄存器TMOD、中斷允許寄存器IE、初值的設置。TMOD的值為11H,即工作在方式1、定時器模式;IE的值為87H,即允許定時器/計數(shù)器T0、T1的溢出中斷、允許外部中斷0中斷;定時時間為0.1 s,晶振為6 MHz,初值為TH0、TH1的值為3CH,TL0、TL1的初值為0B0H。主程序模塊的流程如圖2所示。
表1 工作區(qū)設置
表2 全局變量設置
圖2 主程序模塊的流程圖
通過該系統(tǒng)4×8矩陣鍵盤上的按鍵來完成該模塊的設計,系統(tǒng)使用一片74LS273和一片74LS245分別驅動鍵盤的列線和行線,行線作為輸入,列線作為輸出,設計按鍵的掃描識別和處理程序。
采用行掃描法進行按鍵識別,即向所有列線輸出0,讀行線的內容。如果行線全為1,則沒鍵按下,繼續(xù)掃描;否則有鍵按下,執(zhí)行LED顯示程序延時去抖動,然后繼續(xù)向所有列線輸出0,讀行線的內容。如果行線全為1,則沒鍵按下,繼續(xù)掃描,否則有鍵按下識別按下鍵的編碼。按鍵的編碼值初始化為0,即讓第0列為0,其他列為1。讀行線內容時,如果行線內容全為1,則說明第0列沒鍵按下,按鍵的編碼值加1,指向第1列,讓第1列為0,其他列為1,讀行線內容。如果行線全為1,則說明第1列沒鍵按下,按鍵的編碼值加1,指向第2列,繼續(xù)掃描第2列;否則逐位判斷行線,如果第0行為1,則按鍵的編碼值加8指向第1行,繼續(xù)判斷,直到找出為0的行,即可得到按鍵的編碼值,通過按鍵的編碼值查表便得到按下鍵的鍵值。按鍵編碼與鍵值的對應關系見表3。
表3 按鍵編碼與鍵值的對應關系
按鍵處理程序判斷按下的鍵值,如果按下的是數(shù)字鍵,直接存儲到相應的變量中;如果按下的是字母鍵,則重新輸入。這里約定:第1次按下的是工序的道數(shù),存儲到5EH單元,接下來按下的數(shù)字鍵表示每道工序持續(xù)的分鐘時間,分別存儲到51H—5CH單元,輸入完畢后如果按下的是EXEC鍵(鍵值為16H),調用發(fā)光二極管控制子程序,開始模擬工業(yè)順序控制。
8032單片機的P0口兼作系統(tǒng)數(shù)據(jù)線和低8位地址線,P2口兼作高8位地址線,P3口用作第2功能,P1口僅有8位,所以8032擴展8255,通過8255實現(xiàn)對發(fā)光二極管的控制。8255的A口和B口的低4位連接12個發(fā)光二極管,編寫控制子程序,控制燈的亮滅。該子程序包括8255的初始化和12個發(fā)光二極管的點亮時間控制。由于A口和B口都工作在輸出方式,所以初始化命令字為80H;控制PA0—PA7和PB0—PB3連的發(fā)光二極管依次點亮一個,由于要顯示點亮時間,所以LED顯示程序作為延時程序。該模塊子程序的流程如圖3所示。
圖3 發(fā)光二極管控制子程序流程圖
3.4.1 定時模塊
使用8032內部定時器/計數(shù)器進行精確定時。T0用作各道工序正常運行的定時,T1用作故障處理的定時。系統(tǒng)晶振為6 MHz,設定時時間為0.1 s,定時時間到產生中斷,通過執(zhí)行定時器/計數(shù)器的中斷服務程序更新倒計時的時間。定時器/計數(shù)器工作在方式1,定時時間0.1 s,即0.1 s產生一次中斷,中斷10次即實現(xiàn)1 s定時。定時器/計數(shù)器0的中斷服務程序中,4EH、4FH單元存放了當前工序運行的分鐘時間、秒時間。定時器/計數(shù)器0的中斷服務程序流程圖見圖4。
圖4 定時器/計數(shù)器0的中斷服務流程圖
定時器/計數(shù)器1的中斷服務程序與定時器/計數(shù)器0的類似,只是5FH單元存放了故障處理時間,當5FH單元減到0時,故障處理完畢,啟動T0計數(shù),停止T1計數(shù)。
3.4.2 LED顯示模塊
實驗系統(tǒng)用2片74LS273驅動6個LED數(shù)碼管,基于動態(tài)顯示原理編寫顯示子程序。該部分程序在從鍵盤輸入時顯示鍵盤輸入的值,在輸入完畢后顯示工序道數(shù)及當前第幾道工序,并以倒計時的形式為工序的持續(xù)時間計時。包括拆分子程序和顯示子程序。
拆分子程序將5EH單元、4EH—4FH單元的數(shù)據(jù)拆分成高低4位,分別存放在 7AH—7FH單元;將5FH單元的高4位、低4位分別存放在76H—77H單元,78H—79H單元置0。
顯示子程序判斷00H的值是否為1,如果為1則將78H—79H單元的數(shù)據(jù)以閃爍的形式顯示出來;否則,將7AH—7DH單元的數(shù)據(jù)依次取出來,通過動態(tài)顯示方法在6個LED顯示出來。
本系統(tǒng)可以模擬故障處理。功能有:顯示器閃爍,計數(shù)器停止計數(shù)并保持在原來的數(shù)據(jù);所有燈都不亮;揚聲器發(fā)出報警聲,模擬故障處理;故障處理完畢后,從中斷的工序繼續(xù)運行。
采用實驗系統(tǒng)的單次脈沖電路與8032的外部中斷0連接,實現(xiàn)特殊狀態(tài)切換。當AN鍵按下時,單脈沖電路的RS觸發(fā)器輸出低電平,由于復位后P3.2引腳為高電平,因此,P3.2引腳產生一個負跳變,向8032單片機提出中斷,單片機通過執(zhí)行中斷服務程序響應中斷,暫停當前的計數(shù),驅動路口的紅燈全亮,延時10 min;P1.7引腳輸出的連續(xù)方波,經過放大器放大驅動揚聲器發(fā)聲。驅動揚聲器發(fā)出報警聲。中斷服務程序的流程圖見圖5。
圖5 中斷服務程序流程圖
按照上面各模塊的設計思路,在MCS-51集成開發(fā)環(huán)境下編寫匯編程序,經過編輯、編譯、調試,實現(xiàn)系統(tǒng)的控制功能。
單片機開發(fā)簡單、抗干擾能力強、設計的系統(tǒng)穩(wěn)定、適合工業(yè)控制。本文基于Dais-52PH+實驗系統(tǒng),對原有工業(yè)順序控制實驗進行改進,定時精確、可設置工序的道數(shù)和每道工序持續(xù)的時間、模擬生產故障,具有通用性。學生通過做實驗,進一步加深了對單片機理論知識的理解、鍛煉了動手實踐能力,從而提高了他們運用單片機理論知識解決問題的能力。
[1] 劉海寬.單片機實驗與實訓[M].南京:東南大學出版社,2009.
[2] 陳果.PLC控制步進電機分度的設計與實現(xiàn)[J].機床電器,2008(3):40-41.
[3] 陸春元.移位指令實現(xiàn)順序控制的設計方法[J].蘇州市職業(yè)大學學報,2012(5):40-43.
[4] 焦志剛,崔瀚,劉會杰.應用計數(shù)器指令實現(xiàn)PLC順序控制的編程方法[J].工業(yè)控制計算機,2010(8):107-108.
[5] 謝富珍.PLC寄存器移位指令實現(xiàn)順序控制[J].無線互聯(lián)科技,2013(7):119.
[6] 呂書勇,陳永利.PLC的順序控制設計法[J].重慶電子工程職業(yè)學院學報,2009(5):92-96.
[7] 單啟兵,孔敏.基于西門子S7-200PLC順序控制編程方法研究[J].巢湖學院學報,2012(3):65-68.
[8] 唐玉玲.延遲焦化過程間歇操作順序控制系統(tǒng)開發(fā)[J].自動化儀表,2013(5):36-39.
[9] 簡立明,劉歡.三菱PLC的狀態(tài)編程法在順序控制系統(tǒng)中的應用[J].自動化應用,2011(2):44-45.
[10] 謝曉燕,滕榮華.基于PLC的打包機控制系統(tǒng)設計[J].制造業(yè)自動化,2012,34(10):144-147.
[11] 劉媛媛.51單片機用有限狀態(tài)機算法實現(xiàn)順序控制[J].機械工程與自動化,2011(4):42-44.
[12] 羅繼亮,陳雪琨,齊鵬飛,等.間歇式化工形式化建模與順序控制器設計[J].上海交通大學學報,2012(12):1896-1900.