魏春光, 秦 健, 孫玉梅, 于玉沖
(1. 煙臺南山學院 工學院, 山東 煙臺 265713; 2. 山東科技職業(yè)學院 機電工程系, 山東 濰坊 261053)
目前的PLC實驗設備大多是將控制對象印刷在面板上,輸入、輸出用小按鈕和指示燈來代替,由于被控對象靜止不動,梯形圖運行過程中勢必會人工輸入變化信號,輸出用小燈的亮滅代替,使自動運行過程不能完整呈現(xiàn),同時這些控制面板固定,不易升級,就會導致實驗教學內容一成不變,不能適應PLC日新月異的發(fā)展,影響了實驗教學的效果。一些廠家也推出了動態(tài)模型,但是一個模型只針對一種控制對象,體積較大而且價格昂貴[1],PLC的控制對象變化多樣,逐一配備動態(tài)模型也不現(xiàn)實。
利用組態(tài)軟件技術,對組態(tài)畫面中的被控對象分配地址,通過通訊的方式對PLC的內部存儲器進行讀寫操作的仿真方法在很大程度上解決了PLC實物模型構建困難較大的缺點,這種方法不涉及硬件,簡單方便。但也正是因為不涉及硬件,使學生在PLC的實踐過程中掌握的不全面,對學生工程能力的培養(yǎng)造成欠缺。針對上述問題,本文設計了以單片機為核心的虛擬負載實驗裝置,用單片機設計硬件接口,作為電腦和PLC之間的連接媒介。上位機通過設計的通信軟件向單片機發(fā)送指令,設置單片機端口的某些位電平的高低,這些端口直接與PLC的輸入相連,能夠觸發(fā)輸入信號改變輸入映像寄存器的值,促使PLC程序按要求運行,同時PLC的輸出信號也通過單片機進入到上位機當中,控制畫面中的執(zhí)行機構運行工作。這種方法實現(xiàn)了軟硬件聯(lián)動,不僅畫面逼真,而且練習了硬件操作,更能激發(fā)學生的學習興趣。
系統(tǒng)以單片機為核心進行信號的傳遞與管理,上位機采用MCGS組態(tài)軟件,利用其提供的驅動程序開發(fā)向導來完成與單片機的信息交換,PLC與單片機的信息管理主要由硬件輸入、輸出接口實現(xiàn)。總體結構如圖1所示。

圖1 系統(tǒng)總體結構
硬件設計主要涉及單片機的選用、MAX232電平轉換、輸入接口、輸出接口設計。
采用STC90C516RD+單片機,該單片機是新一代高速、低功耗單片機,指令代碼與8051單片機完全兼容,內部數(shù)據(jù)存儲器容量大[2],適合設計的需要。
STC90C516RD+單片機與上位機的通信采用MAX232進行信號調理,該芯片采用5V供電,具備雙驅動電路,能夠輕松方便的實現(xiàn)TTL電平和RS232電平之間的轉換。
為了增加系統(tǒng)的抗干擾能力,單片機與PLC的輸入模塊之間采用電隔離,選用TLP521實現(xiàn)。由于單片機I/O的驅動能力弱,采用74LS00非門增大驅動能力。由于PLC輸入端電路一般采用直流24 V電源供電,內部以流過電流的大小來確定端口的導通、關斷,為確保不發(fā)生誤判,如圖2所示, PLC導通時的電流IC應大于4.5 mA,關斷時的電流IC應小于1.5 mA,所以在參數(shù)設計時需要計算合適的電阻參數(shù)。

圖2 輸入模塊結構
為了確保PLC輸入的可靠導通,取電流IF=15 mA,通過TLP521中IF-UF特性曲線確定發(fā)光二極管的壓降Ud為1.2 V,用電阻R的值計算公式如下:
R=(5-Ud)/IF
(1)
計算值為253 Ω,調整后取300 Ω。將R=300 Ω再帶回式(1),計算出IF=12 mA,由于TPL521的電流傳輸比IC/IF<1,查閱IC-IF曲線確定IC為9 mA左右,大于4.5 mA,可以確保PLC輸入端口可靠導通。
關斷時由于TTL門輸出高電平,IF=0 mA,自然IC=0 mA<1.5 mA,PLC輸入端口可以可靠關斷。
本次設計的PLC虛擬負載實驗裝置針對的是繼電器輸出型PLC,PLC的輸出是開關量,利用這一特點,采用單片機的獨立式鍵盤設計,將PLC的輸出點與單片機的I/O口直接相連,可大大簡化硬件設計。具體結構如圖3所示。

