摘? 要: 介紹了TwinCAT自動(dòng)化軟件,利用它將上位PC機(jī)轉(zhuǎn)換成具有多PLC系統(tǒng)、編程環(huán)境和操作站的一個(gè)實(shí)時(shí)控制器,通過RS485總線將BC8100 PLC與上位PC機(jī)相連,并對(duì)數(shù)據(jù)內(nèi)存區(qū)進(jìn)行統(tǒng)一設(shè)置分配,編程實(shí)現(xiàn)了水源地遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計(jì)開發(fā)。
關(guān)鍵詞: 倍福PLC; TwinCAT; 內(nèi)存地址; 內(nèi)存配置; 遠(yuǎn)程監(jiān)控
?
水源地監(jiān)控系統(tǒng)是烏魯木齊河自動(dòng)化項(xiàng)目的一個(gè)子項(xiàng)目,甘河子水源地將地下水按需給烏魯木齊市的主要的水源烏拉泊水庫補(bǔ)水,并提供沿線農(nóng)田灌溉用水。該水源地有一個(gè)分控中心,周圍20平方公里范圍內(nèi)分布了10口水源井,分布在四個(gè)泵房和分控中心泵房。各泵房到分控中心的距離200m至2000m不等,地域分布較為分散。為了更好地做到節(jié)能降耗以及對(duì)人力資源的合理利用,并加強(qiáng)烏魯木齊水管處的統(tǒng)籌管理,應(yīng)用PLC技術(shù)、計(jì)算機(jī)控制技術(shù)及現(xiàn)場(chǎng)總線技術(shù),設(shè)計(jì)實(shí)現(xiàn)了以分控中心為上位遠(yuǎn)程控制中心(含本地泵房PLC控制)的監(jiān)控系統(tǒng),并分別監(jiān)控遠(yuǎn)程每個(gè)泵房的PLC工作,每個(gè)泵房均由一套BC8100 PLC系統(tǒng)組成,由于5套PLC系統(tǒng)控制功能相同,僅是在各個(gè)泵房的PLC中與上位機(jī)的通信地址有所不同。以下均以一個(gè)PLC及其軟件設(shè)置為例進(jìn)行描述[1]。
1 Beckhoff TwinCAT 軟件
Beckhoff TwinCAT 軟件系統(tǒng)將任何兼容的PC機(jī)轉(zhuǎn)換成具有多PLC系統(tǒng)、NC軸控制、編程環(huán)境和操作站的一個(gè)實(shí)時(shí)控制器。TwinCAT取代了傳統(tǒng)的PLC和NC控制器以及操作設(shè)備,并具備開放式的、兼容的PC機(jī)硬件,在Windows NT/2000/XP、嵌入式NT/XP、CE中,內(nèi)嵌了IEC 61131-3 軟 PLC 和軟NC;編程和實(shí)時(shí)運(yùn)行系統(tǒng)可選擇為在一臺(tái) PC機(jī)上或分開;可連接所有的公共現(xiàn)場(chǎng)總線和用于I/O信號(hào)的PC機(jī)接口卡;帶用戶接口的數(shù)據(jù)通訊和使用微軟開放式標(biāo)準(zhǔn)程序(OPC、OCX、DLL等)。TwinCAT BC編程可以使用5種不同的編程語言(IL,FBD,LD,SFC,ST),本設(shè)計(jì)中用了功能塊圖FBD(Function Block Diagram)和梯形圖LD(Ladder Diagram)兩種編程語言。所有的功能塊FB(Function Block)都具有統(tǒng)一的外觀感受,因?yàn)樗鼈兌紟в袠?biāo)準(zhǔn)的接口。也可根據(jù)系統(tǒng)中實(shí)現(xiàn)自動(dòng)化的具體任務(wù),通過各種參數(shù)定制功能塊。
近幾年,倍福用于遠(yuǎn)程控制的新型PLC軟件庫(符合IEC 60870標(biāo)準(zhǔn))進(jìn)一步完善了用于PLC和運(yùn)動(dòng)控制應(yīng)用的TwinCAT自動(dòng)化軟件。IEC 60870標(biāo)準(zhǔn)描述的是一種普遍適用的開放式通訊標(biāo)準(zhǔn),它適用于遠(yuǎn)程控制和網(wǎng)絡(luò)控制技術(shù)?,F(xiàn)在,TwinCAT已可支持串行通訊用戶標(biāo)準(zhǔn)(IEC 60870-5-101)、電能累計(jì)量傳輸標(biāo)準(zhǔn)(-102)、保護(hù)設(shè)備的傳輸標(biāo)準(zhǔn)(-103)以及TCP/IP通訊標(biāo)準(zhǔn)(-104)。
TwinCAT PLC軟件庫可實(shí)現(xiàn)串行接口,由此可以發(fā)送或接收各個(gè)應(yīng)用層服務(wù)數(shù)據(jù)單元ASDU(Application-layer Service Data Units)。可以使用 PC機(jī)、嵌入式PC機(jī)或Beckhoff I/O端子模塊KL6xxx(串行總線端子模塊)或EL6xxx(串行EtherCAT 端子模塊)的串行接口[2]。在協(xié)議結(jié)構(gòu)內(nèi)部,接口位于連接層的上一層,并已集成所需的程序和傳輸報(bào)文格式。
2 PLC的設(shè)置
2.1 PLC的模塊配置選擇
水源地的控制既有水泵的邏輯控制,也有流量的模擬量控制。針對(duì)水源地供水過程和對(duì)控制系統(tǒng)的功能要求,選用德國(guó)倍福電氣有限公司生產(chǎn)的PLC完成實(shí)時(shí)數(shù)據(jù)采集與控制。其配套的模塊選用了KL1408 DI(Digital Input,數(shù)字量輸入)模塊,KL2408 DO(Digital Output,數(shù)字量輸出)模塊,KL3458 AI(Analog Input,模擬量輸入)模塊和KL4438 AO(Analog Output, 模擬量輸出)模塊。KL3458是用于檢測(cè)井下液位的高低和水流量,KL4438用來調(diào)節(jié)電磁閥控制水流量。借助RS485接口,采用MODBUS通信協(xié)議將采集的數(shù)據(jù)和信息發(fā)送到上位機(jī),現(xiàn)場(chǎng)控制系統(tǒng)的組成框圖如圖1所示。
?

