夜城直播_夜城直播app官方正版下载_夜城直播高品质美女在线视频互动社区

博圖環(huán)境下通過用戶程序?qū)崿F(xiàn)硬件IO自由組態(tài)的基本方法

2018/12/21 2:04:25 人評論 次瀏覽 分類:PLC應(yīng)用  文章地址:http://prosperiteweb.com/tech/2306.html

博圖環(huán)境下通過用戶程序?qū)崿F(xiàn)硬件IO組態(tài)的基本方法

一、技術(shù)背景

隨著西門子S7-1500/1200系列PLC及TIA PORTAL博圖軟件應(yīng)用的逐步推廣,在軟硬件標(biāo)準(zhǔn)化模塊化得到深入應(yīng)用的基礎(chǔ)上,一些高端用戶對PLC系統(tǒng)在柔性化應(yīng)用方面有了更多的需求:

1、在有限的硬件資源前提下最大限度地去滿足設(shè)備實(shí)際運(yùn)行使用中的各種需求:

比如某一中小型鍋爐控制系統(tǒng),其基本控制功能涉及的控制設(shè)備(比如燃燒器,主輔循環(huán)泵,主回路閥門,溫度壓力流量傳感器等)是確定不變的,但根據(jù)客戶需求的不同有些輔助設(shè)備(補(bǔ)水泵,風(fēng)機(jī),補(bǔ)水閥,調(diào)節(jié)閥,泄壓閥,輔助電源等)是否使用及其使用數(shù)量是有變化的,由于中小型供暖鍋爐的控制系統(tǒng)一般據(jù)均采用小型PLC控制系統(tǒng),硬件IO的擴(kuò)展能力有限,控制系統(tǒng)的安裝空間有限,所以鍋爐制造廠家在系統(tǒng)標(biāo)配的基礎(chǔ)上,希望利用系統(tǒng)多余的IO點(diǎn),能在一定程度上靈活應(yīng)對上述設(shè)備需求的變化,簡化控制系統(tǒng)和程序,實(shí)現(xiàn)標(biāo)準(zhǔn)化。

2、在一定規(guī)模的硬件資源下力求達(dá)到系統(tǒng)的最大靈活性:

比如某汽車總裝車間的線邊倉科的撿料防錯(cuò)系統(tǒng),每當(dāng)車型轉(zhuǎn)換投產(chǎn),線邊倉庫的部件庫位位置及數(shù)量都會有較大的變化,撿料防錯(cuò)系統(tǒng)的指示燈傳感器也會被相應(yīng)地重新部署,這樣庫位與指示燈傳感器對應(yīng)關(guān)系會發(fā)生變化,不同型號的指示燈傳感器(對應(yīng)不同的IO數(shù)量)使用數(shù)量也會發(fā)生變化,重新組態(tài)庫位與指示燈傳感器的對應(yīng)關(guān)系,以往需要修改并更新控制系統(tǒng)的程序,這需要專業(yè)的工程師才能做,那么如何能實(shí)現(xiàn)不修改控制系統(tǒng)程序,僅由普通生產(chǎn)管理人員通過人機(jī)界面以修改參數(shù)的形式重新組態(tài)庫位呢?

我們知道,西門子的S7系統(tǒng)早已實(shí)現(xiàn)了硬件配置用戶程序再組態(tài)的功能,S7-300/400/1200/1500/均可由用戶程序?qū)崿F(xiàn)分站一級到模塊級別硬件再配置功能,然而這是硬件層面的解決方案,并不能滿足上述兩個(gè)例子的需求,因此還要通過軟件層面的配合來最終實(shí)現(xiàn)設(shè)計(jì)要求。在解決上述新的應(yīng)用需求的實(shí)踐過程中,黃芩提出了一種在博圖環(huán)境下通過用戶程序?qū)崿F(xiàn)硬件IO可自由組態(tài)的基本編程方法,拋磚引玉,與大家共同探討并開拓PLC柔性化系統(tǒng)程序設(shè)計(jì)的方法與思路。

為了便于說明問題,我們把目標(biāo)控制系統(tǒng)簡化成一個(gè)簡單的單純的MCC控制系統(tǒng),該MCC控制系統(tǒng)滿足如下已知條件:
1、滿足若干個(gè)直接啟停電機(jī)的控制的硬件IO的需求;
2、每個(gè)電機(jī)包括啟動、停止、故障復(fù)位,故障反饋4個(gè)輸入信號;運(yùn)行輸出,故障指示2個(gè)輸出信號;
3、電機(jī)控制功能塊是已經(jīng)經(jīng)過測試并封裝好的FB(功能塊);

