- 艾寶物聯(lián)IOBOV? ─ 工業(yè)無(wú)線(xiàn)測(cè)控專(zhuān)家
目前,國(guó)內(nèi)用戶(hù)選用的可編程控制器(PLC)仍以國(guó)外產(chǎn)品為主,造成這種局面的一個(gè)重要原因是歐、美、日等發(fā)達(dá)工業(yè)國(guó)家掌握了高端PLC的核心技術(shù),其硬軟件技術(shù)對(duì)應(yīng)用者來(lái)說(shuō)完全是封閉的,使用者只能從應(yīng)用的角度學(xué)習(xí)PLC,而不能參與PLC的開(kāi)發(fā)[1-2]。近年來(lái),IEC61131-3國(guó)際標(biāo)準(zhǔn)的頒布和實(shí)施為各PLC生產(chǎn)廠(chǎng)家提供了統(tǒng)一的軟件開(kāi)發(fā)準(zhǔn)則,開(kāi)放的高性能單片機(jī)技術(shù)的發(fā)展,為硬件開(kāi)發(fā)提供了有效的物質(zhì)基礎(chǔ)[3]。在這樣的背景下,研制開(kāi)放的PLC系統(tǒng)無(wú)論對(duì)于科學(xué)研究還是促進(jìn)PLC行業(yè)的發(fā)展都有積極的現(xiàn)實(shí)意義。
PLC是一種專(zhuān)用于工業(yè)控制的計(jì)算機(jī),其硬件主要由中央處理器、存儲(chǔ)器、輸入/輸出接口等組成[4],其硬件結(jié)構(gòu)如圖1所示。
1 開(kāi)放式可編程控制器
開(kāi)放式PLC硬件結(jié)構(gòu)采用CPU+外圍模塊+接口構(gòu)成,各個(gè)接口都按標(biāo)準(zhǔn)設(shè)計(jì),大大提高了PLC的開(kāi)放性,使其能方便地與大系統(tǒng)連接。編程語(yǔ)言遵循國(guó)際標(biāo)準(zhǔn)IEC61131-3,并將基于PC的編程軟件作為PLC首選編程工具。系統(tǒng)硬件部分采用高性能51內(nèi)核處理器STC89C51,其為模塊化設(shè)計(jì),采用濾波、隔離電路,以降低成本。主要電路有:微控制器STC89C51RC、開(kāi)關(guān)量輸入電路、繼電器輸出電路、晶體管輸出電路、RS232通信接口電路、電源電路、時(shí)鐘復(fù)位電路和USB通信接口電路等,PLC硬件系統(tǒng)框圖如圖2所示,軟件采用Borland公司集成開(kāi)發(fā)軟件C++ Builder,通過(guò)集成平臺(tái)對(duì)51內(nèi)核處理器指令集進(jìn)行解釋、編譯,使梯形圖語(yǔ)言轉(zhuǎn)換為能被51內(nèi)核處理器識(shí)別的代碼。
2 系統(tǒng)硬件設(shè)計(jì)
可編程控制器單片機(jī)部分電路圖如圖3所示。
USB通信部分選擇Philips公司的PDIUSBD12[5]芯片作為系統(tǒng)的USB接口器件,片內(nèi)集成了高性能USB接口電路、SIE、FIFO存儲(chǔ)器、收發(fā)器以及電壓調(diào)整器等,可與任何外部控制器或微處理器實(shí)現(xiàn)高速并行通信,其速率為2 Mb/s,完全能夠滿(mǎn)足設(shè)計(jì)所要求的數(shù)據(jù)傳輸速度。USB通信接口模塊電路如圖4所示。
3 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件結(jié)構(gòu)如圖5所示。圖中,系統(tǒng)編輯模塊為用戶(hù)提供編輯環(huán)境,接收用戶(hù)的梯形圖程序輸入,并將其存儲(chǔ)為相應(yīng)的文件。梯形圖語(yǔ)言為一種圖形語(yǔ)言,要直接對(duì)其進(jìn)行編譯十分困難,因此并不是直接對(duì)梯形圖程序進(jìn)行編譯,而是先將其翻譯成指令語(yǔ)言的文本形式,再對(duì)指令語(yǔ)言進(jìn)行編譯。圖形語(yǔ)言編譯問(wèn)題的解決,提高了代碼的利用率[6-7]。通過(guò)提取數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù),形成C語(yǔ)言程序文件,經(jīng)過(guò)C51編譯器、連接器、轉(zhuǎn)換器的編譯、連接、轉(zhuǎn)換過(guò)程,生成能夠在PLC硬件上運(yùn)行的可執(zhí)行文件。
3.1 用戶(hù)界面
PLC用戶(hù)界面是實(shí)現(xiàn)可編程人機(jī)交互的重要部分,它以梯形圖語(yǔ)言的形式錄入用戶(hù)控制程序,以二進(jìn)制形式通過(guò)串口下載到PLC硬件,其梯形圖表示的用戶(hù)編程區(qū)如圖6所示。
PLC在進(jìn)行邏輯運(yùn)算之前,必須對(duì)外部信號(hào)進(jìn)行采樣[8],若要實(shí)現(xiàn)指令的功能,首先要設(shè)置外部I/O在梯形圖中的地址,系統(tǒng)才能夠?qū)τ脩?hù)程序中所使用的I/O地址與單片機(jī)的引腳地址相匹配。本設(shè)計(jì)在I/O設(shè)置對(duì)話(huà)框底層設(shè)計(jì)了如表1所示的數(shù)據(jù)處理函數(shù)。
3.2 USB通信
PDIUSBD12的固件設(shè)計(jì)成完全的中斷驅(qū)動(dòng),當(dāng)CPU處理前臺(tái)任務(wù)時(shí),USB的傳輸可在后臺(tái)進(jìn)行;后臺(tái)中斷服務(wù)程序和前臺(tái)主程序循環(huán)之間的數(shù)據(jù)交換可以通過(guò)事件標(biāo)志和數(shù)據(jù)緩沖區(qū)來(lái)實(shí)現(xiàn)。當(dāng)PDIUSBD12從USB收到一個(gè)數(shù)據(jù)包,即對(duì)CPU產(chǎn)生一個(gè)中斷請(qǐng)求,CPU立刻響應(yīng)中斷。在中斷服務(wù)程序中,固件將數(shù)據(jù)包從PDIUSBD12內(nèi)部緩沖區(qū)移到循環(huán)數(shù)據(jù)緩沖區(qū),并將PDIUSBD12的內(nèi)部緩沖區(qū)清零,以便接收新的數(shù)據(jù)包,使CPU可以繼續(xù)執(zhí)行當(dāng)前的前臺(tái)任務(wù)直到完成。本文利用PDIUSBD12的端點(diǎn)1進(jìn)行命令的傳輸和應(yīng)答,端點(diǎn)1每次接收計(jì)算機(jī)發(fā)送過(guò)來(lái)的8 B指令,其指令格式如表2所示。例如,接收到十六進(jìn)制碼52 01 00 03 00 07 00 50,表示讀24C01器件從03字節(jié)開(kāi)始的7個(gè)字節(jié)的數(shù)據(jù)。52H為R的ASCII碼,57H為W的ASCII碼。端點(diǎn)2用于數(shù)據(jù)的傳輸。
本文在了解PLC國(guó)內(nèi)外研究狀況以及其市場(chǎng)需求的基礎(chǔ)上,提出了研發(fā)開(kāi)放式PLC的概念,完成了PLC集成開(kāi)發(fā)系統(tǒng)的C51模塊實(shí)現(xiàn)方案的設(shè)計(jì),將USB通信方式引入PLC領(lǐng)域,所設(shè)計(jì)的梯形圖編輯器提供了梯形圖編輯平臺(tái),實(shí)現(xiàn)了PLC的基本邏輯指令,完成計(jì)算機(jī)與控制器的USB通信。