官术网_书友最值得收藏!

1.1 PLC程序概念

關鍵詞:程序、指令、PLC函數、PLC功能塊、PLC程序塊、PLC程序組織單元(POU)、PLC任務、PLC工程

PLC編程標準對程序的定義是:“所有編程語言元素和結構的一個邏輯集合”。傳統或低檔PLC編程語言元素和結構只是指令(包含操作數),它的程序簡單地說,就是PLC指令的一個有序(邏輯)集合。所以,它的編程使用手持編程器也就可以了。

新一代或高檔PLC的語言元素和結構,除了指令,還有功能、功能塊。其PLC程序則是由若干程序塊組成。而一個程序塊可以調用指令、函數塊、功能塊,也可調用其他程序塊。程序塊還可與任務相關聯,由不同的任務激活。而任務則通過工程與使用PLC硬件資源相關聯。所以,它的編程要用計算機,使用編程軟件,通過建立工程予以實施。

PLC就是依靠運行這個程序,才得以實現它的功能。PLC的程序一般由用戶設計,PLC廠商或代銷商不提供。以下將對以上與編程相關概念作簡要說明。

1.1.1 PLC指令

PLC指令(Instruction),也有的廠商叫操作(Operation),是用以告知PLC做什么,以及怎樣去做的文字代碼或圖形符號。這里的做什么、怎樣去做,主要是指CPU對PLC的各種寄存器、內存及外設的緩沖器的各種數據傳送或變換。

依使用PLC編程語言的不同,這些代碼或符號也不相同。但從本質上講,指令只是一些二進制代碼,即機器碼。這點,PLC與普通計算機是完全相同的。如同普通計算機一樣,PLC編程軟件也有編譯系統。它可把一些文字代碼或圖形符號編譯成機器代碼。所以,用戶所看到的PLC指令一般不是機器代碼,而是文字代碼或圖形符號。

如LD%IX0.0,就是一條文字指令。它由兩部分組成。LD為裝載操作碼,%IX0.0為操作數(一個輸入點的物理地址)。兩者結合在一起,就是令CPU把操作數%I0.0的狀態0或1,賦值給CPU累加器(Accumulator)。如

978-7-111-39745-8-Chapter02-1.jpg

則是一條圖形符號指令。它功能是使CPU累加器的現值賦值給輸出點%Q0.0。再如

978-7-111-39745-8-Chapter02-2.jpg

也是一條圖形符號指令。它有3個操作數。兩個輸入(變量var1、var2),一個輸出(變量var3)。目的是對兩個輸入變量進行加運算。結果輸出給輸出變量。

1.1.2 PLC功能(Function)

功能也稱函數。PLC編程標準對它的定義是:“在執行時,它準確地產生一個數據元素和可能的其他輸出變量,并且在文本語言中,可使用它的調用如同對表達式中的操作數那樣”。說得通俗點,功能就是,PLC一組指令的有序集合,能將若干輸入變量按某個特定規律轉換成一個數據類型的輸出。而這個輸出的結果則被返回給函數本身,即它的返回值。如其輸出為數組或結構,雖有多個(元素),但實質還是一個(數組或結構)。

函數可直接調用,其輸出不被保存。所以也稱沒有記憶(without memory)的一組指令集合。這意味著,用相同的輸入調用函數時,其輸出總是相同的。圖1-1所示為和利時PLC系統提供的一個進行字符串處理的函數。

978-7-111-39745-8-Chapter02-3.jpg

圖1-1 字符串處理函數

其功能是字符串var1與字符串var2相加(合并),然后賦值給字符串var3。如var1=978-7-111-39745-8-Chapter02-4.jpgabc978-7-111-39745-8-Chapter02-5.jpg,var1=978-7-111-39745-8-Chapter02-6.jpgefg978-7-111-39745-8-Chapter02-7.jpg,此指功能執行后則var3=978-7-111-39745-8-Chapter02-8.jpgabcdef978-7-111-39745-8-Chapter02-9.jpg

一個函數還可調用另一個函數。但不能直接、間接地調用自身,即不允許遞歸調用。

函數是建立在指令基礎之上的。簡單的函數也可看成是指令。如三角函數、對數函數,也可看成數學計算指令。傳統的PLC及其他很多PLC也都是這么處理的。

PLC函數分系統函數與用戶函數,分別集成在相關函數庫中。系統函數由PLC廠商提供,西門子稱SFC。PLC檔次越高,廠商提供函數也越多。用戶函數可由用戶編寫與生成,西門子稱之為FC。