系統(tǒng)控制程序?qū)崿F(xiàn)要求:
1、實(shí)現(xiàn)在設(shè)計(jì)范圍內(nèi)對任意一臺電機(jī)的可靠控制;
2、電機(jī)控制程序?qū)?yīng)的硬件IO點(diǎn)可通過用戶程序?qū)崿F(xiàn)自由定義,使控制系統(tǒng)能按實(shí)際硬件IO接線及定義正確地完成控制任務(wù);
3、必須使用且不能修改已封裝的FB塊;
4、不允許修改控制程序及重新下載控制程序(包括數(shù)據(jù)塊)的方式,只能通過在線修改參數(shù)方式來實(shí)現(xiàn)控制對象硬件IO的定義;
5、實(shí)現(xiàn)方法力求簡單易行,不占用過多的系統(tǒng)資源;
6、博圖V14版本編程環(huán)境下,S7-1200/1500程序通用。

二、方案分析與實(shí)現(xiàn)
一個(gè)基于S7-1200PLC的小型MCC控制系統(tǒng)
圖1所示系統(tǒng)是一個(gè)基于S7-1200PLC的小型MCC控制系統(tǒng)示例,由以下元器件組成:
CPU1215C DC/DC/DC×1
EM223 16DI DC/16DO DC×3
是一個(gè)以開關(guān)量信號為主的簡單控制系統(tǒng),其IO點(diǎn)滿足一個(gè)小型MCC控制系統(tǒng)的點(diǎn)數(shù)需求。

啟停控制帶故障保護(hù)邏輯的電機(jī)控制功能塊
圖2是一個(gè)常見的啟??刂茙Ч收媳Wo(hù)邏輯的電機(jī)控制功能塊,有4個(gè)bool輸入變量,2個(gè)bool輸出變量,并且封裝成一個(gè)標(biāo)準(zhǔn)的功能塊FB1,我們以此功能塊為例代表已有的成熟的控制功能,希望在不對該功能塊做任何改變的基礎(chǔ)上,能夠?qū)崿F(xiàn)控制器硬件IO由用戶程序自由定義,并且控制系統(tǒng)能按實(shí)際硬件IO接線及定義基于該功能塊正確地完成MCC控制系統(tǒng)的控制任務(wù)。

電機(jī)直接控制功能塊在博圖中的傳統(tǒng)調(diào)用方式
圖3為示例中電機(jī)直接控制功能塊在博圖中的傳統(tǒng)調(diào)用方式,功能塊多次調(diào)用,生成多個(gè)對應(yīng)的背景數(shù)據(jù)塊,每次調(diào)用其輸入輸出參數(shù)均為實(shí)參賦值,顯式調(diào)用,多重背景調(diào)用亦是如此。如果某一個(gè)電機(jī)控制塊的對應(yīng)的硬件IO點(diǎn)需要修改,則需要修改程序并重新下載,系統(tǒng)才能按新的硬件IO對應(yīng)方式進(jìn)行工作。

如何可以不需要修改并重新下載程序,僅僅通過修改運(yùn)行程序的數(shù)據(jù),就能改變控制功能塊與硬件IO對應(yīng)關(guān)系呢?
顯然只有通過間址尋址的方式才能實(shí)現(xiàn)硬件IO變址訪問的要求,博圖V14版本以上只有SCL編程語言的PEEK_BOOL/POKE_BOOL指令可以比較方便的實(shí)現(xiàn)對硬件IO位地址的間址尋址,即間址讀寫訪問。

硬件IO地址說明表
圖4為通過PEEK_BOOL / POKE_BOOL 指令實(shí)現(xiàn)硬件IO位地址間址尋址的硬件IO地址說明表,采用UDT形式,以便后續(xù)程序中多次調(diào)用,變量具體說明如下:
           Area: 16#81 代表輸入 (Input)
                       16#82 代表輸出 (Output)
Byte_Offset: 字節(jié)地址 >= 0
   Bit_Offset: 位地址 0-7位
          Value: IO位變量的值,輸入為寫操作,輸出為讀操作
         Status: 16#00 代表IO未被使用 Deactivated
                        16#01 代表IO被使用 Activated
                        16#FF 代表IO說明錯(cuò)誤 Fault

