《電子技術應用》
您所在的位置:首頁 > 其他 > 业界动态 > 基于TwinCAT 的PLC水源地远程监控系统开发设计

基于TwinCAT 的PLC水源地远程监控系统开发设计

2009-05-05
作者:陈志军1, 徐东进2, 程志江1

  摘? 要: 介紹了TwinCAT自動化軟件,利用它將上位PC機轉換成具有多PLC系統、編程環(huán)境和操作站的一個實時控制器,通過RS485總線將BC8100 PLC與上位PC機相連,并對數據內存區(qū)進行統一設置分配,編程實現了水源地遠程監(jiān)控系統的設計開發(fā)。
  關鍵詞: 倍福PLC; TwinCAT; 內存地址; 內存配置; 遠程監(jiān)控

?

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

?


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

?


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

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


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

  PLC數據存儲區(qū)的統一設置,靈活、合理地規(guī)劃出各部分的內存空間,是軟件設計的基礎和保證,也是整個PLC系統實現控制的關鍵所在。同時使編程修改調試都很方便,大大縮短了調試時間,提高了系統的自動化程度,降低了硬件的復雜程度。通過 Beckhoff 基于PC機的控制技術,可以借助軟件實現水源地遠程監(jiān)控功能。通過這種方式,可以提供最大限度的靈活性,顯著降低工程成本。綜合、全面的 TwinCAT控制功能庫涵蓋了所有主要的工業(yè)現場控制功能。實踐證明,該系統運行平穩(wěn),故障率低,基本不需維修,降低了維修費用和電耗,取得了較好的經濟效益。

?

參考文獻
[1] ?陳志軍,南新元,程志江.基于MODBUS的干河子水源地遠程監(jiān)控系統的設計與實現[J]. 電氣自動化,2008
(2):44-46.
[2] ?華中平.TwinCAT在電梯式立體車庫中的應用[J].工業(yè)控制計算機,2006(5):6-8.
[3] ?德國倍福電氣有限公司.用于中等規(guī)??刂乒こ痰哪K化工業(yè)PC[J].機械制造, 2002(13): 30-32.
[4] ?德國倍福電氣有限公司.PC-based的開放式控制技術[J].新自動化, 2005(4): 48-49.
[5] ?德國倍福電器有限公司.TwinCAT PLC編程手冊2.7版[M].北京:德國倍福電器有限公司北京代表處,2005.

本站內容除特別聲明的原創(chuàng)文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。

相關內容