1.1.3 PLC功能塊(Functionblock)

根據PLC編程標準對功能塊的定義是,能對若干輸入變量進行處理,進而產生輸出(一般為多個),或能執行某個特定操作。功能塊要用實例(Instance)調用。在程序中,可創建多個實例。每個實例應具有一個相關的標識符(實例名稱)和包含其輸出和內部變量的一個數據結構,以及與實例有關的輸入變量值或輸入變量的引用。

功能塊與函數不同,它沒有返回值。但它的輸出被永久保存在功能塊的實例中。所以也稱有記憶(with memory)的一組指令塊。也因此,同樣的實例,不同的程序掃描周期其輸出可能是不同的。在功能塊實例的外部,只有輸入和輸出變量可存取,而功能塊的內部變量對功能塊的用戶是隱藏的。

圖1-2所示為和利時PLC系統提供的一個增計數的功能塊。這里的實例命名為C1。

978-7-111-39745-8-Chapter02-10.jpg

圖1-2 增計數的功能塊

它的功能是實現增計數。與西門子PLC增計數指令的功能相同。該圖上方的C1為實例名。圖形左邊的CU、RESET、PV(使用時的書寫為C1.CU、C1.RESET、C1.PV)為功能塊的輸入端,右邊的Q、CV(使用時的書寫為C1.Q、C1.CV)為功能塊的輸出端。當這里的復位端(RESET)OFF,計數輸入端(CU)信號每從OFF到ON一次,則計數功能塊實例C1的現值加1。計數功能塊現值輸出(CV)端,輸出計數功能塊的當前計數值。當計數值大、等于計數設定值(PV)時,計數功能塊輸出(Q)端ON。當復位端ON時,停止計數,且計數功能塊現值復位為0。

一個功能塊還可調用另一個功能塊。但不能直接、間接地調用自身,即也不允許遞歸調用。

生成功能塊要用到指令或函數。所以,功能塊是建立在指令與函數基礎之上的。簡單的功能塊也可看成是指令。如上述計數功能塊也可說成是增計數指令。傳統的PLC及其他很多PLC也都是這么處理的。所不同的只是計數功能塊指定實例的數量多少不受限制。而計數指令要用到PLC內部器件(計數器),其使用數量要受PLC提供的計數器數量限制。

功能塊也可只有一個輸出。這樣的功能塊與函數沒有什么太大區別。所以,有的PLC,如歐姆龍,就只有功能塊,而不用函數。只是函數可在結構化文本語言的表達式的中調用,而功能塊則不能。

PLC功能塊也分系統功能塊與用戶功能塊,分別集成在相關功能塊庫中。系統功能塊由PLC廠商提供,西門子稱SFB。PLC檔次越高,廠商提供功能塊也越多。用戶功能塊由用戶編寫與生成,西門子稱自建的功能塊為FB。

1.1.4 PLC程序塊(POU)

以上介紹的函數、功能塊,PLC編程標準稱之為程序組織單元(Program Organization Unit)。而這里介紹的程序塊也是POU。函數、功能塊雖是POU,但它們不能獨立運行。只有程序塊這個POU可通過系統管理使其獨立運行。

程序塊分為主程序塊和一般程序塊。主程序塊是每個PLC程序所必須有的。PLC處運行狀態時,將周而復始或周期地運行此程序塊。而其他程序塊則必須經調用,或由PLC的事件觸發才能運行。只是不同的PLC此程序塊用的名稱不同。如ABB、和利時PLC,其主程序稱PLC-PRG(不能改名)。再如西門子高檔機為OB1。而非主程序塊多可任意命名。

低檔或傳統PLC程序只有一個程序塊。但其中含有很多子程序。而新一代或高檔PLC可以沒有子程序。但程序塊都可相互調用。只是不能直接或間接調用自己,即也不能遞歸調用。

圖1-3所示為西門子S7-1200機若干程序塊。圖中OB1為主程序塊。它由PLC操作系統管理,并使其連續循環運行。而圖中其他OB也是程序塊,則與中斷(事件)相關聯。中斷條件具備則被激活、運行。圖中FB_1、FB_2分別就是一個功能塊及其實例數據塊,其運行與否則由OB1塊調用。

978-7-111-39745-8-Chapter02-11.jpg

圖1-3 S7-1200機程序塊

提示:程序塊也稱程序。正如白馬也是馬一樣。一般講,程序(塊)、白馬是個別概念,而程序、馬是集合概念。弄清之間關系,為了與一般敘述一致,本書后續把程序塊多說成程序。

