1 引言 在PLC中有多種程序設計語言,如梯形圖語言、布爾助記符語言、功能表圖語言、功能模塊圖語言及結構化語句描述語言等。梯形圖語言和布爾助記符語言是基本程序設計語言,它通常由一系列指令組成,用這些指令可以完成大多數簡單的控制功能,例如,代替繼電器、計數器、計時器完成順序控制和邏輯控制等。通過擴展或增強指令集,它們也能執行其它的基本操作。功能表圖語言和語句描述語言是高級的程序設計語言,它可根據需要去執行更有效的操作,例如,模擬量的控制,數據的操縱,報表的報印和其他基本程序設計語言無法完成的功能。功能模塊圖語言采用功能模塊圖的形式,通過軟連接的方式完成所要求的控制功能,它不僅在PLC中得到了廣泛的應用,在集散控制系統的編程和組態時也常常被采用。由于它具有連接方便、操作簡單、易于掌握等特點,為廣大工程設計和應用人員所喜愛。 2 常用的程序設計語言分類 根據PLC應用范圍,程序設計語言可以組合使用,常用的程序設計語言有以下幾種: (1) 梯形圖(Ladder Diagram)程序設計語言 梯形圖程序設計語言是用梯形圖的圖形符號來描述程序的一種程序設計語言。采用梯形圖程序設計語言,這種程序設計語言采用因果關系來描述事件發生的條件和結果,每個梯級是一個因果關系。在梯級中,描述事件發生的條件表示在左面,事件發生的結果表示在右面。 梯形圖程序設計語言是最常用的一種程序設計語言,它來源于繼電器邏輯控制系統的描述。在工業過程控制領域,電氣技術人員對繼電器邏輯控制技術較為熟悉。因此,由這種邏輯控制技術發展而來的梯形圖受到歡迎,并得到廣泛的應用。 梯形圖程序設計語言的特點是: ·與電氣操作原理圖相對應,具有直觀性和對應性; ·與原有繼電器邏輯控制技術相一致,易于撐握和學習; ·與原有的繼電器邏輯控制技術的不同點是:梯形圖中的能流(Power FLow)不是實際意義的電流,內部的繼電器也不是實際存在的繼電器,因此應用時需與原有繼電器邏輯控制技術的有關概念區別對待; ·與布爾助記符程序設計語言有一一對應關系,便于相互轉換和程序檢查。 (2) 布爾助記符(Boolean Mnemonic)程序設計語言 布爾助記符程序設計語言是用布爾助記符來描述程序的一種程序設計語言。布爾助記符程序設計語言與計算機中的匯編語言非常相似,采用布爾助記符來表示操作功能。 布爾助記符程序設計語言具有下列特點: ·采用助記符來表示操作功能,具有容易記憶,便于撐握的特點; ·在編程器的鍵盤上采用助記符表示,具有便于操作的特點,可在無計算機的場合進行編程設計; ·與梯形圖有一一對應關系,其特點與梯形圖語言基本類同。 (3) 功能表圖(Sepuential Function Chart)程序設計語言 功能表圖程序設計語言是用功能表圖來描述程序的一種程序設計語言。它是近年來發展起來的一種程序設計語言。采用功能表圖的描述,控制系統被分為若干個子系統,從功能入手,使系統的操作具有明確的含義,便于設計人員和操作人員設計思想的溝通,便于程序的分工設計和檢查調試。功能表圖程序設計語言的特點是: ·以功能為主線,條理清楚,便于對程序操作的理解和溝通; ·對大型的程序,可分工設計,采用較為靈活的程序結構,可節省程序設計、調試時間; ·常用于系統規模校大、程序關系較復雜的場合; ·只有在活動步的命令和操作被執行,對活動步后的轉換進行掃描,因此整個程序的掃描時間較其他程序編制的程序掃描時間要短得多。 功能表圖來源于佩特利(Petri)網,由于它具有圖形表達方式,能比較簡單清楚地描述并發系統和復雜系統的所有現象,并能對系統中存在的象死鎖、不安全等反常現象進行分析和建模,在模型的基礎上可以直接編程,因此得到了廣泛的應用。近幾年推出的可編程控制器和小型集散控制系統中也已提供了采用功能表圖描述語言進行編程的軟件。 (4) 功能模塊圖(Function Block)程序設計語言 功能模塊圖程序設計語言是采用功能模塊來表示模塊所具有的功能,不同的功能模塊有不同的功能。它有若干個輸入端和輸出端,通過軟連接的方式,分別連接到所需的其它端子,完成所需的控制運算或控制功能。功能模塊可 以分為不同的類型,在同一種類型中,也可能因功能參數的不同而使功能或應用范圍有所差別,例如,輸入端的數量、輸入信號的類型等的不同使它的使用范圍不同。由于采用軟連接的方式進行功能模塊之間及功能模塊與外部端子的連接,因此控制方案的更改、信號連接的替換等操作可以很方便實現。功能模塊圖程序設計語言的特點是: ·以功能模塊為單位,從控制功能入手,使控制方案的分析和理解變得容易; ·功能模塊是用圖形化的方法描述功能,它的直觀性大大方便了設計人員的編程和組態,有較好的易操作性; ·對控制規模較大、控制關系較復錄的系統,由于控制功能的關系可以較清楚地表達出來,因此,編程和組態時間可以縮短,調試時間也能減少; ·由于每種功能模塊需要占用一定的程序內存,對功能模塊的執行需要一定的執行時間,因此,這種設計語言在大中型PLC和集散控制系統的編程和組態中才被采用。 (5) 結構化語句(Structured Text)描述程序設計語言 結構化語句描述程序設計語言是用結構化的描述語句來描述程序的一種程序設計語言。它是一種類似于高級語言的程序設計語言。在大中型的可編程序控制器系統中,常采用結構化語句描述程序設計語言來描述控制系統中各個變量的關系。它也被用于集散控制系統的編程和組態。 結構化語句描述程序設計語言采用計算機的描述語句來描述系統中各種變量之間的運算關系,完成所需的功能或操作。大多數制造廠商采用的語句描述程序設計語言與BASIC語言、PASCAL語言或C語言等高級語言相類似,但為了應用方便,在語句的表達方法及語句的種類等方面都進行了簡化。 結構化程序設計語言具有下列特點: ·采用高級語言進行編程,可以完成較復雜的控制運算; ·需要有一定的計算機高級程序設計語言的知識和編程技巧,對編程人員的技能要求較高,普通電氣人員難以完成。 ·直觀性和易操作性等較差; ·常被用于采用功能模塊等其他語言較難實現的一些控制功能的實施。 部分PLC的制造廠商為用戶提供了簡單的結構化程序設計語言,它與助記符程序設計語言相似,對程序的步數有一定的限制。同時,提供了與PLC間的接口或通信連接程序的編制方式,為用戶的應用程序提供了擴展余地。 3 PLC程序設計語言應用實例 溫度控制是許多機器的重要的構成部分。它的功能是將溫度控制在所需要的溫度范圍內,然后進行工件的加工與處理。PID控制系統是得到廣泛應用的控制方法之一,下面較為詳盡地介紹了PID溫度控制的PLC程序設計實例。 (1) 系統組成 本套系統采用Omron的PLC與其溫控單元以及Pro-face的觸摸屏所組成。系統包括CQM1H-51、擴展單元TC-101、GP577R以及探溫器、加熱/制冷單元。 (2) 觸摸屏參數設置 設002代表現在的溫度,而102表示輸出的溫度。如按下開始設置就可設置參數。需要設置的參數有6個,分別是比例帶、積分時間、微分時間、滯后值、控制周期、偏移量。它們在PLC的地址與一些開關的地址如下: 比例帶 : DM51 積分時間 : DM52 微分時間 : DM53 滯后值 : DM54 控制周期 : DM55 偏移量 : DM56 數據刷新 : 22905 (3) PLC程序 002:PID的輸入字 102:PID的輸出字 [NETWORK] Name="Action Check" //常規檢查 [STATEMENTLIST] LD 253.13 //常ON OUT TR0 CMP 002 #FFFF //確定溫控單元是否完成初始化 AND NOT 255.06 //等于 OUT 041.15 //初始化完成 LD TR0 AND 041.15 OUT TR1 AND NOT 040.10 //不在參數設置狀態 MOV DM0050 102 //將設置溫度DM50傳送給PID輸出字 LD TR1 MOV 002 DM0057 //將002傳送到DM57 [NETWORK] Name="Setting Start" //設置開始 [STATEMENTLIST] LD 253.13 OUT TR0 AND 229.05 //觸摸屏上的開始設置開關 DIFU 080.05 //設置微分 LD TR0 AND 041.15 AND 080.05 SET 040.01 //開始設置標志位1 SET 040.10 //開始設置標志位2 [NETWORK] Name="Poportion" //比例帶設置 [STATEMENTLIST] LD 040.01 OUT TR0 AND NOT 042.01 MOV #C110 102 //讀輸出邊與輸入邊的比例帶 CMP 002 #C110 //比較輸入字是否變成C110 AND 255.06 //等于 SET 042.01 //設置比例帶標志 LD TR0 AND 042.01 MOV DM0051 102 //將比例帶的設定值寫入輸出字 CMP 002 DM0051 //是否寫入 AND 255.06 SET 040.01 //復位標志1 RSET 042.01 //復位比例帶標志 SET 040.02 //向下繼續設置標志 [NETWORK] Name="Integral"http://積分時間設置 [STATEMENTLIST] LD 040.02 OUT TR0 AND NOT 042.02 MOV #C220 102 //讀輸出邊與輸入邊的積分 CMP 002 #C220 //比較輸入字是否變成C220 AND 255.06 SET 042.02 //設置積分標志 LD TR0 AND 042.02 MOV DM0052 102 //將積分的設定值寫入輸出字 CMP 002 DM0052 //是否寫入 AND 255.06 RSET 040.02 RSET 042.02 SET 040.03 //向下繼續設置標志 [NETWORK] Name="differential"http://微分時間設置 [STATEMENTLIST] LD 040.03 OUT TR0 AND NOT 042.03 MOV #C330 102 //讀輸出邊與輸入邊的微分 CMP 002 #C330 //比較輸入字是否變成C330 AND 255.06 SET 042.03 //設置微分標志 LD TR0 AND 042.03 MOV DM0053 102 //將微分的設定值寫入輸出字 CMP 002 DM0053 //是否寫入 AND 255.06 RSET 040.03 RSET 042.03 SET 040.04 //向下繼續設置標志 [NETWORK] Name="Hysteresis"http://滯后值設置 [STATEMENTLIST] LD 040.04 OUT TR0 AND NOT 042.04 MOV #C440 102 //讀輸出邊與輸入邊的滯后值 CMP 002 #C440 //比較輸入字是否變成C440 AND 255.06 SET 042.04 //設置滯后值標志 LD TR0 AND 042.04 MOV DM0054 102 //將滯后值的設定值寫入輸出字 CMP 002 DM0054 //是否寫入 AND 255.06 RSET 040.04 RSET 042.04 SET 040.05 //向下繼續設置標志 [NETWORK] Name="Period" //控制周期設置 [STATEMENTLIST] LD 040.05 OUT TR0 AND NOT 042.05 MOV #C550 102 //讀輸出邊與輸入邊的控制周期 CMP 002 #C550 //比較輸入字是否變成C550 AND 255.06 SET 042.05 //設置控制周期標志 LD TR0 AND 042.05 MOV DM0055 102 //將控制周期的設定值寫入輸出字 CMP 002 DM0055 //是否寫入 AND 255.06 RSET 040.05 RSET 042.05 SET 040.06 //向下繼續設置標志 [NETWORK] Name="Shift" //偏移量設置 [STATEMENTLIST] LD 040.06 OUT TR0 AND NOT 042.06 MOV #C660 102 //讀輸出邊與輸入邊的偏移量 CMP 002 #C660 //比較輸入字是否變成C660 AND 255.06 SET 042.06 //設置偏移量標志 LD TR0 AND 042.06 MOV DM0056 102 //將偏移量的設定值寫入輸出字 CMP 002 DM0056 //是否寫入 AND 255.06 RSET 040.06 RSET 042.06 SET 040.00 [NETWORK] Name="Return" //返回 [STATEMENTLIST] OUT TR0 AND NOT 042.00 MOV #C070 102 //讀輸入邊的處理值 CMP 002 #C070 //比較輸入字變成C070 AND 255.06 SET 042.00 //返回標志 LD TR0 AND 042.00 MOV DM0050 102 //將設定溫度值寫入輸出字 RSET 040.00 RSET 042.00 RSET 040.10 4 結束語 以上是PID溫度控制的PLC程序設計實例,經過反復試驗,該系統可以維持溫度在1℃之間變化,保證了好的生產狀況,減少了不合格品發生的幾率。 |