劉超強(qiáng) 黃存我
摘要:現(xiàn)代工業(yè)的自動(dòng)化生產(chǎn)控制,已經(jīng)從單一的直接面向控制某一生產(chǎn)過程的直接控制,發(fā)展到多層次的全面計(jì)算機(jī)集中制造系統(tǒng)(CIMS)。為滿足現(xiàn)代工業(yè)自動(dòng)化的需要,PLC一般均配有數(shù)據(jù)通訊模塊,用來進(jìn)行PLC之間、PLC與上位計(jì)算機(jī)之間的數(shù)據(jù)通訊,組成工廠生產(chǎn)自動(dòng)化網(wǎng)絡(luò)。本文主要探討PLC與工業(yè)控制計(jì)算機(jī)串行通信分析及應(yīng)用。
關(guān)鍵詞:PLC;工業(yè)控制;計(jì)算機(jī);串行通信
隨著工業(yè)控制要求的不斷發(fā)展,上位機(jī)監(jiān)控已經(jīng)成為工廠數(shù)據(jù)采集的一個(gè)重要環(huán)節(jié)。大多數(shù)控制系統(tǒng)都趨向于用通用工程軟件(如Visual Basic,Visual C++,DELPHI等)編制上位機(jī)監(jiān)控界面。Visual Basic易學(xué)易用,還提供了一套可視化設(shè)計(jì)工具,大大簡(jiǎn)化了程序界面的設(shè)計(jì)工作,同時(shí)其編程系統(tǒng)采用了面向?qū)ο?、事件?qū)動(dòng)機(jī)制,使用Visual Basic可以方便地完成從小的應(yīng)用程序到大型的數(shù)據(jù)庫(kù)管理系統(tǒng)的編程任務(wù)。
1計(jì)算機(jī)與FX系列PLC的通信
FX系列PLC根據(jù)使用的通信模塊與通訊協(xié)議的不同,可分為4種通信模式。(l)N:N鏈接網(wǎng)絡(luò)通信模式;(2)并行鏈接通信模式;(3)無協(xié)議通信模式;(4)計(jì)算機(jī)鏈接通信模式。
FX系列PLC可以通過編程口或通信口與計(jì)算機(jī)通信。通過編程口通信計(jì)算機(jī)只能與一臺(tái)PLC通信實(shí)現(xiàn)和PLC中的軟元件間接訪問構(gòu)成二級(jí)控制系統(tǒng);通過通信口通信計(jì)算機(jī)可與多臺(tái)PLC通信實(shí)行對(duì)PLC中的軟元件直接訪問構(gòu)成總線型網(wǎng)絡(luò)控制系統(tǒng)。PLC使用不同的通信適配器但通信規(guī)程和通信程序取決于編程口還是通信口與PLC無關(guān)。本文以三菱FX系列PLC為例介紹計(jì)算機(jī)與PLC串行通信的實(shí)行方法并利用VB6.0編寫通信軟件實(shí)現(xiàn)計(jì)算機(jī)對(duì)PLC工作狀態(tài)的實(shí)時(shí)監(jiān)控[1]。
2 PLC與PC間的通信協(xié)議
PC與PLC間的通信方式分為同步通信和異步通信兩類。目前主流的通信方式有RS-232,RS- 422和RS-485,他們都是串行數(shù)據(jù)接口標(biāo)準(zhǔn),是由美國(guó)電子工業(yè)協(xié)會(huì)EIA制定的一種串行物理接口標(biāo)準(zhǔn),其中最常用的是RS-232通信方式。本案例采用RS-232的通信格式,在這種情況下需要設(shè)置波特率、奇偶校驗(yàn)位和停止位等參數(shù),只要上位機(jī)和下位機(jī)這些參數(shù)設(shè)置一致就可以通信了。一般設(shè)置波特率為9600 b/s、偶校驗(yàn)、7位數(shù)據(jù)位、1位停止位。但是此種通信方式只能由上位機(jī)發(fā)出命令,PLC響應(yīng)上位機(jī)發(fā)出來的命令,當(dāng)PLC不能正確響應(yīng)時(shí),PLC返回響應(yīng)錯(cuò)誤標(biāo)志。上位機(jī)發(fā)出的數(shù)據(jù)是以幀為單位發(fā)送和接收的。通常,一個(gè)數(shù)據(jù)由5部分組成。累加和是從STX后面一個(gè)字節(jié)開始累加到ETX的和,取它們ASCII碼所得和的最低二位數(shù)。其中STX對(duì)應(yīng)的16進(jìn)制數(shù)位0x02,是判知傳輸資料的開始。命令字是對(duì)下位機(jī)所做動(dòng)作的指示,比如要求讀取或?qū)懭氲萚2]。
我們采用的是基于VB(Visual Basic)平臺(tái)編寫的驅(qū)動(dòng)程序。VB是一個(gè)可視化的高級(jí)語言,為用戶提供直觀的工作環(huán)境,為監(jiān)控系統(tǒng)建立良好的用戶界面奠定了基礎(chǔ)。VB采用事件驅(qū)動(dòng),編程與調(diào)試方便,可以快速地編制出性能良好的應(yīng)用程序,通過對(duì)串行通信控件MsComm的簡(jiǎn)單配置,就可以完成串行口的讀寫操作,是上位機(jī)監(jiān)控系統(tǒng)常用的開發(fā)工具。
在VB開發(fā)環(huán)境界面中,在“工具箱”欄處單擊鼠標(biāo)右鍵,在彈出的選項(xiàng)里選中“部件”項(xiàng),然后在彈出的“控件列表框”里,選中“Microsoft Comm Control 6.0',控件。確定后,MSComm控件即被選中,可以將它添加到程序窗體中,開始設(shè)定控件的屬性,以建立與串行口的連接[3]。
3 PLC串行通信在油管智能檢測(cè)控制中的實(shí)現(xiàn)
3.1 油管檢測(cè)系統(tǒng)
油管在輥輪帶動(dòng)下,勻速通過檢測(cè)機(jī)構(gòu)接受檢測(cè)。當(dāng)油管到達(dá)檢測(cè)位時(shí)開始采集數(shù)據(jù),當(dāng)油管離開檢測(cè)位時(shí)停止采集數(shù)據(jù)。檢測(cè)位置的識(shí)別由安裝在檢測(cè)機(jī)構(gòu)前方的光電開關(guān)完成,采用松下FP-X型PLC實(shí)時(shí)監(jiān)測(cè)光電傳感器的狀態(tài)。通過與PLC的串行通信,計(jì)算機(jī)獲得油管位置信號(hào),從而根據(jù)油管的位置控制數(shù)據(jù)采集[4]。
3.2 計(jì)算機(jī)鏈接通信環(huán)境設(shè)定
PLC采用將USB作為虛擬的串行端口進(jìn)行通信的方式,因此認(rèn)為由USB所連接的FP-X型PLC是由計(jì)算機(jī)通過COM端口進(jìn)行連接的。計(jì)算機(jī)鏈接的通信設(shè)置要通過編程工具FPWINGR來進(jìn)行。在PLC系統(tǒng)寄存器設(shè)置中設(shè)置如下內(nèi)容:
No. 411站號(hào)(PLC地址):可從1~99進(jìn)行設(shè)定;
No. 412通信模式設(shè)置為計(jì)算機(jī)鏈接;在端口選擇中,選擇/內(nèi)置USB0;
No. 414(COM2端口用)傳送格式的設(shè)定:數(shù)據(jù)長(zhǎng)度8bit,奇偶校驗(yàn)為奇校驗(yàn),停止位1bit,終端代碼CR(固定),始端代碼無STX(固定);
No. 415速率的設(shè)定:速率固定為115200bps。
3.3 VB通信程序的開發(fā)
在檢測(cè)臺(tái)正前方裝有光電開關(guān)用來感應(yīng)油管是否到達(dá)檢測(cè)位,其對(duì)應(yīng)的PLC輸入端子為X0。采用中間繼電器R0存儲(chǔ)X0的上升沿,R1存儲(chǔ)X0的下降沿。
當(dāng)油管進(jìn)入檢測(cè)機(jī)構(gòu)時(shí),R0為1并保持1S,此時(shí)開始數(shù)據(jù)采集;當(dāng)油管離開檢測(cè)機(jī)構(gòu)時(shí),R1為1并保持1S,此時(shí)停止數(shù)據(jù)采集。R0和R1的狀態(tài)通過指令RCS讀取。由于系統(tǒng)要反映PLC數(shù)據(jù)區(qū)的實(shí)時(shí)變化,所以在控件Timer1(100ms執(zhí)行一次)里編寫發(fā)出和接收指令的代碼:
Private Sub Timer1_Timer()
Mscomm. InBufferCount = 0 '清空接收緩沖區(qū)Mscomm.Output = "% 01#RCSR0000" + "** " + Chr(13)'讀取R0狀態(tài)指令
Mscomm. Output = "% 01#RCSR0001" + "** " + Chr
(13)'讀取R1狀態(tài)指令
Form = 1 To 100
For n = 1 To 1500
stepstr =Mscomm. Input '讀取串行口的數(shù)據(jù)
IfLen(stepstr)> 0 Then ExitFor
Nextn
resp = resp& stepstr
Nextm
IfMid(resp,1,9)= "% 01$RC120" Then '判斷R0狀態(tài)
Datalogger_on '開始數(shù)據(jù)采集
End If
IfMid(resp,11,9)= "% 01$RC120" Then '判斷R1狀態(tài)
Datalogger_off '停止數(shù)據(jù)采集
End If
End Sub
"% 01#RCSR0000" + "** " + Chr(13)代表發(fā)送的命令為% 01#RCSR0000** CR,RCS代表通信指令為讀取單個(gè)觸點(diǎn)的狀態(tài)信息,R0000代表R0。PLC收到該指令,會(huì)根據(jù)R0位的狀態(tài)回復(fù)。若為/10,則響應(yīng)信息為:% 01$RC120CR,RC表示觸點(diǎn)狀態(tài)讀取,/10為觸點(diǎn)狀態(tài),/200為不使用BCC校驗(yàn)時(shí)的輸出字符;若為/00,則響應(yīng)信息為:% 01$RC021CR。
結(jié)論
使用VB編寫上位機(jī)軟件的最大優(yōu)勢(shì)是直接在VB中引人了控件,簡(jiǎn)化了編程,使上位機(jī)界面更加簡(jiǎn)單。而且Windows系統(tǒng)也使用了大量的控件,如按鈕、文本框等。只要熟練掌握了這項(xiàng)技術(shù),對(duì)工控會(huì)有很大的幫助,特別在編寫上位機(jī)程序方面。
參考文獻(xiàn):
[1] 王慧博. 探討單片機(jī)與計(jì)算機(jī)的串行通信[J]. 電子制作,2013,14:159.
[2] 錢華,曹春泉. 基于VB的PLC與計(jì)算機(jī)間串行通信[J]. 機(jī)械工程與自動(dòng)化,2013,06:197-198.
[3] 趙春暉. 基于VB的PLC與計(jì)算機(jī)串行通信的實(shí)現(xiàn)[J]. 黑龍江科技信息,2013,24:155-156.
[4] 封莉,張萌萌. 計(jì)算機(jī)與單片機(jī)的串行通信技術(shù)探究[J]. 煤炭技術(shù),2013,03:253-255.