根據(jù)水源地控制系統(tǒng)的要求,對(duì)現(xiàn)場(chǎng)I/O點(diǎn)數(shù)統(tǒng)計(jì)后,確定選配2個(gè)KL1408(共16路DI模塊),2個(gè)KL2408(共16路DO模塊),1個(gè)KL3458(8路AI模塊),1個(gè)KL4438(8路AO模塊)。KL9010總線結(jié)束端子用來保證總線耦合器和總線端子之間的數(shù)據(jù)交換,每套PLC系統(tǒng)必須在末端使用KL9010為結(jié)束端子塊,以保證PLC系統(tǒng)的正常工作,并起到故障復(fù)位的作用[3]。
2.2?I/O映像寄存器區(qū)的生成規(guī)則及設(shè)置
PLC在編程前,首先要針對(duì)PLC配置情況在TwinCAT中確定其I/O點(diǎn)的絕對(duì)地址,以此作為I/O的映像寄存器的存取內(nèi)容。PLC中內(nèi)存的I/O的映像寄存器與實(shí)際輸入量、輸出量連接點(diǎn)一一對(duì)應(yīng),以確保PLC輸出量的正確執(zhí)行及輸入量的正確讀入,如表1所示[4]。
?

在BC8100系列PLC中,I/O絕對(duì)地址采用的是自動(dòng)分配方式,通過KS2000軟件自動(dòng)檢測(cè)到PLC所安裝的實(shí)際模塊,并能夠連續(xù)分配出對(duì)應(yīng)模塊的地址。PLC系統(tǒng)默認(rèn)的地址首先是模擬輸入量地址,其次是模擬輸出量地址,最后是開關(guān)量的地址。模擬量的地址從%IW0開始,KL3454模塊的A/D分辨率是12位,KL4438模塊的D/A分辨率也是12位,每個(gè)模擬量占用2B的內(nèi)存單元,但由于在BC8100系列PLC中,1個(gè)模擬量地址分配的是4個(gè)內(nèi)存單元,其中模擬量地址的前2B被占用,不可以再作其他用途。因此在配置時(shí)需將AI的起始地址設(shè)置為%IW2;當(dāng)涉及開關(guān)量時(shí),同一組編號(hào)的輸入量與輸出量占用同一地址時(shí),實(shí)際是以高低字節(jié)區(qū)分,而不會(huì)產(chǎn)生沖突。在本系統(tǒng)中,共用到了8個(gè)AI,8個(gè)AO,16個(gè)DI,16個(gè)DO。根據(jù)表1中的地址分配規(guī)則,對(duì)本系統(tǒng)中I/O地址的具體分配如以下程序所示,下面選取出典型程序中的I/O地址設(shè)置。
(************* AI物理地址對(duì)照表*************)
AI1 AT %IW0: INT;? (*AI模塊第1通道*)
AI2 AT %IW4: INT;? (*AI模塊第2通道*)
AI8 AT %IW28:INT;? (*AI模塊第8通道*)
(*************AO物理地址對(duì)照表*************)
AO1 AT%QW32:INT; (*AO模塊第1通道*)
AO2 AT%QW36:INT; (*AO模塊第2通道*)
AO8 AT%QW62:INT; (*AO模塊第8通道*)
(*************DI物理地址對(duì)照表*************)
DI1?AT%IX64.0:BOOL; (*DI模塊第1通道*)
DI2?AT%IX64.1:BOOL; (*DI模塊第2通道*)
DI16 AT%IX65.7:BOOL; (*DI模塊第16通道*)
(************* DO物理地址對(duì)照表*************)
DO1?AT%QX64.0:BOOL; (*DO模塊第1通道*)
DO2 AT%QX64.1:BOOL; (*DO模塊第2通道*)
DO16 AT%QX65.7:BOOL; (*DO模塊第16通道*)
2.3 上位映像存儲(chǔ)區(qū)設(shè)置
為了實(shí)現(xiàn)PLC中的輸入量、輸出量及中間量與上位機(jī)通訊時(shí)的一一對(duì)應(yīng),需要在TwinCAT中Globdl-variables環(huán)境下構(gòu)建一個(gè)專為上位機(jī)可存取的PLC專用內(nèi)存空間,以確保上位機(jī)準(zhǔn)確可靠地控制監(jiān)控PLC的I/O點(diǎn)或中間量,稱其為PLC的內(nèi)存上位映像存儲(chǔ)區(qū),每個(gè)數(shù)據(jù)的上位映像存儲(chǔ)區(qū)都是由一個(gè)數(shù)組構(gòu)成。系統(tǒng)的內(nèi)存空間提供了32KB/64KB供用戶根據(jù)實(shí)際需要來設(shè)置使用。考慮到本系統(tǒng)以后的可擴(kuò)展性,本系統(tǒng)中PLC的數(shù)據(jù)空間設(shè)置了500B容量的上位映像存儲(chǔ)區(qū),設(shè)置的上位映像存儲(chǔ)區(qū)定義如下:
VAR_GLOBAL
(*定義3個(gè)數(shù)據(jù)的內(nèi)存存儲(chǔ)區(qū)用于同上位機(jī)通訊*)
Inputs?? AT %MW0:??? ARRAY[0..127] OF REAL;
outputs? AT %MW128:? ARRAY[0..127] OF REAL;
memory?? AT %MW256:? ARRAY[0..127] OF REAL;
END_VAR
其中,Inputs數(shù)據(jù)組存放的是由PLC上傳給上位機(jī)的輸入數(shù)據(jù),包括模擬輸入量和開關(guān)輸入量數(shù)據(jù),它在PLC內(nèi)存中的上位映像存儲(chǔ)區(qū)起始地址偏移量為0,容量設(shè)定為128B;Outputs數(shù)據(jù)組存放的是由上位下傳給PLC的輸出數(shù)據(jù),包括模擬輸出量和數(shù)字輸出量數(shù)據(jù),它在PLC內(nèi)存中的上位映像存儲(chǔ)區(qū)起始地址被設(shè)置為128,其容量設(shè)定為128B;中間量的上位映像存儲(chǔ)區(qū)起始地址偏移量為256,其容量設(shè)定也為128B,中間量包括中間繼電器的狀態(tài)、定時(shí)器/計(jì)數(shù)器的數(shù)值及移位寄存器的數(shù)值等內(nèi)容。
前面只是在PLC的內(nèi)存區(qū)定義了相應(yīng)的上位映像存儲(chǔ)區(qū),其內(nèi)容是在PLC的開發(fā)應(yīng)用程序中通過構(gòu)建FB和賦值指令等可執(zhí)行程序在PLC執(zhí)行后才能將對(duì)應(yīng)的輸入變量、輸出變量及中間變量實(shí)時(shí)地一一對(duì)應(yīng)到相應(yīng)內(nèi)存的上位映像存儲(chǔ)區(qū)里。
2.4?RTU存儲(chǔ)區(qū)
Modbus RTU TwinCAT PLC 軟件庫提供了Modbus 終端設(shè)備的串行通訊功能塊。通過調(diào)用該軟件庫中的功能模塊可以實(shí)現(xiàn)BC8100與上位機(jī)之間的通訊功能。在此,將該存儲(chǔ)區(qū)稱為RTU存儲(chǔ)區(qū),由于其在內(nèi)存區(qū)的定義靈活,沒有位置的限制,本系統(tǒng)中將模擬量的RTU存儲(chǔ)區(qū)地址排在開關(guān)量地址的前面,與I/O地址設(shè)置統(tǒng)一起來。以下選取了典型的RTU存儲(chǔ)區(qū)的定義:
(*本地上傳的參數(shù)*)
P1101? ?AT %MW0???? ?:REAL;
P1402? ?AT %MW28??? ?:REAL;
DI_1?? ?AT%MX32.0?? ?:BOOL
DI_16? ?AT%MX33.7?? ?:BOOL;
(*上位下傳的參數(shù)*)
T1101? ?AT %MW128?? ?:REAL;
T1402? ?AT %MW156? ?:REAL;
DO_1?? ?AT%MX160.0? ?:BOOL;
DO_16? ?AT%MX161.7? ?:BOOL;
其中,P1101是由PLC上傳給上位機(jī)的AI數(shù)據(jù),DI_1是由PLC上傳給上位機(jī)的DI數(shù)據(jù);T1101是由上位機(jī)下傳給PLC的AO數(shù)據(jù);DO_1是由上位機(jī)下傳給PLC的DO數(shù)據(jù)。
同時(shí)需要在TwinCAT中的Global_Variables_Modbus環(huán)境下定義數(shù)據(jù)內(nèi)存地址在傳送的Modbus報(bào)文中的編址方式,以確保所有的通訊數(shù)據(jù)能夠與上位機(jī)相關(guān)參數(shù)一一對(duì)應(yīng)。
VAR_GLOBAL CONSTANT
(* maximum length of modbus telegrams *)
MAX_TELEGRAM_IDX:???INT:=255;
(* COM-Port FIFO Maxindex *)
COM_BUFFER_MAXIDX:?????? INT:=63;
MODBUSRTU_OUTPUTACCESS_OFFSET:WORD:=16#0800;
??? MODBUSRTU_MEMORYACCESS_OFFSET:WORD:=16#4000;
END_VAR
其中,系統(tǒng)默認(rèn)Inputs輸入數(shù)據(jù)組在傳送的報(bào)文中的地址從0開始進(jìn)行偏移, Outputs輸出數(shù)據(jù)組在傳送的報(bào)文中的地址從0800H(16#0800)開始進(jìn)行偏移,memory內(nèi)存數(shù)據(jù)組在傳送的報(bào)文中的地址從4000H(16#4000)開始進(jìn)行編址。
最后還要在TwinCAT中Variable_Configuration的環(huán)境下定義總線終端控制器的仿真地址:
VAR_CONFIG
(*定義程序中modbus塊和上位機(jī)通訊時(shí)使用的串口地址,BC8100使用的串口是固定500,*)
MAIN.MODRTU1.com.Port.IO.out AT %QB500 : Modbus-
KL6outData5B;
MAIN.MODRTU1.com.Port.IO.in AT %IB500 : Modbus-
KL6inData5B;
END_VAR
當(dāng)程序編寫完成并成功下載到PLC中后,需將PLC的開關(guān)地址設(shè)置為“99”,以實(shí)現(xiàn)上位機(jī)的遠(yuǎn)程監(jiān)控。
如圖2所示,首先在TwinCAT中根據(jù)倍福BC8000 PLC I/O分布規(guī)律設(shè)定相應(yīng)編號(hào)的I/O映像寄存器單元,然后定義上位映像存儲(chǔ)區(qū)的空間位置,并在應(yīng)用程序(如梯形圖)定義實(shí)現(xiàn)各物理量的對(duì)應(yīng)單元,最后確定對(duì)應(yīng)的RTU存儲(chǔ)區(qū)。

3 PLC的程序設(shè)計(jì)
本設(shè)計(jì)中采用LD(L梯形圖)作為MAIN POU的編程語言,FBD作為構(gòu)建功能塊的編程語言。典型的LD圖如圖3所示。

在LD圖中,第一梯層是深水泵的啟動(dòng)控制程序,當(dāng)上位機(jī)下達(dá)深水泵的啟動(dòng)命令后,DO_1為TURE,則DO1為TURE,即水泵開始啟動(dòng)。由于現(xiàn)場(chǎng)深水泵從啟動(dòng)切換為運(yùn)行狀態(tài)的時(shí)間不足2s,所以保證DO1的TURE狀態(tài)為2s已足夠。當(dāng)M10為TURE時(shí),啟動(dòng)過程結(jié)束。為滿足水泵不能頻繁啟動(dòng)的要求,當(dāng)深水泵結(jié)束運(yùn)行后,必須要過2min延時(shí)后才能重新啟動(dòng),以保證深水泵不會(huì)因?yàn)槎虝r(shí)間的連續(xù)啟動(dòng)造成損壞。第二梯層的功能塊實(shí)現(xiàn)模擬量檢測(cè)與轉(zhuǎn)換功能,在通過程序算術(shù)運(yùn)算后,將現(xiàn)場(chǎng)采集到的模擬信號(hào)轉(zhuǎn)換為現(xiàn)場(chǎng)參數(shù)的實(shí)際值,由于現(xiàn)場(chǎng)采集到的液位和流量都是線性變化的,又知道其上、下限對(duì)應(yīng)的量程,可以公用這一個(gè)模塊,在調(diào)用時(shí)只需將Value_max輸入值修改為流量,或液位實(shí)際的最大值,圖中的Value_max只供參考。第三梯層的功能塊實(shí)現(xiàn)對(duì)電磁閥的調(diào)節(jié)控制水流量,將上位機(jī)給定的數(shù)值通過運(yùn)算后輸出對(duì)應(yīng)的控制電流。其中第二、三梯層中的功能塊并不是TwinCAT PLC軟件提供的標(biāo)準(zhǔn)庫函數(shù),而是需要在另一個(gè)POU中,通過FBD調(diào)用一些基本函數(shù)(功能塊)構(gòu)建的,如圖4所示。
第四、五梯層的功能塊為MODBUS RTU TwinCAT PLC 軟件庫提供了MODBUS 終端設(shè)備的串行通訊功能塊,通過調(diào)用功能模塊實(shí)現(xiàn)了BC8100 PLC與上位機(jī)之間的通訊功能。功能塊 MODBUSRtuSlave_KL6x5B 通過串行總線端子KL6001完成MODBUS 從站通訊[5]。