IO變址映射功能FC1000
圖5為IO變址映射功能FC1000,SCL語言編寫,輸入輸出通用,根據(jù)硬件IO地址說明表中指定的硬件IO地址讀取輸入點(diǎn)的狀態(tài)或刷新輸出點(diǎn)的狀態(tài),每個(gè)硬件IO位調(diào)用一次。

我們引入控制對象的概念,示例中每一個(gè)電機(jī)就是一個(gè)控制對象,每個(gè)電機(jī)控制對象包括了4個(gè)位輸入,2個(gè)位輸出,1個(gè)背景數(shù)據(jù)塊,通過控制對象硬件IO表(UDT)將每個(gè)控制對象的硬件IO關(guān)聯(lián)到一起。可以有以下兩種定義方式:
直接根據(jù)控制對象硬件IO的名稱定義控制對象硬件IO表
圖6所示直接根據(jù)控制對象硬件IO的名稱定義控制對象硬件IO表,這種方式后續(xù)再封裝程序的可讀性強(qiáng)一些,與控制功能塊的輸入輸出管腳定義是一致的,即控制對象硬件IO表與控制功能塊輸入輸出是明確指定關(guān)聯(lián)關(guān)系的。然而一個(gè)控制系統(tǒng)的控制對象往往是多樣化的,其硬件IO的數(shù)量和類型也會不同,這樣做的結(jié)果是不同的控制對象,就要定義一個(gè)對應(yīng)的控制對象硬件IO表,導(dǎo)致編程過于繁瑣,另外也不利于控制功能塊多次調(diào)用后實(shí)現(xiàn)對硬件IO表的訪問的編程;

采用數(shù)組形式定義控制對象硬件IO表
圖7所示采用數(shù)組形式定義控制對象硬件IO表,只要數(shù)組變量的數(shù)量滿足需求,可以事先不用確定數(shù)組變量關(guān)聯(lián)的硬件IO其類型究竟是輸入還是輸出,滿足程序標(biāo)準(zhǔn)化柔性化的要求。

圖9-12為基于原控制功能塊FB1基礎(chǔ)上再進(jìn)行封裝的硬件IO可定義的控制功能FC100,實(shí)際上就是通過IO變址映射功能FC1000將一個(gè)未指定的控制對象硬件IO表與原控制程序FB1進(jìn)行了關(guān)聯(lián),F(xiàn)C100的每一次調(diào)用就代表了一個(gè)硬件IO可自由定義的控制對象。

封裝好的硬件IO可定義的控制功能塊FC100

當(dāng)然硬件IO表中的元素是否一定要與原控制程序FB1關(guān)聯(lián),也是可以自由選擇的,本例中考慮多個(gè)控制對象的故障復(fù)位命令信號可能會共用同一個(gè)變量,因此FB1的Reset參數(shù)就未與控制對象硬件IO定義表關(guān)聯(lián),而是單獨(dú)直連FC100的同名輸入變量了。
圖13-14是一個(gè)具有10個(gè)控制對象的小型MCC控制功能塊FB100的完整示例程序,在保留原有傳統(tǒng)控制功能塊FB1的控制功能的基礎(chǔ)上,又實(shí)現(xiàn)了任意一個(gè)控制對象的硬件IO點(diǎn)可自由定義的功能,且硬件IO點(diǎn)的關(guān)聯(lián)與激活亦可由用戶靈活決定。

由于底層的硬件IO地址說明表采用了結(jié)構(gòu)數(shù)據(jù),中間層控制對象硬件IO表及頂層控制對象功能調(diào)用均采用了數(shù)組結(jié)構(gòu)形式,因此整體控制程序結(jié)構(gòu)變得極為簡單,循環(huán)調(diào)用即可,數(shù)組結(jié)構(gòu)也使得每個(gè)控制對象關(guān)聯(lián)的硬件IO地址說明表很容易通過間址尋址的方式實(shí)現(xiàn)讀寫訪問,甚至是不同的控制對象且每個(gè)控制對象關(guān)聯(lián)著不同數(shù)量的硬件IO點(diǎn)。

由此可見,在博圖環(huán)境下通過上述的編程思路和方法,硬件IO可定義MCC控制功能塊的程序代碼得到了極大的精簡,且控制對象的數(shù)量多少以及每個(gè)控制對象關(guān)聯(lián)硬件IO點(diǎn)的多少均與程序代碼量無關(guān)。

硬件IO可定義MCC控制功能塊在OB1的調(diào)用