圖3 輸出接線
該套虛擬負載實驗裝置的核心在于單片機與上位機的信息交互,MCGS是一款非常優(yōu)秀的國產組態(tài)軟件,它提供了國內外常用的工控設備的驅動程序,也為其它特殊的設備提供了開發(fā)驅動程序向導,運用VB6.0以上的開發(fā)環(huán)境,該向導能夠構建出設備驅動程序的框架,用戶按照自己的需要來變成和修改設備驅動程序[3]。
MCGS提供的接口規(guī)范中有5個屬性接口,程序可以通過調用屬性接口函數(shù)來設置設備屬性。通過設定這5個屬性,可以標示設備的類型、類別、設備的通道個數(shù),設備所用I/O地址的個數(shù)以及設備所用的I/O基地址[4-8]。
依據(jù)接口規(guī)范, 子設備是不需要占用系統(tǒng)I/O和I/O地址的。本設計中單片機設備作為子設備與串口父設備對應。本設計中應用的對象是為滿足一般需要設計的,PLC的I/O點數(shù)為8點輸入,8點輸出,因此設定通道個數(shù)為16個,分別是單片機P1輸出通道與PLC的輸入點相連,單片機的P2作為PLC的輸出負載和輸出口相連。定義設置如下:
DevType=1 '1為子設備, 0為獨立設備
DevStyle=1 '1和串口父設備對應的子設備
DevChannel=16
DevIONumber=0
DevBaseIO=0[9]
在單片機與上位機進行數(shù)據(jù)交換的過程中,必須要用到串口父設備。MCGS把復雜的對串行端口的設置(如波特率、數(shù)據(jù)位長度、停止位位數(shù)、有無奇偶校驗等),初始化和讀寫操作全部封裝在串行通訊父設備中[10]。在編寫驅動程序時,子設備按通信協(xié)議格式設定命令并把命令放到一個固定的字節(jié)數(shù)組中,調用串行通信父設備提供的標準串口讀寫函數(shù),即可完成對數(shù)據(jù)的讀取和發(fā)送工作。串行端口操作函數(shù)如下:
ComOutDa:t把數(shù)據(jù)寫到串行端口輸出到通信設備的串行口操作函數(shù)。
ComAllInDa:t將當前輸入緩沖區(qū)的數(shù)據(jù)全部讀回來的串行口操作函數(shù)。
ComOutInDa:t把數(shù)據(jù)寫到串行端口輸出到通信設備,并從串行端口中讀取返回的數(shù)據(jù)的串行口操作函數(shù)[11]。
限于篇幅,具體的驅動編制不再贅述。編制好的驅動程序經編譯生成*.DLL文件,只要把此文件復制到MCGSProgram Driver的目錄下,就完成了設備驅動程序的掛接工作[12-13]。
對照著MCGS的驅動程序,在單片機中開辟存儲空間,用來和MCGS進行數(shù)據(jù)接收和發(fā)送。本設計中采用的STC90C516RD+單片機內部用1 280個Byte的存儲空間,可以根據(jù)需要進行內存分配。為了符合通訊協(xié)議,單片機的串口設置如下:
void chuankou_init()
{TMOD=0x20;SCON = 0x50; PCON = 0x00;
TH1 = 0xfd; TL1 = 0xfd; TR1 = 1; }
運料小車應用廣泛[14],其控制具有很強的代表性。其控制要求為:系統(tǒng)初始時,小車位于 左側,左限位限位開關為ON。當按下啟動按鈕,小車上方的料倉倉門打開,5 s后料倉關閉,小車向右行駛,到達右限位位置后小車停下,打開小車底部卸料門卸料,10 s后卸料門關閉小車左行,到達左限位后重復上述操作,直到按下停止按鈕系統(tǒng)完成一個循環(huán)后停止。
I/O分配如表1和表2所示。

表1 輸入分配表

表2 輸出分配表
通過對控制要求的分析,運用順序功能圖的編程方法[15]可以很輕松設計出梯形圖程序,限于篇幅,不再贅述。
畫面設計比較簡單,在此省略。為了讓車的水平運動畫面逼真,運行流暢,同時左右限位開關的信息能準確無誤地通過單片機傳遞到PLC中,需要編寫腳本程序。在設備通道中變量左限位與P1.2、右限位與P1.3、小車右行與P2.0、小車與左行P2.1關聯(lián),設MCGS內部數(shù)值型變量位置移動,腳本程序如下:
If 位置移動<9 Then
左限位=1
Else
左限位=0
End If
If 位置移動>172 Then
右限位=1
Else
右限位=0
End If
If P2.0=1 AND 小車右行=0 Then
位置移動=位置移動+5
End If
If P2.1=1 AND 小車左行=0 Then
位置移動=位置移動-5
End If
設計的基于單片機的PLC虛擬負載實驗裝置,利用開發(fā)向導生成的單片機驅動程序為新的實驗內容設計提供了極大的方便,也為其他設備的驅動開發(fā)提供了很好的思路。在實驗教學過程中效果良好,即達到了PLC梯形圖程序設計調試的目的,又完成了硬件接線,使學生對PLC項目開發(fā)有了較為深刻的認識。裝置中存在的不足之處是模擬量、脈沖量等PLC的高級應用尚不完善,在接下來的工作中將進一步設計優(yōu)化,使裝置更加符合PLC實踐教學的需要。