PLC數(shù)據(jù)存儲(chǔ)區(qū)的統(tǒng)一設(shè)置,靈活、合理地規(guī)劃出各部分的內(nèi)存空間,是軟件設(shè)計(jì)的基礎(chǔ)和保證,也是整個(gè)PLC系統(tǒng)實(shí)現(xiàn)控制的關(guān)鍵所在。同時(shí)使編程修改調(diào)試都很方便,大大縮短了調(diào)試時(shí)間,提高了系統(tǒng)的自動(dòng)化程度,降低了硬件的復(fù)雜程度。通過 Beckhoff 基于PC機(jī)的控制技術(shù),可以借助軟件實(shí)現(xiàn)水源地遠(yuǎn)程監(jiān)控功能。通過這種方式,可以提供最大限度的靈活性,顯著降低工程成本。綜合、全面的 TwinCAT控制功能庫涵蓋了所有主要的工業(yè)現(xiàn)場(chǎng)控制功能。實(shí)踐證明,該系統(tǒng)運(yùn)行平穩(wěn),故障率低,基本不需維修,降低了維修費(fèi)用和電耗,取得了較好的經(jīng)濟(jì)效益。
?
參考文獻(xiàn)
[1] ?陳志軍,南新元,程志江.基于MODBUS的干河子水源地遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 電氣自動(dòng)化,2008
(2):44-46.
[2] ?華中平.TwinCAT在電梯式立體車庫中的應(yīng)用[J].工業(yè)控制計(jì)算機(jī),2006(5):6-8.
[3] ?德國(guó)倍福電氣有限公司.用于中等規(guī)??刂乒こ痰哪K化工業(yè)PC[J].機(jī)械制造, 2002(13): 30-32.
[4] ?德國(guó)倍福電氣有限公司.PC-based的開放式控制技術(shù)[J].新自動(dòng)化, 2005(4): 48-49.
[5] ?德國(guó)倍福電器有限公司.TwinCAT PLC編程手冊(cè)2.7版[M].北京:德國(guó)倍福電器有限公司北京代表處,2005.