圖15為硬件IO可定義MCC控制功能塊在OB1的調(diào)用,我們可以通過變量修改的方式修改DB100中IO_Obj數(shù)組變量關(guān)聯(lián)的硬件IO點(diǎn),示例中激活了3個(gè)控制對象關(guān)聯(lián)的硬件IO點(diǎn),分別位于S7-1200不同的IO擴(kuò)展模塊上,地址定義如圖16-18所示:

三、應(yīng)用體會
1、博圖的創(chuàng)新平臺,使得通過用戶程序?qū)崿F(xiàn)硬件IO自由組態(tài)成為可能,可保留原有傳統(tǒng)的成熟應(yīng)用的控制功能塊,無需對原有功能塊進(jìn)行改造,不需要復(fù)雜的編程,在梯形圖下即可很容易地實(shí)現(xiàn)(示例中的硬件IO變址映射功能FC1000亦可在梯形圖環(huán)境下編程,只是在使用PEEK/POKE指令時(shí)需插入SCL語言程序段),并且實(shí)現(xiàn)S7-1200/1500通用化。

2、示例中是針對一個(gè)功能塊FB來實(shí)現(xiàn)其輸入輸出參數(shù)硬件IO地址用戶程序可組態(tài)的功能的,然而在實(shí)際編程中發(fā)現(xiàn)FB的多重背景應(yīng)用是可以數(shù)組化的(含V14版本以上),但參數(shù)實(shí)例只能是單個(gè)的數(shù)據(jù)塊定義而無法數(shù)組化定義的,這給編程的靈活性還是帶來了一定的影響。

因此多控制對象應(yīng)用必須通過FB的多重背景才能實(shí)現(xiàn),期望博圖軟件在這方面能夠更有進(jìn)一步的創(chuàng)新,以方便用戶程序開發(fā)。
反之,這也讓我們看到了另一種可能性,即用FC加全局DB替代FB(這種方式編程在S7-300/400/1200/1500的軟件開發(fā)中不常見),利用全局?jǐn)?shù)據(jù)比較容易實(shí)現(xiàn)數(shù)組化的特點(diǎn),同樣在原有程序基礎(chǔ)上實(shí)現(xiàn)硬件IO地址用戶程序可組態(tài),也許這樣編程方法會更加的靈活簡單。

3、有一種情況我在前面應(yīng)用背景的描述中沒有提及,即IO點(diǎn)如果損毀,那么我們不用修改程序就可以替換IO點(diǎn)了。的確是可以這么做,而且很容易實(shí)現(xiàn),這是硬件IO用戶程序可組態(tài)的編程方法實(shí)現(xiàn)帶來的“副作用”,當(dāng)然這是有益的“副作用”,但是當(dāng)初的確也沒有以“損毀IO無編程替換”為目的來做這項(xiàng)軟件開發(fā)的,沒有引入控制對象的概念,如果這么做反而是有難度的了。

4、本文講述了在博圖環(huán)境下通過用戶程序?qū)崿F(xiàn)硬件IO自由組態(tài)的基本方法,還是原理性質(zhì)的,其真正要應(yīng)用到實(shí)際的項(xiàng)目中去,仍舊有很多的實(shí)際的技術(shù)問題需要去解決的,比如:
①在嘗試使用精簡型面板為上述系統(tǒng)開發(fā)一個(gè)簡易的硬件IO地址參數(shù)設(shè)置界面時(shí),發(fā)現(xiàn)在優(yōu)化數(shù)據(jù)塊訪問即全符號名訪問的設(shè)置下,HMI還是只能實(shí)現(xiàn)一維的數(shù)組變量的變址訪問(圖21所示),其結(jié)果如圖20所示,IO地址參數(shù)設(shè)置界面的形式就只能與具體的控制對象綁定了;因此在目前博圖的技術(shù)能力下,要實(shí)現(xiàn)“去控制對象化”的通用標(biāo)準(zhǔn)化的硬件參數(shù)設(shè)置界面功能,還是需要通過PLC及HMI兩者緊密的編程配合來實(shí)現(xiàn)。

同時(shí),面對數(shù)量眾多的硬件IO點(diǎn)的地址表,通過HMI逐一手工輸入的方式并不可取,費(fèi)時(shí)費(fèi)力枯燥易錯(cuò),HMI只能適合少量人工輸入及修改;因此,還是要有更簡便高效的方案來實(shí)現(xiàn)(比如通過計(jì)算機(jī)EXCEL文件編輯硬件IO地址表,把它導(dǎo)出為格式文件,然后拷貝到PLC的MMC卡,再由PLC程序讀取格式文件的數(shù)據(jù)到內(nèi)部數(shù)據(jù)塊的方式)。


