在上一章節(jié)中我們對(duì)符號(hào)尋址進(jìn)行了系統(tǒng)學(xué)習(xí)腔稀,(參見(jiàn)西門子PLC控制器技術(shù)之六:符號(hào)尋址 http://www.reibang.com/p/32170b46351b )槽地,知道了什么是絕對(duì)尋址瓜富,什么是符號(hào)尋址圣拄,以及符號(hào)表及其相關(guān)功能的應(yīng)用绅你。
通過(guò)前面章節(jié)的學(xué)習(xí)纪岁,我們已經(jīng)能夠創(chuàng)建自己項(xiàng)目的硬件組態(tài)凑队、找到現(xiàn)場(chǎng)設(shè)備的I/O點(diǎn),對(duì)CPU屬性等參數(shù)進(jìn)行相關(guān)設(shè)置幔翰,編輯項(xiàng)目所需要的符號(hào)表等漩氨,本章將學(xué)習(xí)CPU運(yùn)行機(jī)制及原理的重要內(nèi)容——CPU程序塊塊結(jié)構(gòu)。
程序塊的類型
在PLC項(xiàng)目程序中遗增,Blocks中常見(jiàn)的塊有組織塊OB叫惊、功能FC、功能塊FB做修、數(shù)據(jù)塊DB霍狰、以及系統(tǒng)功能SFC、系統(tǒng)功能塊SFB和系統(tǒng)數(shù)據(jù)塊SDB饰及。
那么蔗坯,它們之間的關(guān)系是怎樣的呢?如下圖所示燎含,所有的塊都是通過(guò)組織塊進(jìn)行組織的宾濒,而組織塊是可以直接被編程電腦的操作系統(tǒng)直接調(diào)用。其他諸如FC屏箍、FB鼎兽、SFC、SFB中都可以編寫(xiě)程序铣除,但是最終一定要被組織塊OB調(diào)用;DB是用來(lái)存放數(shù)據(jù)的谚咬,分為共享數(shù)據(jù)和背景數(shù)據(jù)塊,共享數(shù)據(jù)塊中的數(shù)據(jù)可以被全部的塊調(diào)用尚粘,而背景數(shù)據(jù)是私有的择卦,每一個(gè)FB/SFB在調(diào)用時(shí)都需要一個(gè)背景數(shù)據(jù)塊DB/SDB。
組織塊又分為循環(huán)郎嫁、定時(shí)秉继、過(guò)程診斷、故障處理等類型泽铛,最常用的是循環(huán)組織塊OB1尚辑,當(dāng)然還有OB10、OB35盔腔、OB80~86杠茬,OB121月褥、OB122等,組織塊的具體用法我們?cè)诤罄m(xù)組織塊章節(jié)中詳細(xì)講解瓢喉。
注意宁赤,每一個(gè)組織塊的功能都是特定的,不能像FB或者FC那樣隨意創(chuàng)建塊的序號(hào)栓票。如果你對(duì)某一個(gè)組織塊功能不了解决左,這里推薦一個(gè)簡(jiǎn)便的方法,選中某一不了解的組織塊走贪,按F1佛猛,會(huì)彈出相關(guān)的幫助文檔。
輸入/輸出過(guò)程映像
西門子PLC一個(gè)重要的運(yùn)行原理機(jī)制就是過(guò)程映像區(qū)坠狡,包括輸入和輸出兩個(gè)區(qū)域继找。這是CPU的兩個(gè)內(nèi)部存儲(chǔ)區(qū)域。
PII:Process-Image Input Table擦秽,輸入過(guò)程映像區(qū)码荔,在程序周期開(kāi)始的時(shí)候讀入該映像;
PIQ:Process-Image Output Table感挥,輸出過(guò)程映像區(qū)缩搅,在程序周期結(jié)束時(shí)傳送給輸出模塊。
如下圖所示触幼,在程序掃描周期開(kāi)始的時(shí)候硼瓣,輸入模塊上的信號(hào)點(diǎn)狀態(tài)將會(huì)被一次性讀入到過(guò)程映像輸入?yún)^(qū)PII中,數(shù)據(jù)在PII中保存置谦,并且在程序執(zhí)行的一個(gè)掃描周期時(shí)間內(nèi)保持不變堂鲤。
在程序掃描周期的過(guò)程中,程序每需要用到一個(gè)輸入值媒峡,都直接從PII中讀取墩划,而非在輸入模塊上讀饶聪帷;同時(shí)將程序中產(chǎn)生的輸出值保存在過(guò)程映像輸出區(qū)中,而不是直接輸出給輸出模塊锈至。
在程序掃描周期結(jié)束的時(shí)候隧膏,過(guò)程映像輸出區(qū)PIQ一次性將輸出值輸出到輸出模塊斗幼。
明白了上述CPU程序的運(yùn)行機(jī)制愚战,就容易理解為什么對(duì)某一個(gè)輸出點(diǎn)重復(fù)賦值會(huì)出現(xiàn)嚴(yán)重的邏輯錯(cuò)誤了吧?而且重復(fù)賦值的錯(cuò)誤系統(tǒng)是不會(huì)自動(dòng)檢測(cè)出來(lái)的氯檐,但是我們期望實(shí)現(xiàn)的功能不能被實(shí)現(xiàn)戒良。
循環(huán)程序執(zhí)行
明白了CPU 程序塊結(jié)構(gòu)和過(guò)程映像區(qū)的原理機(jī)制后,我們可以看看CPU中循環(huán)程序運(yùn)行的過(guò)程是怎樣的冠摄。
如下圖所示糯崎,從暖啟動(dòng)開(kāi)始几缭,首先調(diào)用啟動(dòng)組織塊OB100,執(zhí)行一次OB100程序拇颅,有輸出就輸出PIQ一次奏司;然后開(kāi)啟循環(huán)監(jiān)視時(shí)間乔询,在進(jìn)入主程序前從輸入模塊讀入信號(hào)狀態(tài)樟插,并將其存放在過(guò)程映像輸入?yún)^(qū)PII,然后執(zhí)行OB1主循環(huán)程序竿刁,程序掃描到最后黄锤,將得到的過(guò)程映像輸出區(qū)PIQ的值輸出到輸出模塊,開(kāi)啟下一次循環(huán)食拜。
以上就是本章專題的主要內(nèi)容鸵熟,思考以下幾個(gè)問(wèn)題,可以幫您鞏固所學(xué)內(nèi)容:
STEP7中有哪些類型程序塊负甸?
為什么要設(shè)置過(guò)程映像輸入輸出區(qū)流强?
說(shuō)說(shuō)循環(huán)程序執(zhí)行的過(guò)程?