1.1.5 PLC任務(Task)

根據PLC編程標準定義,任務為周期或觸發相關程序組織單元(POU)執行而提供的控制元素。PLC程序塊總是與具體的任務相聯系的。而PLC程序則是由若干任務構成的。

不同的PLC有不同的任務劃分。如歐姆龍PLC,其任務一般分為循環任務與中斷任務。前者為定時循環執行,后者由事件觸發,條件具備才執行。在循環任務中,有個基本的任務為循環任務00(啟動),當PLC運行時,與其聯系的程序(塊)將周而復始執行著。傳統PLC一般也就只有這樣一個程序(塊)。

再如和利時PLC,其任務有循環(Cyclic)任務、自由運行(Freewheeling)任務、事件觸發(Triggered by Event)任務及外部事件觸發(Triggered by External Event)任務。創建什么樣的任務,以及任務與什么程序塊建立什么關系,則用編程軟件,在編程時,由編程人員確定。而在循環任務中,有個默認程序塊,稱PLC_PRG,當PLC處于運行狀態,就一直周而復始地運行著。其他程序塊則由PLC_PRG調用,也可由其他相關任務(Task)調用。

有的PLC沒有任務這個詞。其程序就是由不同特性的程序塊組成。從本質上講,這都與前面已介紹的PLC的實現控制方式有關。理解了PLC的實現控制方式的具體含義,這些概念也就好理解了。

1.1.6 PLC工程(Project)

工程是PLC編程及其他自動化程序的組織單位。運用它便于PLC面向對象編程及實現程序結構化。這是因為,工程包含有PLC硬件配置、程序塊以及其他自動化應用。而每個配置、程序塊或應用都有特定的功能。這樣組織的程序既便于理解與調試,又便于平行開發,可單獨開發許多單體或OEM產品,然后再予以集成與重用。

建立工程是PLC編程的開始。PLC編程也就是組織工程的過程。其基本步驟有:第一步是打開編程軟件,創建(新)工程,確定工程名稱,編輯工程屬性;第二步是選定PLC類型、CPU型號、電源及I/O等模塊,進行硬件配置(組態);第三步是做好I/O地址分配以及有關模塊的設定;最后才進行編程,如確定任務、建立程序塊、調用功能及功能塊等。此外,有的編程軟件還可編輯圖形界面,類似計算機監控軟件,可用其形象地監控PLC控制系統工作,因而還有它的擴展步驟。一個工程的具體內含有多有少,與PLC品牌、類型及型號,特別與所用的編程軟件有關。

工程也是PLC編程的歸宿,只有通過工程對所編程序進行編譯、與PLC聯機,并下載程序、設定等給PLC,所編的程序才能起作用。

工程還是PLC編程及設定等數據存儲的容器。沒有工程,這些數據無法保存,也無法調用。所存儲的工程文件有的軟件為一個,也有的為多個,并分布在多個子文件夾中。所存儲文件格式,有的還可選擇。可以是文本文件,也可是二進制文件。前者可用文本軟件閱讀,后者只能用編程軟件閱讀。但兩者都可用編程軟件打開。

多數編程軟件建立的工程可對多個PLC,以至于對多個PLC網絡進行配置(組態),并分別對多個PLC編程及調試。但有的PLC軟件工程只能針對一個PLC(如AB等PLC編程軟件)。要對多個PLC編程可打開多個編程軟件實例,分別處理不同的PLC。

提示:如使用簡易編程器編程,其所有操作,包括種種設定,全用手工實現。所以,也談不上什么工程。

提示:本節介紹的有關概念引自國標GB/T 15969.3—2005/IEC61131-3:2002及國標GB/T 15969.8—2007/IEC/TR61131-8:2003。更準確的界定請參閱該標準。

主站蜘蛛池模板: 阿坝县| 桦南县| 华蓥市| 苏尼特右旗| 新源县| 新津县| 泸州市| 商南县| 阿瓦提县| 阿拉善左旗| 安庆市| 上饶市| 和平县| 江永县| 都匀市| 开原市| 肥乡县| 武安市| 阜新市| 阜平县| 广丰县| 乌鲁木齐市| 乌拉特中旗| 广丰县| 新河县| 武鸣县| 永嘉县| 万山特区| 阳朔县| 公主岭市| 威宁| 綦江县| 建平县| 阳春市| 元江| 原阳县| 包头市| 会东县| 临猗县| 白银市| 濉溪县|