②在實(shí)際應(yīng)用中,PLC硬件的組態(tài)是變化的,實(shí)際可尋址的IO物理地址范圍也是變化的,因此,實(shí)現(xiàn)硬件IO地址尋址范圍的合法性判斷,從而避免程序的尋址錯(cuò)誤也是很有必要的。

③本文闡述的硬件IO用戶程序可組態(tài)的編程實(shí)現(xiàn)方法,使得程序的硬件IO尋址由顯式尋址改為隱式尋址,因此通過程序代碼來檢查某個(gè)硬件IO是否被重復(fù)使用的可能性幾乎沒有,尤其輸出類型的硬件IO點(diǎn)是需要嚴(yán)格限制重復(fù)訪問的(不僅僅是輸出多線圈問題,還有多控制對象使用同一輸出點(diǎn)的安全性問題),因此硬件IO點(diǎn)地址參數(shù)設(shè)置查重也是一個(gè)很重要的技術(shù)點(diǎn),似乎每設(shè)定一個(gè)硬件IO點(diǎn)的地址就要比對所有已有的硬件IO地址的方法是不可取的,這個(gè)運(yùn)算量不是一個(gè)普通PLC能夠勝任的。

④在實(shí)際應(yīng)用中控制對象IO定義動態(tài)修改所引發(fā)的控制系統(tǒng)安全隱患也必須引起足夠的重視,并且要有可靠的對策;輸入點(diǎn)的再定義會導(dǎo)致控制信號產(chǎn)生額外的信號變化,輸出點(diǎn)的再定義會導(dǎo)致被替換輸出點(diǎn)的失控以及替換輸出點(diǎn)意外輸出或切斷,因此本實(shí)現(xiàn)方法實(shí)際并不適合IO定義的動態(tài)修改,比較安全的做法是在設(shè)備整體停運(yùn),主動力電源被有效切斷的前提下,IO再定義功能才能被激活使用,并且應(yīng)配合HMI的權(quán)限管理功能。

⑤PLC如何永久保存已經(jīng)設(shè)置好的硬件IO點(diǎn)的地址參數(shù),在經(jīng)歷了PLC長時(shí)間斷電,斷電重啟,數(shù)據(jù)區(qū)總清復(fù)位后,系統(tǒng)如何能夠依舊正常地工作。西門子S7系統(tǒng)事實(shí)上也已經(jīng)提供了很好的解決方案,示例中如圖16-18所示的背景數(shù)據(jù)塊DB100中Ctrl_Object_DB.IO_Obj的數(shù)組結(jié)構(gòu)是存儲硬件IO點(diǎn)的地址參數(shù)的數(shù)據(jù)區(qū),我們可以通過WRIT_DBL指令將該數(shù)組結(jié)構(gòu)的內(nèi)容拷貝到CPU具有“僅存儲在裝載內(nèi)存中”屬性的數(shù)據(jù)塊中,起到永久保存設(shè)置參數(shù)的作用;等到系統(tǒng)重新上電初始化時(shí),我們通過OB100觸發(fā)READ_DBL指令,將備份的數(shù)據(jù)又拷貝到CPU工作內(nèi)存中的DB100 Ctrl_Object_DB.IO_Obj的數(shù)組結(jié)構(gòu)中去,恢復(fù)因斷電或總清而被清除的設(shè)置參數(shù)。

博圖下通過用戶程序?qū)崿F(xiàn)硬件IO自由組態(tài)的基本方法,為各類自動化控制系統(tǒng)實(shí)現(xiàn)軟硬件層面的模塊化,標(biāo)準(zhǔn)化,柔 性化設(shè)計(jì)提供了又一種切實(shí)可行的方案,也體現(xiàn)了博圖平臺與S7-1200/1500系列PLC的卓越性能,相信隨著博圖平臺的不 斷完善,一定能助力西門子自動化用戶實(shí)現(xiàn)更多更好的創(chuàng)新應(yīng)用,創(chuàng)造出更大的價(jià)值!

共有訪客發(fā)表了評論 網(wǎng)友評論

  客戶姓名:
郵箱或QQ:
驗(yàn)證碼: 看不清楚?