国产AV88|国产乱妇无码在线观看|国产影院精品在线观看十分钟福利|免费看橹橹网站

LM小型可編程控制器軟件手冊_202103

發(fā)布時間:2021-11-23 | 雜志分類:其他
免費制作
更多內(nèi)容

LM小型可編程控制器軟件手冊_202103

在“工程”菜單下選擇“查看”/“未使用變量”,則會在消息窗口顯示如圖 3-7-3 所示的信息。 “No unused variables found”表示程序中沒有未使用的變量。 圖 3-7-3 編譯過程(3) 如果程序中出現(xiàn)了未使用的變量,如圖 3-7-4 所示,如果有一個多余的變量 a,則會在消 息窗口中顯示信息:PLC_PRG(9):a。這表示本程序中檢查到了一個未使用的變量 a。 圖 3-7-4 編譯過程(4) 對于“查看”/“未使用變量”的應(yīng)用,應(yīng)該習(xí)慣性地在編譯通過后進行一下自檢。如果存在 未使用的變量,建議刪除未使用的變量,有助于程序的正確運行。 另外,也可以直接設(shè)置。在“資源”選項卡中,選擇“工程選項”/“Build”/“自動檢查”,選中 “未用變量”,在編譯時會自動檢查未使用的變量。... [收起]
[展開]
LM小型可編程控制器軟件手冊_202103
粉絲: {{bookData.followerCount}}
文本內(nèi)容
第51頁

在“工程”菜單下選擇“查看”/“未使用變量”,則會在消息窗口顯示如圖 3-7-3 所示的信息。 “No unused variables found”表示程序中沒有未使用的變量。 圖 3-7-3 編譯過程(3) 如果程序中出現(xiàn)了未使用的變量,如圖 3-7-4 所示,如果有一個多余的變量 a,則會在消 息窗口中顯示信息:PLC_PRG(9):a。這表示本程序中檢查到了一個未使用的變量 a。 圖 3-7-4 編譯過程(4) 對于“查看”/“未使用變量”的應(yīng)用,應(yīng)該習(xí)慣性地在編譯通過后進行一下自檢。如果存在 未使用的變量,建議刪除未使用的變量,有助于程序的正確運行。 另外,也可以直接設(shè)置。在“資源”選項卡中,選擇“工程選項”/“Build”/“自動檢查”,選中 “未用變量”,在編譯時會自動檢查未使用的變量。 關(guān)于編譯,請參見 8.1 章節(jié)。關(guān)于查看未使用變量,請參見 8.2.3 章節(jié)。 編譯結(jié)束后,執(zhí)行“在線”/“登錄”命令進入調(diào)試狀態(tài)。調(diào)試分為在線調(diào)試和仿真調(diào)試兩種 方式。在后面的介紹中,將按照在線調(diào)試和仿真模式兩種方式分別介紹程序的運行情況。 3.8 在線調(diào)試 程序下載到 PLC 的 CPU 模塊中稱為在線調(diào)試。編譯通過的目標文件在進行下載時,會 將全部目標文件下載到 CPU 模塊中,同時將 CPU 模塊復(fù)位,所有變量返回到初始狀態(tài)。 在“在線”菜單中選擇“登錄”,建立本地計算機與 PLC 的 CPU 模塊的連接,出現(xiàn)系統(tǒng)下 - 41 -

第52頁

載提示信息,如圖 3-8-1 所示。 圖 3-8-1 下載提示信息 點擊“是”按鈕,將新程序下載到 PLC 的 CPU 模塊中。當出現(xiàn)如圖 3-8-2 所示的創(chuàng)建啟動 工程提示信息時,點擊“是”按鈕,下載結(jié)束。確保 PLC 斷電后再上電,運行此下載工程。 圖 3-8-2 創(chuàng)建啟動工程提示信息 下載結(jié)束后,程序并沒有運行,需要手動設(shè)置 PLC 程序運行。在菜單欄中打開“在線”下 拉菜單,選擇“運行”,或者直接按“F5”功能鍵,均可實現(xiàn)程序的運行,如圖 3-8-3 所示。 圖 3-8-3 程序運行 雙擊“%IX0.0”,按“F7”功能鍵強制輸入值后,使%IX0.0 閉合,程序開始運行,如圖 3-8-4 所示。從運行的結(jié)果可見,%QX0.0 通道燈輸出“1s 斷 2s 通”的脈沖信號。 圖 3-8-4 強制程序運行 - 42 -

第53頁

程序運行情況如下所述。程序啟動后,當運行時間 t<1s 時,%QX0.0 尚未閉合,PLC 上 的通道燈%QX0.0 不亮,如圖 3-8-5 所示。 圖 3-8-5 程序運行情況(1) 程序運行一段時間后,當運行時間 1s<t<3s 時,%QX0.0 閉合,PLC 上的第一個通道 燈%QX0.0 亮,如圖 3-8-6 所示。 當運行時間 3s<t<4s 時,觸點“M”斷開,PLC 上的通道燈%QX0.0 滅。如此反復(fù),%QX0.0 通道燈會出現(xiàn)“1s 亮,并且持續(xù) 2s 后再滅,間隔 1s 后又亮”的現(xiàn)象。 圖 3-8-6 程序運行情況(2) 3.9 仿真調(diào)試 上述程序?qū)崿F(xiàn)了在線模式下的運行。如果沒有連接 PLC 的 CPU 模塊,在本地計算機模 擬運行用戶程序,稱為仿真模式。在菜單欄中打開“在線”下拉菜單,選擇“仿真模式”,便進 入了仿真模式下的程序運行過程。在“仿真模式”下,選擇登錄,如圖 3-9-1 所示。“在線”/“仿 真模式”被選中(出現(xiàn)“√”),登錄時便會進入仿真模式。 - 43 -

第54頁

圖 3-9-1 仿真模式 雙擊“%IX0.0”,按“CTRL+F7”組合功能鍵輸入值,或按“F7”功能鍵強制值,使%IX0.0 閉合,再按“F5”功能鍵,使程序運行,如圖 3-9-2 所示。仿真模式下程序運行情況與在線模 式下相同。 圖 3-9-2 仿真模式下程序運行 關(guān)于在線調(diào)試和仿真調(diào)試的操作,請參見 8.4 章節(jié)。 - 44 -

第55頁

第4章 存儲區(qū)與變量 在編程之前,需要了解 LM 系列 PLC 是如何管理數(shù)據(jù)的。本章為您講述 LM 系列 PLC 的存儲區(qū)分配、數(shù)據(jù)尋址以及變量使用等概念,為編程打下良好的基礎(chǔ)。 LM 系列 PLC 的數(shù)據(jù)存儲區(qū)分為輸入?yún)^(qū)(I 區(qū))、輸出區(qū)(Q 區(qū))、M 區(qū)、N 區(qū)、掉電 保持區(qū)共五類,每一類都有自己的特點和使用規(guī)則,4.1 章節(jié)講述了各存儲區(qū)的特點和使用方 法。 4.2 章節(jié)講述了地址的尋址方法和存儲規(guī)則。在 LM 系列 PLC 的數(shù)據(jù)存儲區(qū)中,輸入?yún)^(qū)、 輸出區(qū)和 M 區(qū)屬于尋址方式調(diào)用的數(shù)據(jù)區(qū)。 和高級語言類似,LM 系列 PLC 也有常量和變量的概念。所謂的常量就是數(shù)值不變的數(shù)。 4.3 章節(jié)詳細講述了常量的分類和使用方法。 變量是 IEC61131-3 標準提出的概念。在程序運行時,其數(shù)值會改變的量就是變量。變量 用于初始化、存儲和處理用戶數(shù)據(jù)。每個變量都有其固定的數(shù)據(jù)類型。變量的存儲位置可由 用戶指定為 I 區(qū)、Q 區(qū)或 M 區(qū)的地址,亦可不指定地址,由系統(tǒng)自行分配。4.4 章節(jié)詳細講 述變量的類型和使用方法。 LM 系列 PLC 在數(shù)據(jù)管理上功能非常強大。4.5 章節(jié)和 4.6 章節(jié)為您講述了如何處理數(shù)組 以及如何自定義數(shù)據(jù)類型。 4.1 存儲區(qū)分配 LM 系列 PLC 的存儲區(qū),CPU 的內(nèi)存被劃分為不同的存儲區(qū),每一部分存儲區(qū)都有各自 的特點和使用規(guī)則。 存儲區(qū)包括以下幾大類: 輸入存儲區(qū)(I 區(qū)) 輸入映像區(qū)。CPU 及擴展模塊的數(shù)字量輸入占用輸入存儲區(qū)地址,模擬量輸入同樣也占 用輸入存儲區(qū)地址。另外,一些特殊功能,諸如以太網(wǎng)通訊或者 DP 通訊,也占用輸入存儲 區(qū)的地址。I 區(qū)最大可存儲 512 個字節(jié)。 輸入存儲區(qū)通過尋址方式訪問,可以按位、字節(jié)、字、雙字訪問。具體訪問方法請參見 4.2 章節(jié)。 輸入存儲區(qū)是只讀的,并且不能掉電保持。在仿真模擬時,輸入存儲區(qū)的地址可以被輸 入,也可以被強制。但是在在線調(diào)試時,只能被強制。輸入和強制是 PowerPro 在調(diào)試時改變 數(shù)據(jù)的方式,請參見 8.4.9 和 8.4.10 章節(jié)。 輸出存儲區(qū)(Q 區(qū)) 輸出映像區(qū)。CPU 及擴展模塊的數(shù)字量輸出占用輸出存儲區(qū)地址,模擬量輸出同樣也占用輸 出存儲區(qū)地址。另外,一些特殊功能,諸如以太網(wǎng)通訊或者 DP 通訊,也占用輸出存儲區(qū)的 地址。Q 區(qū)最大可存儲 512 個字節(jié)。 輸出存儲區(qū)通過尋址方式訪問,可以按位、字節(jié)、字、雙字訪問。具體訪問方法請參見 4.2 章節(jié)。 輸出存儲區(qū)的數(shù)據(jù)是可讀寫的,并且不能掉電保持。在仿真模擬或者在線調(diào)試時,該數(shù)據(jù)區(qū) 地址均可以被輸入或強制。 M 存儲區(qū) M 存儲區(qū)是 PLC 的中間寄存器區(qū),用于存儲和管理中間過程產(chǎn)生的數(shù)據(jù)或狀態(tài)。無論 - 45 -

第56頁

是位數(shù)據(jù),還是字數(shù)據(jù),均可以在 M 存儲區(qū)實現(xiàn)。 M 存儲區(qū)通過尋址方式訪問,可以按位、字節(jié)、字、雙字訪問。LM 系列 PLC 的 M 區(qū)共有 8KB,按字節(jié)來尋址,M 存儲區(qū)的范圍為 MB0~MB8191。具體訪問方法請參見 4.2 章節(jié)。 M 存儲區(qū)的數(shù)據(jù)地址與輸出存儲區(qū)的性質(zhì)一樣,可讀寫,也可以被輸入或強制。 M 存儲區(qū)的地址中,部分是具有掉電保持功能的,包括 MB300~MB799。其余地址,均不具 有掉電保持功能。 另外,要特別注意,M 存儲區(qū)的前 100 個字節(jié),即 MB0~MB99,是被系統(tǒng)用于自診斷的數(shù) 據(jù)區(qū),可以讀取這些存儲區(qū)的數(shù)據(jù),但是不能寫入。建議用戶在編程時,從 MB100 開始使 用。 N 存儲區(qū) N 存儲區(qū)也屬于 PLC 的中間寄存器區(qū),用于存儲和管理中間過程產(chǎn)生的數(shù)據(jù)和狀態(tài)。與 M 存儲區(qū)不同的是,N 存儲區(qū)只能通過變量的方式來訪問和調(diào)用。關(guān)于變量,手冊在前幾章都 已提到過,關(guān)于變量的詳細使用方法,請參見 4.4 章節(jié)。 N 存儲區(qū)中的變量地址,是系統(tǒng)自動分配而用戶無法指定的。N 區(qū)中的變量數(shù)據(jù)類型不單有 位、字節(jié)、字和雙字,還有 REAL、TIME、INT 等其他眾多數(shù)據(jù)類型。另外,除了數(shù)據(jù)變量 外,定義的功能塊變量也存儲在 N 存儲區(qū)。關(guān)于功能塊的概念,請參見 5.1 章節(jié)。 N 存儲區(qū)大小為 24KB,即可以存儲 24KB 的變量。N 存儲區(qū)可以讀寫,可以被輸入和強制。 N 存儲區(qū)的數(shù)據(jù)是不能掉電保持的。 R 存儲區(qū) R 存儲區(qū)屬于掉電保持區(qū),其調(diào)用方式與 N 區(qū)一致,也是通過變量的方式訪問,無法指 定地址。 R 存儲區(qū)的大小為 6KB。R 存儲區(qū)變量可以讀寫,可以被輸入和強制。 變量定義時,假如沒有選擇保持功能,或者直接在局部變量中定義,則該變量存儲在 N 區(qū),若選擇了保持功能或直接在保持型變量中定義,則該變量存儲于 R 區(qū),具有掉電保持功 能。關(guān)于如何定義掉電保持區(qū)變量,詳細說明請參見 4.4.6 章節(jié)。 注意: LM 系列 PLC 有兩種方式可以實現(xiàn)數(shù)據(jù)的掉電保持。一是采用地址方式,選擇 M 區(qū)的 MB300~MB799 之間的地址即可;另一種采用變量的方式,將變量定義為掉電保持區(qū)變量即可。 4.2 地址尋址方式 4.2.1 地址存儲映射關(guān)系 LM 系列 PLC 的 I 區(qū)、Q 區(qū)和 M 區(qū)是按地址尋址方式訪問的,這些存儲區(qū)都有唯一的、 明確的地址。用戶可以通過地址尋址方式,即直接使用該存儲區(qū)地址的方式,來讀取和設(shè)置 該存儲區(qū)的值。 在介紹訪問規(guī)則之前,需要先了解這些存儲區(qū)的存儲格式。I 區(qū)、Q 區(qū)和 M 區(qū)的存儲格 式是一致的,所以這里以 M 區(qū)為例說明,如圖 4-2-1 所示。 LM 系列 PLC 所有直接尋址的存儲區(qū),是按字節(jié)存儲的。 每個字節(jié)包含 8 個位,每 8 個位組成一個字節(jié)。每 2 個字節(jié)組成一個字,每兩個字組成 - 46 -

第57頁

一個雙字。 圖 4-2-1 M 區(qū)存儲格式 諸如:%MX2.7 表示%MB2 的第 8 個位。 %MW12 表示有%MB12 和%MB13 兩個字節(jié)組成的字。 這些存儲區(qū)的地址,可以按位、字節(jié)、字或雙字來訪問,數(shù)據(jù)類型為 BOOL、BYTE、 WORD 和 DWORD。要了解這些數(shù)據(jù)類型的范圍,請查看 4.4.2 章節(jié)。假如需要使用 INT 或 者 REAL 等其他數(shù)據(jù)類型,需要使用變量方式訪問,具體內(nèi)容也請參見 4.4 章節(jié)。 要注意,按不同數(shù)據(jù)類型訪問,數(shù)據(jù)存儲區(qū)可能是重疊的。諸如%MW0 的數(shù)值為 3, 則%MB0 的值也為 3,%MX0.0 的值為 TRUE,%MX0.1 的值也為 TRUE。又或者在程序中強 制%MX0.0 為 TRUE,因為%MX0.0 是%MB0、%MW0 和%MD0 的第一個位,則同時,這些 存儲地址的值也被強制為 1。 對于 I 區(qū)和 Q 區(qū),也是同樣的存儲方式。I 區(qū)和 Q 區(qū)的地址和實際 DI/DO 點如何對應(yīng), 請參見 7.3 章節(jié)。 注意: 按字尋址方式訪問,因為一個字由兩個字節(jié)組成,其數(shù)字必為偶數(shù),不能為奇數(shù)。如:%MB0 和%MB1 組成一個字%MW0,下一個字則為%MW2,而不是%MW1。%MW1 是無效的地址。按 雙字尋址也遵守此規(guī)則。 4.2.2 地址訪問格式 按 IEC61131-3 標準,所有的直接地址都從“%”開始。以 M 區(qū)為例,如表 4-2-1 所示。 表 4-2-1 地址訪問格式 %MXm.n 格式 X 表示是按位尋址; 描述 m 表示在 M 存儲區(qū)中的字節(jié)編號; n 表示位于該字節(jié)的第幾位,范圍為 0~7 位尋址 BOOL %MX0.3、%MX100.0、%MX3212.7 數(shù)據(jù)類型 示例 - 47 -

第58頁

字節(jié) 格式 %MBm 尋址 描述 B 表示按字節(jié)尋址 m 表示在 M 存儲區(qū)中的字節(jié)編號 字尋址 數(shù)據(jù)類型 BYTE 示例 %MB103、%MB2000 雙字 格式 %MWm 尋址 描述 W 表示按字尋址 m 表示在該字存儲單元中的首字節(jié)的地址,注意 m 必須為偶數(shù) 數(shù)據(jù)類型 WORD 示例 %MW150、%MW3000 格式 %MDm 描述 D 表示按雙字尋址 m 表示在該雙字存儲單元中的首字節(jié)的地址,注意 m 必須為偶數(shù) 數(shù)據(jù)類型 DWORD 示例 %MD300、%MD432 對于 I 區(qū)、Q 區(qū),則把表中的 M 替換為 I 或 Q 即可。 表 4-2-2 為這三個數(shù)據(jù)區(qū)的范圍,超過這個范圍的地址視為無效的地址。 表 4-2-2 數(shù)據(jù)存儲區(qū)及范圍 存儲區(qū) 范圍(按字節(jié)) I 存儲區(qū) %IB0~%IB511(最大為 512 字節(jié),具體大小根據(jù) PLC 確定) Q 存儲區(qū) %QB0~%QB511(最大為 512 字節(jié),具體大小根據(jù) PLC 確定) M 存儲區(qū) %MB0~%MB8191 再次強調(diào)的是 M 存儲區(qū)大小為 8KB,即從%MB0~%MB8191。其中,%MB0~%MB99 作為 PLC 的內(nèi)部診斷區(qū),建議用戶不要使用。%MB300~%MB799 具有掉電保持功能,其余 存儲區(qū)不具有掉電保持功能。 4.3 常量 在 PLC 編程的時候,可能經(jīng)常要用到一些數(shù)值不變的參數(shù),諸如定時器的時間、換算的 比例參數(shù)等,這些數(shù)值不變的參數(shù)稱為常量。LM 系列 PLC 支持多種數(shù)據(jù)類型的常量,常見 的常量:布爾型、時間型、數(shù)字型等,如表 4-3-1 所示。 表 4-3-1 常量的分類及表示方法 常量類型 表示方法 布爾型 描述 布爾常量只有兩個:邏輯值 TRUE 和 FALSE(也可表示為 1 和 0),TRUE 示例 等價于 1,F(xiàn)ALSE 等價于 0。 TRUE、0 - 48 -

第59頁

數(shù)字常量的數(shù)值可以是二進制、十進制、八進制和十六進制。如果整數(shù)值 描述 不是十進制值,可以用“進制”加符號“#”放在整數(shù)值前面來表示。十進制的 示例 10 至 15 在十六進制中表示為 A 至 F。 整數(shù)型 14 (*十進制數(shù) 14*) 2#1001_0011 (*二進制數(shù) 1001_0011*) 8#67 (*八進制數(shù) 67*) 16#AE (*十六進制數(shù) AE*) 描述 實數(shù)常量用十進制小數(shù)和指數(shù)來表示,遵循標準的科學(xué)計數(shù)法格式。實數(shù) 示例 實數(shù)型 常量的數(shù)據(jù)類型是 REAL。 7.4 (*實數(shù) 7.4*) 1.64e+009 (*實數(shù) 1.64e+009*) 時間常量一般用來操作時間,由“T#”(或“t#”)加上“時間值”構(gòu)成,時間值 描述 的單位包括天(d)、小時(h)、分(m)、秒(s)和毫秒(ms)。注意, 它們的正確順序為 d、h、m、s、ms。 T#18ms (*18 毫秒的一個時間常量*) 時間型 T#100s12ms (*100 秒 12 毫秒的一個時間常量,高單位允許超限*) t#12h34m15s (*12 小時 34 分 15 秒的一個常量*) 示例 下面是錯誤的時間常量: t#5m68s (*低單位不允許超限*) 15ms (*沒有 T# *) t#4ms13d (*順序錯誤*) 時刻常量用于存儲當前時刻,由“TOD#”(“tod#”、“TIME_OF_DAY#”或 描述 “time_of_day#”)加上“時刻值”構(gòu)成。時刻值的格式為:小時:分鐘:秒(可 時刻型 示例 以用實數(shù)形式輸入秒)。 日期型 描述 示例 TOD#00:00:00 (*時刻常量為 0 點 0 時 0 分*) TIME_OF_DAY#15:36:30.123 (*時刻常量為 15 點 36 分 30.123 秒*) 日期常量由“D#”(“d#”、“DATE#”或“date#”)加上“日期值”構(gòu)成。 DATE#2005-05-06 (*日期常量 2005 年 5 月 6 日*) d#1980-09-22 (*日期常量 1980 年 9 月 22 日*) 描述 日期常量和時刻常量 合并起來稱為日期時刻常量,由 “DT#”( “dt#”、 “DATE_AND_TIME#”或“date_and_time#”)加上“日期時刻值”構(gòu)成。 日期時刻型 DT#1980-09-22-15:45:18 示例 (*時刻日期常量為 1980 年 9 月 22 日 15 點 45 分 18 秒*) date_and_time#2001-03-09-00:00:00 (*時刻日期常量為 2001 年 3 月 9 日 0 點 0 分 0 秒*) 描述 字符串常量在兩個單引號之間,可以包含空格和特殊字符。 示例 字符串型 'Abby and Craig' (*字符串 Abby and Craig *) ':-)' (*字符串:-)*) 注意: PowerPro 不區(qū)分大小寫,諸如 T#3s 和 t#3s 屬于同一常數(shù),TRUE 和 true 均可以表示布爾 型常量。 - 49 -

第60頁

4.4 變量 所謂變量,就是用字母、數(shù)字和下劃線組成的一個標識符。 按照數(shù)據(jù)類型的不同,變量可以分為標準類型和用戶自定義類型。其中標準類型包括布 爾型(BOOL)、整型(INT)、實型(REAL)、字符串型(STRING)以及時間型(TIME) 等。自定義類型包括結(jié)構(gòu)體(STRUCT)和枚舉(ENUM)。 按照使用范圍的不同,變量可以分為全局變量和局部變量。局部變量只在整個工程的一 部分程序中有效,其它程序不能引用。全局變量則可以被整個工程的任意程序引用,在整個 工程中均有效。 按照屬性的不同,變量分為中間變量、輸入型變量、輸出型變量、輸入輸出型變量等。 按照能否掉電保護,變量分為保持型變量和非保持型變量。 4.4.1 變量命名規(guī)則 變量命名必須遵循如下的規(guī)則: ? 必須以一個字母或者單一的下劃線開始,隨后是一定數(shù)量的字母、數(shù)字或下劃線。 ? 字母與大小寫無關(guān),ABC 和 abc 被認為是同一個變量。 ? 關(guān)鍵字不能用于變量名。PowerPro 定義了一些關(guān)鍵字,關(guān)鍵字是標準的標識符,其 作用和命名已在系統(tǒng)中自動定義,PowerPro 的關(guān)鍵詞如表 4-4-1 所示。 表 4-4-1 關(guān)鍵詞表 ARRAY FUNCTION TYPE AT FUNCTION_BLOCK VAR CONSTANT OF VAR_ACCESS END_FUNCTION PERSISTENT VAR_CONFIG END_FUNCTION_BLOCK PROGRAM VAR_EXTERNAL END_PROGRAM READ_ONLY VAR_GLOBAL END_STRUCT READ_WRITE VAR_IN_OUT END_TYPE RETAIN VAR_INPUT END_VAR STRUCT VAR_OUTPUT 4.4.2 變量數(shù)據(jù)類型 PowerPro 軟件支持的變量數(shù)據(jù)類型包括標準類型和用戶自定義類型。在 PLC 軟件中可 以查到所支持的標準類型,具體方法如下:選擇“編輯”菜單下的“輸入變量”,彈出“Help Manager”對話框,再用鼠標左鍵單擊“Standard Types”即可。關(guān)于自定義數(shù)據(jù)類型,請參見 4.6 章節(jié)。 PowerPro 支持的標準數(shù)據(jù)類型及范圍,如表 4-4-2 所示。 表 4-4-2 變量數(shù)據(jù)類型 類型 類型名稱 數(shù)據(jù)下限 數(shù)據(jù)上限 存儲 備注 空間 BOOL 布爾型 0 1 1bit BYTE 字節(jié)型 0 255 8 Bit WORD 字型 0 65535 16 Bit DWORD 雙字型 0 4294967295 32Bit - 50 -

第61頁

SINT 短整型 -128 127 8 Bit 單精度浮點數(shù) USINT 無符號短整型 0 255 8 Bit 示例: INT 整型 -32768 32767 16 Bit Time1 : TIME := t#3s; UINT 無符號整型 0 65535 16 Bit 示例: DINT 長整型 -2147483648 2147483647 32 Bit Tod1 : TOD : = UDINT 無符號長整型 0 4294967295 32 Bit TOD#00:00:00; REAL 實數(shù)型 -3.402823E+38 3.402823E+38 32Bit 示例: TIME 時間型 32Bit Date1 : DATE : = D#2008-8-8; TOD 時刻型 示例: DT1 : DT : = DATE 日期型 dt#2008-08-08-20:08:08; 示例: DT 日期時刻型 Str:STRING(35):=?hi?; 示例: STRING 字符串型 Arr1:ARRAY[1..5]OF ARRAY 數(shù)組 BYTE:=1,2,3,4,5; 4.4.3 變量定義 在使用變量之前,必須先對變量進行定義。PowerPro 針對變量不同的功能,規(guī)定了不同 的變量類型。在定義變量時,不單要定義數(shù)據(jù)類型,還要定義變量類型。 在 PowerPro 中,變量可以被定義為很多類型,如:全局變量、局部變量、輸入變量、輸 出變量等。具體變量類型如表 4-4-3 所示。 表 4-4-3 變量類型 數(shù)據(jù)類型 變量類型 局部變量,僅在該程序中使用。在其余程序中可以定義相同名稱的變量,被認為是 VAR 兩個變量。 輸入變量。當調(diào)用程序時,輸入變量用于實現(xiàn)調(diào)用程序時的參數(shù)傳遞。在調(diào)用程序 VAR_INPUT 時,可以將參數(shù)通過輸入變量傳遞至子程序或其余 POU 中,具體參見 5.3 章節(jié)。 輸出變量。當調(diào)用程序時,輸出變量用于實現(xiàn)調(diào)用程序時的參數(shù)傳遞。在調(diào)用程序 VAR_OUTPUT 時,可以將參數(shù)通過輸出變量傳遞至調(diào)用該 POU 的程序中,具體參見 5.3 章節(jié)。 VAR_IN_OUTPUT 輸入/輸出變量。VAR_INPUT 和 VAR_OUTPUT 變量的組合。同樣用于參數(shù)傳遞。 VAR_GLOBAL 全局變量。若該變量定義為全局變量,則在任何程序中均可使用該變量。同時,不 能再定義名稱相同的變量。 - 51 -

第62頁

VAR、VAR_INPUT、VAR_OUTPUT、VAR_IN_OUTPUT、VAR_GLOBAL 是用于標識 變量類型的關(guān)鍵詞。定義時根據(jù)可需要對類別進行選擇, 變量的聲明有兩種方式:自動聲明和手動聲明。 自動定義變量 系統(tǒng)支持變量自動定義功能。當程序中出現(xiàn)一個新變量時,系統(tǒng)會自動彈出對話框,要 求進行變量定義,如圖 4-4-1 所示。其中類別、名字和類型是必須的。 圖 4-4-1 自動定義變量 自動定義變量對話框的各項含義,如下所述: ? 類別:類型選擇。各類型區(qū)別請參見表 4-4-3,如:希望定義的變量在所有的 POU 中都能使用,則定義為全局變量,選擇類型 VAR_GLOBAL。 ? 名字:聲明變量的名稱,即標識符。關(guān)于變量命名的規(guī)則,請參見 4.4.1 章節(jié)。 ? 類型:數(shù)據(jù)類型選擇。可以直接在輸入框中輸入,也可以點擊 按鈕,然后在彈 出的對話框中選擇數(shù)據(jù)類型。各類數(shù)據(jù)類型請參見 4.4.2 章節(jié)。 ? 符號表:只有在“ 類別” 選擇“VAR_GLOBAL” 時,符號表才可選。默認選項為 “Global_Variables”。當定義一個全局變量時,在“資源”選項卡中打開“全局變量”文 件夾,可以看到“Global_Variables”,雙擊“Global_Variables”,剛定義的全局變量便 顯示在這里,如圖 4-4-2 所示。 ? 初始值:變量的初始值。這里可以填入一個與變量數(shù)據(jù)類型對應(yīng)的常量,完成變量 的初始化。 ? 地址:定義變量的地址。 ? 注釋:變量的含義。 圖 4-4-2 聲明變量的代碼部分 在自動定義變量時,需要注意以下幾點: ? 變量可以被指定一個地址,地址的格式與 4.2 章節(jié)所講述的一致。當變量指定地址 時,變量存儲于該地址所指定的數(shù)據(jù)區(qū),如圖 4-4-1 所示的變量定義,則該變量 temp 存儲于 M 存儲區(qū),與%MW100 占用同一存儲區(qū)地址。在程序中,采用直接尋址方 - 52 -

第63頁

式改變%MW100 的值,則該變量 temp 相應(yīng)改變。變量定義時,也可以不指定地址,則該變 量存儲于 N 存儲區(qū)。 在定義時,可以設(shè)置變量的初始值,初始值是一個常量,其類型應(yīng)與變量的類型一致。諸如 定義一時間類型變量,則初始值應(yīng)是一個時間常量,例如 t#5s。定義初始值后,當 PLC 在上 電瞬間,變量被賦值為初始值。 自動定義變量后,將會在變量聲明部分會顯示剛定義的變量的聲明。若定義了圖 4-4-1 所示 的變量,則在變量聲明區(qū)有如下聲明: PROGRAM PLC_PRG VAR Temp AT %MW100: WORD := 30; (*溫度參數(shù)*) END_VAR 若定義的變量是全局變量,則會顯示在資源選項中的全局變量中,而不是在變量 聲明區(qū)。 ? 變量自動定義時,在自動定義對話框右下角有兩個選項:常量和保持。當選擇常量, 則將該變量作為一個常量,程序中無法再改變其數(shù)值。當選擇保持型變量時,表示 將該變量設(shè)置為具有掉電保持功能,該變量存儲在 R 存儲區(qū)。 ? 新建變量時,系統(tǒng)可以自動定義。但當變量被刪除時,定義語句不會自動刪除,繼 續(xù)保留在編輯器中,因此要注意變量不能定義重復(fù)??墒褂谩肮こ獭?“查看”/“未使用 變量”命令查找到這些無用的變量聲明。具體使用方法請參見 8.2.3 章節(jié)。 手動定義變量 所謂的手動定義變量,就是不通過自動定義對話框進行定義,而是手動在變量聲明區(qū)按 變量聲明的格式和規(guī)定添加變量。 變量聲明的一般格式: <標識符> {AT<地址>} : <數(shù)據(jù)類型> {: = <初始值>}; 其中在{ }中的部分是可選的。 定義不同類型的變量,需要在不同的位置進行定義。諸如:定義局部變量,需要在 VAR 和 END_VAR 之間定義,而定義輸入變量,需要在 VAR INPUT 和 END_VAR 之間定義。 變量聲明區(qū)也可以定義為表格形式。在“工程”/“選項”/“Editor”對話框里選中“聲明為表” 項,或在程序編輯區(qū)選中右鍵菜單項“定義為表格”,聲明編輯器會顯示成表格的形式,如圖 4-4-3 所示。 圖 4-4-3 表格聲明變量 - 53 -

第64頁

在表格形式的聲明編輯器中,在最初設(shè)置時,“名稱”字段缺省為“Name”,“類型”字段缺 省為“BOOL”。根據(jù)需要可以自行更改這些設(shè)置,變量名和類型是完成聲明變量所必需的選 項。 去除右鍵命令“表格聲明”前的“√”,可切換至常規(guī)形式。 表格聲明變量以簡潔的填表方式代替了常規(guī)的語句聲明方式,建議初學(xué)者使用自動變量 定義或表格定義。 變量調(diào)用和地址調(diào)用方式的區(qū)別 當采用“變量+地址”方式定義變量,與直接地址調(diào)用類似,但是兩者還是有區(qū)別的。 直接地址調(diào)用的數(shù)據(jù)類型可為 BOOL、BYTE、WORD、DWORD 等類型,而用“變量+地址” 的方式調(diào)用,可定義的數(shù)據(jù)類型比直接地址調(diào)用方式多。 例如:需要定義一 REAL 型變量,其地址為%MD100。若直接使用地址%MD100,其數(shù) 據(jù)類型為 DWORD 型而不是 REAL 型。此時就需要用“變量+地址”的方式定義一個數(shù)據(jù)類 型為 REAL 型的變量,地址為%MW100(只需填入初始地址,長度根據(jù)數(shù)據(jù)類型自動判斷), 從而實現(xiàn)了在%MD100 上定義一個 REAL 型變量。 4.4.4 保持型變量 在很多工程中,通常需要數(shù)據(jù)具有掉電保持功能,使 PLC 斷電后數(shù)據(jù)不丟失。在定義變 量時,可以直接定義變量為保持型變量,此時變量自動保存于 R 存儲區(qū),具有掉電保持功能。 在自動定義時,在自動定義對話框的右下角,選擇“保持”選項,變量就自動定義為保 持型變量。在手動定義時,將變量定義在 VAR_RETAIN 和 END_VAR 之間,也可以定義該 變量為掉電保持變量。 前面講到存儲區(qū)(4.1 章節(jié))時曾提到,M 區(qū)的部分地址(%MB300~%MB799)同樣具 有掉電保持功能。將變量定義為保持型變量與將數(shù)據(jù)放入地址在%MB300~%MB799 的存儲 區(qū)內(nèi),具有相同的效果。 4.4.5 指針變量 指針變量是一類特殊的變量。LM 系列 PLC 中,所有的存儲區(qū)都占用 CPU 的地址,這個地 址被稱為絕對地址。不管是 I 區(qū)、Q 區(qū)、M 區(qū)還是 N 區(qū)和 R 區(qū),都占用 CPU 的一部分地址。 而 I 區(qū)、Q 區(qū)和 M 區(qū)通過尋址訪問的地址,諸如%MW100,可以認為是相對地址。指針是指 數(shù)據(jù)區(qū)的絕對地址而不是相對地址。 相鄰的兩個相對地址,其絕對地址也是相鄰的。因為 LM 系列 PLC 的存儲區(qū)是按字節(jié)存儲的, 因此假如%MW100 的絕對地址為 pt,則%MW102 的絕對地址為 pt+2。%MW200 的絕對地址 就是 pt+100。 在編程時,假如利用指針的這種關(guān)系,可以很方便地實現(xiàn)一些比較復(fù)雜的功能。在使用之前, 同樣需要定義指針變量。 指針變量的定義與其他數(shù)據(jù)類型定義類似,只是其數(shù)據(jù)類型為 POINTER TO <數(shù)據(jù)類型> 指針定義的語法格式: <指針名> : POINTER TO <數(shù)據(jù)類型/功能塊>; 示例: pt:POINTER TO INT; (*定義一個整型數(shù)據(jù)的指針 pt*) Var_int1:INT := 5; (*定義整型變量 Var_int1,使其等于 5*) - 54 -

第65頁

Var_int2:INT; (*定義整型變量 Var_int2*) pt := ADR(Var_int1); (*取出 Var_int1 變量的地址,將地址值賦給 pt*) Var_int2:= pt^; (*將指針 pt 所指地址的值賦給 Var_int2,即 Var_int2=5*) 舉例說明指針的用法: 在 M 數(shù)據(jù)區(qū)的%MW100 開始的地址中,存放了 100 個 WORD 型變量,現(xiàn)在需要將這些值轉(zhuǎn) 移至%MW300 開始的 100 個字內(nèi),使其具有掉電保持功能。 因為數(shù)據(jù)區(qū)比較長,采用指針方式,可以很方便地實現(xiàn)數(shù)據(jù)區(qū)的轉(zhuǎn)移。 這里需要定義兩個指針變量 pt1 和 pt2,一個指向%MW100,另一個指向%MW300。這里還 需要用到一個取地址指令 ADR 和讀取指針數(shù)值指令^,關(guān)于這兩個指令的詳細信息,請參見 《指令手冊》。 變量定義如下: VAR m: INT; pt1: POINTER TO WORD; pt2: POINTER TO WORD; END_VAR 其中變量 m 用于傳輸 100 個字節(jié)。 在這里采用 ST 方式編寫程序,關(guān)于 ST 語言編程,請參見 9.3 章節(jié)。 采用一個 FOR 循環(huán)語句,每次循環(huán),pt1 和 pt2 的值均加 2(因為是 WORD 類型指針),然 后將 pt1 的值賦值給 pt2 即可。 具體程序如下: pt1:=ADR(%MW100); pt2:=ADR(%MW300); FOR m:=1 TO 100 BY 1 DO pt2^:=pt1^; pt1:=pt1+2; pt2:=pt2+2; END_FOR 4.5 數(shù)組 PowerPro 對數(shù)據(jù)的管理功能是非常強大的。他不但支持多種數(shù)據(jù)類型,也支持多維數(shù)據(jù)。 在編程時,可以根據(jù)基本數(shù)據(jù)類型來定義一維、二維和三維數(shù)組。數(shù)組可以采用自動定義, 也可以在變量聲明區(qū)手動定義。 數(shù)組的標識符為 ARRAY。數(shù)組定義的語法格式: <數(shù)組名> : ARRAY [<L1>..<U1>, <L2>..<U2>, <L3>..<U3>] OF <基本數(shù)據(jù)類型>; 其中 L1、L2 和 L3 表示字段范圍的最小值,U1、U2 和 U3 表示字段范圍的最大值。字 段范圍必須是整數(shù)。假如是一維數(shù)組,則只需設(shè)置 L1 和 U1 即可;假如是二維數(shù)組,則需要 設(shè)置 L1、U1 和 L2、U2;假如是三維數(shù)組,則 L1、U1、L2、U2 和 L3、U3 均需定義。 - 55 -

第66頁

下圖為定義一個數(shù)組元素數(shù)量為 10 的一個一維數(shù)組的自動定義對話框: 圖 4-5-1 數(shù)組自動定義 在數(shù)組定義的同時,給數(shù)組中的元素賦值稱為初始化數(shù)組。在數(shù)組定義時,可以初始化 數(shù)組中所有元素,也可以不進行初始化。 ? 舉例:定義數(shù)組 Card_game: ARRAY [1..13, 1..4] OF INT; (*定義一個整型的二維數(shù)組 Card_game*) ? 舉例:數(shù)組的完全初始化 Arr1:ARRAY [1..5] OF BYTE:= 1,2,3,4,5; Arr2:ARRAY [1..2,1..2] OF INT := 1,3(7) ; (*即 1,7,7,7 的縮寫形式*) Arr3:ARRAY [1..2,1..2,1..2] OF INT := 2(0),4(4),2,3;(*即 0,0,4,4,4,4,2,3 的縮寫形式*) ? 舉例:數(shù)組的部分初始化 Arr1:ARRAY [1..10] OF BYTE:= 1,2; 對于那些沒有預(yù)先賦值的元素,按照基本數(shù)據(jù)類型的缺省初始值進行初始化。在此例中, 元素[3]到[10]被初始化為 0。 4.6 自定義數(shù)據(jù)類型 在一些實際應(yīng)用場合,需要用到一些配方數(shù)據(jù)。每組配方包含很多參數(shù),而這些參數(shù)的數(shù)據(jù) 類型是不同的,諸如可能包含 REAL 型、WORD 型或 TIME 型等,那么這里使用自定義數(shù)據(jù) 類型就能非常方便地實現(xiàn)配方數(shù)據(jù)的管理。 在 2.5.2 節(jié)曾經(jīng)提到過自定義數(shù)據(jù)類型。在對象組織器的數(shù)據(jù)類型選項卡中,就可以自定義數(shù) 據(jù)類型。 首先,點擊右鍵,新建一數(shù)據(jù)類型,命名規(guī)則同變量命名規(guī)則。命名完之后,該標志符就可 以作為一個結(jié)構(gòu)用來表示這個數(shù)據(jù)類型。 結(jié)構(gòu)變量以關(guān)鍵字 TYPE 和 STRUCT 開始,關(guān)鍵字 END_STRUCT 和 END_TYPE 結(jié)束。 定義結(jié)構(gòu)變量的語法格式: TYPE <結(jié)構(gòu)名>: STRUCT <變量聲明 1> <變量聲明 2> - 56 -

第67頁

... <變量聲明 n> END_STRUCT END_TYPE 結(jié)構(gòu)是一種可以在整個工程中被識別的數(shù)據(jù)類型,而且可以象引用標準數(shù)據(jù)類型一樣引用結(jié) 構(gòu)。唯一的限制是,結(jié)構(gòu)變量不能指定地址,即不允許進行 AT 聲明。 舉例:定義名為 Polygonline 的結(jié)構(gòu) TYPE Polygonline: STRUCT Start:ARRAY [1..2] OF INT; Point1:ARRAY [1..2] OF INT; Point2:ARRAY [1..2] OF INT; Point3:ARRAY [1..2] OF INT; Point4:ARRAY [1..2] OF INT; End:ARRAY [1..2] OF INT; END_STRUCT END_TYPE 舉例:初始化結(jié)構(gòu) P1:Polygonline:=(Start:=3,3,Point1:=5,2,Point2:=7,3,Point3:=8,5,Point4:=5,7,End:=3,5); 舉例:結(jié)構(gòu)數(shù)組的初始化 TYPE STRUCT1: STRUCT p1:int; p2:int; p3:dword; END_STRUCT END_TYPE A1[1..3] OF STRUCT1:=(p1:=1,p2:=10,p3:= 3),(p1:=2,p2:=0,p3:=2),(p1:=4,p2:=5,p3:=1); 訪問結(jié)構(gòu)成員的語法: <結(jié)構(gòu)名>.<結(jié)構(gòu)成員名> 舉例 如果結(jié)構(gòu)名為 Week,其中的一個成員名為 Monday,則可以用下面的形式訪問該成員: Week.Monday - 57 -

第68頁

第5章 程序組織單元(POU) 本章主要講述了 PowerPro 的一個重要概念—程序組織單元(POU)。程序組織單元是組 成工程的基本結(jié)構(gòu)。任何復(fù)雜的工程都是由眾多 POU 組成的,POU 包括程序、功能塊和函 數(shù)。 5.1 章節(jié)講述了 POU 的一些基本概念,使得讀者對 POU 的概念有一定的了解。 5.2 章節(jié)講述了 POU 的建立,5.3 章節(jié)講述了 POU 之間的調(diào)用,這兩節(jié)重點講述了 POU 的使用規(guī)則。5.4 章節(jié)講述了 PowerPro 軟件如何管理 POU。 在本章的學(xué)習(xí)過程中,若遇到一些概念和規(guī)則不易理解,建議初學(xué)者可以跳過這些內(nèi)容, 同時在學(xué)習(xí)過程中采用“邊學(xué)習(xí)、邊練習(xí)”的方式,這樣有助于更快地理解本章的內(nèi)容。同 時建議在學(xué)習(xí)后面的內(nèi)容時也采取這種方法。 5.1 POU 的基本概念 POU 是程序組織單元(Program Organization Unit)的簡稱。POU 可以是函數(shù)(Function)、 功能塊(Function Block)或程序(Program)。其中程序和功能塊的編程語言可以是 LD、FBD、 IL、ST、SFC 及 CFC。函數(shù)的編程語言可以是 LD、FBD、IL、ST 及 CFC,但不能是 SFC。 關(guān)于 POU 的編程語言,請參見第九章。 5.1.1 POU 的類型 POU 分為程序(Program)、功能塊(Function Block)和函數(shù)(Function)等三種類型。 ? 程序(Program) 程序是為了完成某項任務(wù)而編寫的語句序列,是一組指令的集合。程序是唯一可執(zhí) 行的 POU,是邏輯執(zhí)行的主體。程序可以通過任務(wù)組態(tài)來激活,也可以通過其它程 序來調(diào)用。 ? 功能塊(Function Block) 功能塊是預(yù)先編好的、實現(xiàn)某種運算的程序。功能塊本身不能單獨執(zhí)行,只能由程 序調(diào)用功能塊執(zhí)行。在執(zhí)行時,輸入量可以是一個或多個值,輸出量可以是一個或 多個執(zhí)行結(jié)果。與函數(shù)不同,功能塊本身沒有返回值。 ? 函數(shù)(Function) 函數(shù)也是預(yù)先編好的、實現(xiàn)某種運算的程序。函數(shù)在執(zhí)行時,會針對一系列特定的 輸入,產(chǎn)生一個輸出結(jié)果,這個輸出結(jié)果被賦給函數(shù)本身,稱為返回值。函數(shù)只能 被其它 POU 調(diào)用,函數(shù)本身不能單獨執(zhí)行。 5.1.2 POU 的調(diào)用 POU 的調(diào)用有兩種方法。 ? 被其它已經(jīng)調(diào)用的 POU 來調(diào)用。 ? 通過任務(wù)配置來調(diào)用,這種方法僅限于程序調(diào)用。當程序中沒有進行任務(wù)配置時, 系統(tǒng)會自動調(diào)用主程序 PLC_PRG。 POU 的調(diào)用要遵循以下原則,如圖 5-1-1 所示。 - 58 -

第69頁

? 程序可以調(diào)用函數(shù)、功能塊和其它程序。 ? 功能塊可以調(diào)用函數(shù)和其它功能塊。 ? 函數(shù)可以調(diào)用函數(shù)。 程序 (Program) 函數(shù) 功能塊 程序 (Function) (Function Block) (Program) 函數(shù) 函數(shù) 功能塊 (Function) (Function) (Function Block) 圖 5-1-1 POU 的調(diào)用 5.1.3 POU 的組成 POU 包含一個聲明部分和一個代碼部分(程序區(qū))。用戶創(chuàng)建 POU 時,必須編輯這兩 部分。 ? 聲明部分:在變量區(qū)創(chuàng)建、顯示 POU 變量。用戶可在引用變量之前進行定義,也可 以在引用時利用變量定義對話框定義。無論是局部變量還是全局變量,在變量定義 過程中必須遵循一定的格式,具體的格式參見 4.4 章節(jié)。 ? 代碼部分:在程序區(qū)創(chuàng)建,是 POU 的主體,用戶可以選用 IEC 標準編程語言來編 寫。 5.1.4 主程序 PLC_PRG 程序 PLC_PRG 被默認為主程序,是一個特殊的 POU。每個工程必須包含這個主程序才 能正常運行。系統(tǒng)默認每個控制周期調(diào)用一次這個 POU,不需要進行額外的任務(wù)組態(tài)。所以, 工程必須以 PLC_PRG 為主程序,通過它來實現(xiàn)對其它 POU 的調(diào)用。 5.2 創(chuàng)建 POU 5.2.1 創(chuàng)建程序 在對象組織器中選中“程序”選項卡,在程序列表中點擊右鍵,彈出管理 POU 菜單,管理 POU 菜單的詳細介紹詳見 2.5.1 章節(jié)。選擇“添加”,如果列表中無 POU,則新 POU 名默認為 “PLC_PRG”。在彈出的“創(chuàng)建 POU”對話框中,選擇“POU 類型”為“程序”;“POU 語言”可以選 擇 IL、LD、FBD、SFC、ST、CFC 之一;“新 POU 名”為程序名,如輸入 Fct,名字盡量采用 能反映其實際功能的字符,便于識別;點擊“確認”,便創(chuàng)建了程序“Fct(PRG)”。如圖 5-2-1 所示。 - 59 -

第70頁

圖 5-2-1 創(chuàng)建程序 5.2.2 創(chuàng)建功能塊 功能塊的創(chuàng)建和程序類似。在對象組織器中選中“程序”選項卡,在程序列表中點擊右鍵, 選擇“添加”。在彈出的“創(chuàng)建 POU”對話框中,選擇“POU 類型”為“功能塊”,然后進行編程語 言的選擇和命名即可。 5.2.3 創(chuàng)建函數(shù) 函數(shù)的外形結(jié)構(gòu)與功能塊類似,區(qū)別是函數(shù)只有一個輸出端,以下說明如何創(chuàng)建函數(shù)。 在對象組織器中選中“程序”,選擇“添加”。在彈出的“創(chuàng)建 POU”對話框中,選擇“POU 類型”為“函數(shù)”,“返回類型”、“POU 語言”和“新 POU 名”可根據(jù)需要選擇和輸入,如圖 5-2-2 所示。如果新 POU 名為“Fct”,則“Fct”即為函數(shù)名。通常,命名要盡量采用能反映其實際用 途的字符,便于識別。 圖 5-2-2 自定義函數(shù)(1) 設(shè)置好后,自動生成函數(shù)結(jié)構(gòu)體,可以在里面添加所需要的內(nèi)容,如圖 5-2-3 所示。 - 60 -

第71頁

圖 5-2-3 自定義函數(shù)(2) 下面以制作一個數(shù)學(xué)計算式為例來介紹函數(shù)的編寫,如圖 5-2-4 所示。從 VAR_INPUT 到第一個 END_VAR 之間用于定義輸入變量,從 VAR 到第二個 END_VAR 之間用于定義中 間變量,下方窗口進行函數(shù)算法編寫。 圖 5-2-4 自定義函數(shù)(3) 編寫完畢保存。編譯通過后,可以在其它程序中直接調(diào)用,如圖 5-2-5 所示。 圖 5-2-5 自定義函數(shù)(4) - 61 -

第72頁

5.3 調(diào)用 POU 關(guān)于 POU 的調(diào)用方法和調(diào)用原則在 5.1.2 中已經(jīng)介紹,下面分別講述了如何調(diào)用程序、 功能塊和函數(shù)。 5.3.1 調(diào)用程序 程 序 是唯 一可 執(zhí)行 的 POU。程 序可 以調(diào) 用功 能塊 和 函數(shù) 。程 序的 聲明 以關(guān) 鍵 字 PROGRAM 開始,如圖 5-3-1 所示。 圖 5-3-1 程序舉例 程序可以被其它程序調(diào)用,但不允許在函數(shù)中調(diào)用程序。 可以采用不同語言調(diào)用上述程序“PRGExample”。如果調(diào)用使程序的輸出值發(fā)生變化,程 序會保持這個結(jié)果,直到下一次被調(diào)用。 IL 語言調(diào)用: CAL PRGExample LD PRGexample.PAR ST ERG ST 語言調(diào)用: PRGExample; Erg := PRGexample.PAR; FBD 語言調(diào)用: LD 語言調(diào)用: - 62 -

第73頁

5.3.2 調(diào)用功能塊 ? 功能塊 一個功能塊是一個 POU,本身沒有返回值,輸出一個或多個值。功能塊聲明以關(guān)鍵字 FUNCTION_BLOCK 開始。在圖 5-3-2 中,用 IL 編寫了一個功能塊 FUB,有兩個輸入變量和 兩個輸出變量。其中一個輸出是兩個輸入的乘積,另一個輸出是相等比較結(jié)果。 圖 5-3-2 功能塊舉例 功能塊實例聲明 要想調(diào)用功能塊,必須對功能塊進行實例聲明。例如定義一個名稱為 INSTANZ 的 FUB 功能 塊,實例聲明如下: INSTANZ:FUB; 實例針對功能塊而言,每個功能塊實例就是一個獨立的、可完成特定邏輯功能的活動對象。 不同的程序、不同的任務(wù)都可以定義和調(diào)用功能塊的應(yīng)用實例,每個調(diào)用實例都占用獨立的 內(nèi)存,保留獨立的邏輯狀態(tài)。通過定義實例實現(xiàn)對功能塊的調(diào)用。 從外部只能改變功能塊輸入和輸出參數(shù)。不允許對功能塊的內(nèi)部變量直接賦值。功能塊實例 名可以作為函數(shù)或功能塊的輸入。 調(diào)用功能塊 功能塊的調(diào)用,只改變功能塊實例中的值,結(jié)果只有當相同實例被調(diào)用時才起作用。通過輸 入“實例名.變量名”,調(diào)用功能塊中的變量。 在文本語言 IL 和 ST 中,可以在功能塊實例名后加圓括號,設(shè)置輸入?yún)?shù)的初始值。和聲明 變量時初始化一樣,賦值使用符號“:=”。 對于 SFC 語言,功能塊調(diào)用只能發(fā)生在單步運行方式下。 功能塊執(zhí)行以后,所有的值都保留到下次執(zhí)行之前保持不變。由于功能塊中存在中間變量, 使表面上相同的輸入?yún)?shù)實際上可能輸出不同的輸出值。 采用不同語言調(diào)用上述功能塊 FUB 如圖 5-3-3 所示。乘積的結(jié)果保存在變量 ERG 中,比較 的結(jié)果保存在 QUAD 中。 - 63 -

第74頁

IL 語言調(diào)用 ST 語言調(diào)用(聲明部分與 IL 相同) FBD 語言調(diào)用(聲明部分與 IL 相同) 圖 5-3-3 功能塊調(diào)用 ? “功能塊”與“使能運算符”區(qū)別解析 介紹了功能塊之后,下面介紹使能運算符,以便進一步區(qū)分功能塊與使能運算符的區(qū)別。 在前面提到過二者的大體區(qū)別是功能塊與使能運算符的調(diào)用方式不同。對于功能塊,其自備 使能端,不論是否使能,在程序運行時,均會執(zhí)行該功能塊。然而對于使能運算符,只有在 使能端 EN 有效時,才可以調(diào)用該使能運算符。但是對于具體的應(yīng)用則沒有介紹,這里用 LD 語言編寫一個簡單程序進行介紹,如圖 5-3-4 所示。 從圖 5-3-4 中可以看到,通電延時計時器 T1 的輸入端 IN 相當于使能運算符的使能端, - 64 -

第75頁

即所謂的自備使能端。程序開始運行時,當延時 1s 后,%QX0.0 便置 1,PLC 中的對應(yīng)通道 Q0.0 燈變亮。然而對于使能運算符 ADD,在添加使能運算符時就產(chǎn)生其使能端 EN,只有使 能端有效時,方可調(diào)用此使能運算符。即只有當%IX0.0 為 1 時,ADD 使能運算符才會運行。 圖 5-3-4 功能塊與使能運算符 5.3.3 調(diào)用函數(shù) 一個函數(shù)是一個 POU。函數(shù)執(zhí)行時,會對一系列特定的輸入產(chǎn)生唯一數(shù)據(jù)類型的輸出結(jié) 果。相對于功能塊而言,函數(shù)只有一個輸出結(jié)果,沒有任何內(nèi)部條件。也就是說,只要給定 相同的輸入?yún)?shù),調(diào)用函數(shù)必定得到相同的運算結(jié)果。平時所使用的各種數(shù)學(xué)運算,例如 SIN(X)等就是典型的函數(shù)類型。當定義函數(shù)時,函數(shù)必須接收一個數(shù)據(jù)類型作為返回值(返 回數(shù)據(jù)類型)。函數(shù)的計算結(jié)果賦給函數(shù)本身,即函數(shù)的輸出變量就是函數(shù)名本身。函數(shù)定 義以關(guān)鍵字 FUNCTION 開始。 在圖 5-3-5 中,用 IL 語言編寫了函數(shù) Fct,有三個輸入變量,返回的結(jié)果是前兩個數(shù)的 乘積除以第三個數(shù)。調(diào)用時,函數(shù)相當于表達式里的一個運算符,可以賦初值。 圖 5-3-5 函數(shù)舉例 ? 舉例:調(diào)用上述函數(shù) Fct - 65 -

第76頁

IL 語言調(diào)用: LD 7 Fct 4,2 ST Result ST 語言調(diào)用: Result := Fct(7, 4, 2); FBD 語言調(diào)用: 在 SFC 語言中,函數(shù)調(diào)用只能用單步或轉(zhuǎn)化來實現(xiàn)。 ? 舉例 下面再列舉幾個函數(shù)調(diào)用的例子。 例 1:定義函數(shù) CheckBounds,用這個函數(shù)來檢查工程變量范圍的溢出情況,如圖 5-3-6 所示。 圖 5-3-6 函數(shù)調(diào)用舉例(1) 例 2:如果在工程中定義了名為 CheckDivByte、CheckDivWord、CheckDivDWord 和 CheckDivReal 的變量,圖 5-3-7 所示為實現(xiàn) CheckDivReal 函數(shù)的例子。 圖 5-3-7 函數(shù)調(diào)用舉例(2) - 66 -

第77頁

運算符 DIV 使用函數(shù) CheckDivReal 的輸出作為除數(shù),如圖 5-3-8 所示。避免被 0 除,除 數(shù) d 由原值 0 強制成 1,除的結(jié)果是 799。 圖 5-3-8 函數(shù)調(diào)用舉例(3) 5.4 管理 POU 菜單 在 PowerPro 軟件主界面對象組織器的“程序”選項卡中,在程序列表中選擇相應(yīng)的程序, 點擊鼠標右鍵,彈出管理 POU 菜單,如圖 5-4-1 所示。在 2.5.1 章節(jié)對菜單的各項功能進行 了簡單介紹。 圖 5-4-1 管理 POU 菜單 - 67 -

第78頁

5.4.1 添加動作 動作代表某種功能,隸屬于某個程序或功能塊,可以被其他的程序或功能塊調(diào)用。調(diào)用 動作的格式為:“程序名.動作名”,“實例名.動作名”。調(diào)用動作中變量的格式為“程序名.動作 名.變量名”,“實例名.動作名.變量名”。 例如,用 LD 語言編寫程序 PLC_PRG 和 PRG_1,程序 PRG_1 所隸屬的動作 ACT1 也用 LD 語言編寫,再讓程序 PLC_PRG 調(diào)用動作 ACT1 的步驟如下: 首先,編寫程序 PRG_1,在程序 PRG_1 下單擊右鍵彈出管理 POU 菜單,選擇“添加動 作”,彈出 New Action 對話框,確定動作的編程語言以及動作名,命名要盡量采用能反映其 實際用途的字符,便于識別。點擊“確認”,如圖 5-4-2 所示。 圖 5-4-2 創(chuàng)建動作 創(chuàng)建完動作 ACT1,并添加在程序 PRG_1 下,接下來可根據(jù)需要在程序區(qū)編寫動作,如 圖 5-4-3 所示。 圖 5-4-3 動作 ACT1 動作創(chuàng)建完后,可通過“程序名.動作名”,在主程序 PLC_PRG 中調(diào)用 PRG_1 所隸屬的動 作 ACT1,并通過“程序名.動作名.變量名”引用動作的變量 PRG_1.ACT1.CQ1。如圖 5-4-4 所 示。 - 68 -

第79頁

圖 5-4-4 主程序調(diào)用動作 注意: 由于動作隸屬于程序或功能塊,所以動作中的變量在所隸屬的程序或功能塊變量區(qū)中聲明, 即動作自身無變量區(qū)。 5.4.2 建立文件夾 對于較大的工程,為了便于管理和查閱,程序、數(shù)據(jù)類型和全局變量可以統(tǒng)一地組織在 文件夾中,并且可以設(shè)置多級文件夾(前面帶有加號)。通過拖拉可以在對象組織器的范圍 內(nèi)移動程序,點中程序并按住鼠標左鍵拖到指定的位置即可,如圖 5-4-2 所示。文件夾使工 程的組織構(gòu)架更加清楚,對程序沒有任何影響?!靶陆ńM”命令在對象組織器中插入一個新文 件夾。如果某個文件夾被選中,新建文件夾“New Folder”將創(chuàng)建在它的下層。如果某個文件 被選中,新建文件夾“New Folder”將在它的同層創(chuàng)建。 圖 5-4-5 文件夾 - 69 -

第80頁

5.4.3 轉(zhuǎn)換語言 右鍵快捷菜單中的“轉(zhuǎn)換”命令,可以把當前程序語言轉(zhuǎn)換成 IL、FBD 或 LD 中的一種。 該命令對程序、函數(shù)、功能塊均適用。進行轉(zhuǎn)換前,工程必須通過編譯。在“目標語言”中, 選擇希望轉(zhuǎn)化的語言。如果需要給程序重新命名,則程序名必須是工程中未被使用過的,如 果與其它已有程序重名,則無法實現(xiàn)轉(zhuǎn)換。如果新程序名與被轉(zhuǎn)換的程序名相同,則原程序 將被新程序覆蓋。選定后,新的程序自動添加到程序列表中。 注意: 語言轉(zhuǎn)換過程中會產(chǎn)生一些無用的語句,如果需要在不同語言間多次頻繁轉(zhuǎn)換,請先刪除轉(zhuǎn) 換過程中產(chǎn)生的無用語句,以避免不必要的麻煩。 不同語言之間的轉(zhuǎn)換,很好地體現(xiàn)了編程語言的可移植性,但需要注意以下幾點: ? 多層嵌套的 ST 直接轉(zhuǎn)化為 LD 很困難,IF、THEN、CASE、FOR、WHILE 和 REPEAT 格式的語句不能直接轉(zhuǎn)化為功能塊網(wǎng)絡(luò)。 ? IL 語言轉(zhuǎn)化為其它語言是非常困難的,除非指令表操作符的使用范圍及書寫格式受 到嚴格的限制,才有可能實現(xiàn)轉(zhuǎn)化。其它語言則較容易轉(zhuǎn)化為 IL 語言。 ? FBD 語言的大部分程序能夠轉(zhuǎn)化 IL 和 LD 語言。 ? LD 語言、FBD 語言和 IL 語言之間可以相互轉(zhuǎn)化。 ? ST 語言可以轉(zhuǎn)化為 LD、FBD 或 IL 語言,ST 程序也能夠容易地轉(zhuǎn)化為函數(shù)、功能 塊及其相關(guān)的參數(shù)值。 從 ST 語言轉(zhuǎn)化到 LD 語言的一個例子如圖 5-4-3 所示。 圖 5-4-6 程序語言轉(zhuǎn)化 - 70 -

第81頁

第6章 PLC 工作方式 在學(xué)習(xí)了 PLC 管理數(shù)據(jù)和 POU 之后,還需要了解 PLC 是怎么工作的。6.1 章節(jié)就為您 描述了 PLC 的工作方式,請仔細閱讀,將有助于更好地理解程序的執(zhí)行過程。 任務(wù)是 LM 系列 PLC 的一個概念。所謂的任務(wù)是指 PLC 所要執(zhí)行的內(nèi)容。一般來講, PLC 是按程序循環(huán)掃描,若需要產(chǎn)生中斷或觸發(fā)其他事件,則需在任務(wù)配置中進行設(shè)置。若 需了解任務(wù)配置的過程,請參見 6.2 章節(jié)。 6.1 PLC 的工作過程 PLC 以掃描方式工作。所謂掃描是指 CPU 連續(xù)執(zhí)行用戶程序和任務(wù)的循環(huán)過程。PLC 的工作過程一般可以分為輸入采樣、程序執(zhí)行和輸出刷新等三個階段,如圖 6-1-1 所示。 圖6-1-1 PLC工作過程 ? 輸入采樣階段 PLC 以掃描工作方式,按順序?qū)⑺行盘栕x入到寄存輸入狀態(tài)的輸入映像寄存器中存儲, 這一過程稱為采樣。在本工作周期內(nèi),此采樣結(jié)果的內(nèi)容不會改變,而且采樣結(jié)果將在 PLC 執(zhí)行程序時被使用。 ? 程序執(zhí)行階段 PLC 按順序?qū)Τ绦蜻M行掃描,即從上到下和從左到右地掃描每條指令,并分別從輸入映 像寄存器和輸出映像寄存器中獲取所需的數(shù)據(jù),進行運算和處理。再將程序執(zhí)行結(jié)果寫入寄 存執(zhí)行結(jié)果的輸出映像寄存器中保存。注意,在整個程序未執(zhí)行完畢之前,程序執(zhí)行結(jié)果不 會送到輸出端口上。 ? 輸出刷新階段 在執(zhí)行完所有用戶程序后,PLC 將映像寄存器中的內(nèi)容送入到寄存輸出狀態(tài)的輸出鎖存 器中,再去驅(qū)動用戶設(shè)備,這就是輸出刷新。 PLC 重復(fù)執(zhí)行上述三個階段。每重復(fù)一次的時間稱為一個掃描周期。在一個掃描周期中, PLC 的輸入掃描時間和輸出刷新時間一般小于 1ms,而程序執(zhí)行時間因程序長度的不同而不 同。PLC 的一個掃描周期一般在幾十毫秒之內(nèi)。 PLC 的一個工作掃描周期主要分為上述三個階段。但是嚴格來說,還應(yīng)當包括下述三個 過程,這三個過程都是在輸入掃描過程之后進行的。 1、系統(tǒng)自檢測。檢查程序執(zhí)行是否正確,如果超時則停止 CPU 工作。 2、與編程器 PowePro 交換信息。在使用編程器輸入和調(diào)試程序時才執(zhí)行這一過程。 - 71 -

第82頁

3、網(wǎng)絡(luò)通信。當 PLC 配置有網(wǎng)絡(luò)通信模塊時,與通信對象進行數(shù)據(jù)交換。 當 PLC 投入運行后,重復(fù)完成以上三個階段的工作,即采用循環(huán)掃描工作過程,如圖 6-1-2 所示。PLC 工作的主要特點是輸入信號集中批處理、執(zhí)行過程集中批處理和輸出控制集 中批處理。PLC 的這種“串行”工作方式,可以避免繼電器—接觸器控制系統(tǒng)中觸點競爭和時 序失配的問題,這是 PLC 可靠性高的原因之一。但是,循環(huán)掃描工作過程會導(dǎo)致輸出相對輸 入在時間上的滯后,這是 PLC 的缺點之一。 圖6-1-2 PLC掃描工作方式 PLC 在執(zhí)行程序時所使用的狀態(tài)值不是直接從實際輸入端口獲得的,而是來源于輸入映 像寄存器和輸出映像寄存器。輸入映像寄存器的狀態(tài)值取決于上一個掃描周期從輸入端子采 樣取得的數(shù)據(jù),并在程序執(zhí)行階段保持不變。輸出映像寄存器中的狀態(tài)值取決于執(zhí)行程序輸 出指令的結(jié)果。輸出鎖存器中的狀態(tài)值是上一個掃描周期的刷新階段從輸出映像寄存器轉(zhuǎn)入 的。 還需指出一點,在 PLC 中經(jīng)常采用一種稱之為“看門狗”(Watch dog)的定時監(jiān)視器來 監(jiān)視 PLC 的實際工作周期是否超出預(yù)定的時間,以避免 PLC 在執(zhí)行程序的過程中進入死循 環(huán),或 PLC 執(zhí)行非預(yù)定的程序而造成系統(tǒng)癱瘓。 注意: 默認狀態(tài)下,LM 系列 PLC 自動啟動看門狗功能,當程序掃描時間超過 500ms 時,系統(tǒng)認為進 入死循環(huán),將重新啟動,此時,PLC 的 ERR 燈以比較慢的速度閃六下,然后程序復(fù)位,重新開始 執(zhí)行。 6.2 任務(wù)配置 對于一個工程,可以根據(jù)需要配置多個任務(wù),調(diào)用不同的程序。在通常情況下,建議只 定義一個任務(wù),并通過它調(diào)用主程序,其它程序則通過主程序來間接調(diào)用。這種調(diào)用方法只 有程序可以使用,功能塊和函數(shù)不能這樣調(diào)用。 嚴格地說,如果沒有使用任務(wù)配置,在單任務(wù)環(huán)境中,系統(tǒng)默認 PLC_PRG 為主程序, 自動且唯一調(diào)用它,通過它實現(xiàn)對其它程序的調(diào)用。如果使用任務(wù)配置,程序的調(diào)用依賴于 任務(wù)分配。在一般情況下,PLC 控制單任務(wù)環(huán)境即可滿足要求,不需要進行任務(wù)配置。 6.2.1 配置任務(wù) 在“資源”選項卡中雙擊“任務(wù)配置”,右側(cè)彈出任務(wù)配置窗口,鼠標右鍵點擊窗口中的“任 務(wù)配置”項,選擇“Append Task”項,如圖 6-2-1 所示。 - 72 -

第83頁

圖 6-2-1 任務(wù)配置 在彈出的“Taskattributes”窗口中可以分別填入“任務(wù)名”、優(yōu)先級“Priority”、“時間間隔” 等信息,如圖 6-2-2 所示。 圖 6-2-2 任務(wù)屬性 ? 任務(wù)名 任務(wù)的名字,以字母加數(shù)字的方式任意填寫。 ? Priority 任務(wù)的優(yōu)先級。對于 LM 系列 PLC 不區(qū)分優(yōu)先級,先配置的任務(wù)先調(diào)用,所以采用默認 值,不需進行任何修改。 ? 類型 循環(huán):周期地處理任務(wù),周期定義在“屬性”的“間隔”中。如果選擇“循環(huán)”類型,則會發(fā) 現(xiàn)在新建任務(wù)“NewTask”的左側(cè)出現(xiàn)“ ”圖標。 自由運行:只要啟動程序,就處理任務(wù),運行一次后自動重新啟動程序,如此循環(huán)。如 果選擇“自由運行”類型,則會發(fā)現(xiàn)在新建任務(wù)“NewTask”的左側(cè)出現(xiàn)“ ”圖標。 - 73 -

第84頁

事件觸發(fā): PLC 不支持此項功能。 外部事件觸發(fā):PLC 不支持此項功能。 ? 屬性 間隔:當“類型”中選擇“循環(huán)”時,要填入間隔時間。任務(wù)包含的程序運行的周期根據(jù)控 制速度的需要填寫。填寫時注意在前面加“t#”(固定格式),單位可選 ms 毫秒、s 秒、m 分 鐘、h 小時、d 天等。 6.2.2 系統(tǒng)事件 系統(tǒng)事件用于在工程中調(diào)用 POU,而不是用于在任務(wù)中調(diào)用 POU。當相應(yīng)事件觸發(fā)時, 調(diào)用相應(yīng)的 POU,例如 T2、T3、T4 定時器溢出和快速外部中斷脈沖到達等都會產(chǎn)生中斷, 調(diào)用相應(yīng)的事件。 在“資源”選項卡中雙擊“任務(wù)配置”,右側(cè)彈出任務(wù)配置窗口,點擊窗口中“任務(wù)配置”下 的“System events”,右邊窗口顯示所有可用的系統(tǒng)事件,如圖 6-2-3 所示。在右邊窗口中選擇 需要使用的系統(tǒng)事件,即在系統(tǒng)事件的前面方框里打勾,然后在該系統(tǒng)事件后面的“called POU”處,填入當事件觸發(fā)時需要調(diào)用的程序。 圖 6-2-3 System events 對話框 當使用中斷時,就需要進行系統(tǒng)事件配置。具體請參見 10.2 章節(jié)。 注意: 系統(tǒng)事件不支持仿真模式,只有在程序編譯通過且登錄運行后,才會響應(yīng)該事件。 6.2.3 任務(wù)調(diào)用程序 鼠標右鍵點擊“Task”項,在彈出的菜單上選擇“Append Program Call”,彈出“程序調(diào)用” 對話框,如圖 6-2-4 所示。 - 74 -

第85頁

圖 6-2-4 添加程序(1) 鼠標點擊如圖 6-2-5 中的省略號,選擇需要調(diào)用的程序,點擊“確認”按鈕返回,程序即 被任務(wù)所調(diào)用。 圖 6-2-5 添加程序(2) 圖 6-2-6 所示的例子是一個名稱為“task”、優(yōu)先級為“1”、時間周期為“5ms”的任務(wù),通過 這個任務(wù)調(diào)用 reset 程序。 圖 6-2-6 任務(wù)配置示例 - 75 -

第86頁

第7章 創(chuàng)建和管理工程 在介紹了 PowerPro 軟件的編程環(huán)境之后,本章將介紹如何創(chuàng)建一個工程。工程包含 PLC 程序中的所有對象,包括 POU、數(shù)據(jù)類型、資源和算法等。創(chuàng)建一個新工程的順序是可以靈 活掌握的,基本步驟主要包括目標設(shè)置、創(chuàng)建主程序、硬件配置和保存工程等。 7.1 目標設(shè)置 在主界面中點擊“文件”/“新建”菜單,或在工具欄中點擊“ ”按鈕,隨之出現(xiàn)“目標 設(shè)置”對話框。“目標”是指 PLC 的存儲空間,目標設(shè)置是指根據(jù)所選擇的 PLC 的存儲空間 來進行配置。 在“配置”欄中選中“HOLLiAS-LEC G3 CPU Extend”,此目標為程序存儲空間為 120KB 的 CPU 所選用的設(shè)置。點擊“確認”按鈕,如圖 7-1-1 所示。 如果所使用的模塊為存儲空間 28KB 的 CPU,則需選擇“HOLLiAS-LEC G3 CPU”。若 不確定模塊的程序存儲空間大小,請參見附錄。 若需要編寫庫指令,則應(yīng)選擇 None。關(guān)于庫的制作,請參見 7.4.5 章節(jié)。 圖 7-1-1 選擇目標 隨后彈出“目標設(shè)置”窗口,默認設(shè)置已能滿足絕大多數(shù)應(yīng)用需求,點擊“確認”按鈕即可, 如圖 7-1-2 所示。 圖 7-1-2 目標配置 - 76 -

第87頁

7.2 創(chuàng)建主程序 每一個工程都必須在程序中建立一個主程序。主程序調(diào)用其它子程序。在新建工程時, 系統(tǒng)會自動指定一個名字為“PLC_PRG”的程序作為用戶程序的主程序,不得更改。否則,用 戶程序無法正常運行。 目標設(shè)置完成后,會自動彈出“創(chuàng)建 POU”對話框,如圖 7-2-1 所示。POU 程序語言可選 IL、LD、FBD、SFC、ST 或 CFC 中的任意一種,這里選用梯形圖 LD 語言。在“POU 類型” 中選擇“程序”,主程序名默認為“PLC_PRG”,點擊“確認”按鈕。 圖 7-2-1 創(chuàng)建主程序“PLC_PRG” 7.3 硬件模塊配置 PLC 系統(tǒng)通過硬件模塊(包括 CPU 模塊和擴展模塊)采集和處理現(xiàn)場的數(shù)據(jù)。輸入通 道采集現(xiàn)場的數(shù)據(jù),輸出通道控制生產(chǎn)過程中的電氣設(shè)備。為了完成采集和控制任務(wù),需要 根據(jù)具體的工程,對 PLC 系統(tǒng)的硬件模塊進行相應(yīng)的配置。 7.3.1 配置 CPU 模塊 在“資源”選項卡中選擇“PLC 配置”,彈出配置界面。點擊鼠標右鍵,選擇 CPU 模塊的型 號,建立“PLC Configuration”結(jié)構(gòu)樹。例如選擇 LM3107 模塊,如圖 7-3-1 所示。 CPU 模塊的 I/O 具有固定的 I/O 地址。例如 CPU 模塊 LM3107 共有 14 個 DI 通道和 10 個 DO 通道,其中: 輸 入 部 分 以 字 為 單 位 , 從 %IW0 開 始 , 每 個 輸 入 通 道 占 一 個 位 , 存 儲 地 址 依 次 為:%IX0.0、%IX0.1、.......、%IX0.7、%IX1.1、%IX1.2、........、%IX1.7,其中前 14 個地址 為有效地址。 輸 出 部 分以 字 為 單位 , 從 %QW0 開 始 ,每 個 輸出 通 道 占一 個 位 ,存 儲 地址 依 次 為:%QX0.0、%QX0.1、........、%QX0.7、%QX1.0、%QX1.1、......、%QX1.7,其中前 10 個 地址為有效地址。 - 77 -

第88頁

圖 7-3-1 LM3107 基本參數(shù)設(shè)置 對于 CPU 的輸入通道來講,需要配置其輸入通道的濾波參數(shù)。輸入通道的濾波參數(shù)設(shè)置 如圖 7-3-2 所示,其默認值為“32”,如果需要修改此參數(shù),可在“Value”中選擇。 打開“模塊參數(shù)”選項,該“模塊參數(shù)”可以設(shè)置輸入通道的濾波參數(shù),其中每個字段的具 體含義為: ? Index:表示模塊參數(shù)索引號。 ? Name:表示模塊參數(shù),對應(yīng)于相應(yīng)輸入通道。 ? Value:設(shè)置輸入通道濾波參數(shù),默認為 32,可以修改此值。 ? Default:輸入通道濾波參數(shù)默認值為 32。 對“濾波參數(shù)”的定義如下:若采集數(shù)據(jù)在 32 次掃描周期內(nèi)維持原數(shù)據(jù)不變,即采集數(shù) 據(jù)有效,完成濾波。這里是指對開關(guān)量進行濾波的次數(shù),即:濾波次數(shù)為 32 次。 濾波參數(shù)對于高速輸入通道是無效的。在用到高速輸入通道的地方,無需設(shè)置相應(yīng)通道 的濾波參數(shù)。即便做了相應(yīng)設(shè)置,對高速輸入通道也是無影響的。 其他 CPU 模塊的參數(shù)配置與此類似。根據(jù)實際控制要求,選擇合適的 CPU 模塊后,便 可以添加所需的擴展模塊。 圖 7-3-2 LM3107 模塊參數(shù)設(shè)置 - 78 -

第89頁

7.3.2 配置擴展模塊 在選擇 CPU 模塊后,便要添加所需的擴展模塊。在 CPU 模塊上點擊鼠標右鍵,出現(xiàn)模 塊操作對話框,選擇其中的“Append Subelement”項,從彈出的擴展模塊列表中選擇所需的模 塊,如圖 7-3-3 所示。例如,如果選擇添加“LM3230”模塊,則會在“PLC Configuration”下顯 示添加的模塊,如圖 7-3-4 所示。 圖 7-3-3 添加擴展模塊(1) 圖 7-3-4 添加擴展模塊(2) CPU 模塊和擴展模塊的每一個 I/O 通道都對應(yīng)一個實際的物理設(shè)備,其對應(yīng)關(guān)系反映在 隨模塊同時顯示的“基本參數(shù)”中。“基本參數(shù)”包括節(jié)點號、輸入地址、輸出地址和診斷地址 等信息,如圖 7-3-5 所示。其中“節(jié)點號”表示模塊硬件連接的先后次序,擴展模塊根據(jù)連接 次序,依次為“0”、“1”、“2”等,用戶不可隨意更改?!拜斎氲刂贰焙汀拜敵龅刂贰北硎灸K通道 對應(yīng) I/O 存儲區(qū)的起始地址。 圖 7-3-5 擴展模塊的基本參數(shù) 擴展模塊地址受其節(jié)點號、輸入地址、輸出地址和模塊類型的影響。例如,如果四路模 擬量輸入模塊 LM3310 為 CPU 模塊 LM3107 后邊第一個擴展模塊,則通道地址分別 為%IW2、%IW4、%IW6 和%IW8。雙擊模塊或點擊其前面的“+”號,可以看到模塊的類型及 各通道的具體 I/O 地址。 - 79 -

第90頁

配置好模塊后,如果需要,還可以對模塊進行 I/O 變量定義以便訪問。雙擊字符“AT”, 激活變量名輸入框,鍵入變量名即可?!癆T”后面的字符“%”表示地址,即“%”后面的字符為 “AT”前面變量名的地址。 如果需要,還可以為某些通道定義總體的名字,例如 CPU 模塊的“%IW0”默認定義為“I”, 這樣可以用“I.0”直接訪問第一個輸入點,而無需寫成“%IX0.0”。另外,也可以為各通道分別 定義變量名,如圖 7-3-6 中,將“%IX0.0”定義為“start”,將“%IW2”定義為“temp1”。 圖 7-3-6 I/O 變量定義 當光標點擊在“PLC Configuration”處時,可以看到在窗口的右側(cè)有一“設(shè)置”選項卡,其具 體選項包括“自動計算地址”、“檢查重疊地址”和“在工程中保存組態(tài)文件”等,如圖 7-3-7 所示, 其中每個選項的具體含義為: ? 選中“自動計算地址”,表示“基本參數(shù)”中的節(jié)點號、輸入地址、輸出地址和診斷地 址可以根據(jù)模塊硬件連接的先后次序自動排序。 ? 選中“檢查重疊地址”,可以方便地檢查出在編程中不小心定義的重疊地址,有利于 程序被編譯成功。 ? 選中“在工程中保存組態(tài)文件”,可以方便地在工程中保存組態(tài)文件。 圖 7-3-7“設(shè)置”選項卡 關(guān)于擴展模塊的參數(shù)配置,請參見《硬件手冊》,關(guān)于模擬量模塊的應(yīng)用,請參見 10.3 章節(jié)。 7.4 程序編寫 在完成 PLC 配置后,可以開始進行程序編寫。在新建程序時,可以選擇程序的編程語言, 包括 IL、LD、ST、SFC、FBD、CFC 等。在這里,以常用的 LD 語言為例,介紹 PowerPro 編程的規(guī)范。其余語言編程規(guī)范,請參見第九章。 LD 是梯形圖(Ladder Diagram)的簡稱。LD 是一種圖形化的編程語言。用 LD 可以方 便地構(gòu)造邏輯運算。LD 主要由觸點、線圈、功能塊和連接線等編程元件組成。LD 通過水平 線和垂直線連接成平面網(wǎng)狀圖。一般稱最左邊的垂直線為“能量線”,其狀態(tài)永遠是真(TRUE)。 各編程元件以一定的規(guī)則互相連接,最終連接到這條能量線上,形成一個個“節(jié)”、“段”或“網(wǎng) 絡(luò)”,完成特定的邏輯運算,如圖 7-4-1 所示。 - 80 -

第91頁

標簽 注釋 節(jié) 能量線 圖 7-4-1 梯形圖編輯器 在工作區(qū)域的代碼部分點擊右鍵,在右鍵快捷菜單中可以看到當前狀態(tài)常用的命令,如 圖 7-4-2 所示。 ? 前節(jié)、后節(jié):在光標所在當前節(jié)的前面或后面增加空節(jié)。 ? 串聯(lián)、并聯(lián):在光標位置添加與之串聯(lián)或并聯(lián)的觸點。 ? 功能塊:在光標位置插入功能塊。 ? 輸出:在光標所在點添加線圈。 ? 使能運算符:在光標位置添加帶有使能端的 IEC 運算符、函數(shù)、功能塊或子程序。 ? 跳轉(zhuǎn):設(shè)置一個跳轉(zhuǎn)。如果條件為真,則跳轉(zhuǎn)。 ? 返回:如果當前 POU 被其它 POU 調(diào)用,當返回條件為真時,返回到調(diào)用它的 POU。 ? 注釋:可以在每一節(jié)中加入注釋,增加程序的可讀性。 圖 7-4-2 右鍵快捷菜單 7.4.1 節(jié)的操作 節(jié)是 PowerPro 中的一個重要概念,他是程序的基本單位,每個 POU 都是由節(jié)組成。 ? 添加節(jié) “插入”/“前節(jié)”、“后節(jié)”命令在 LD 編輯器中添加一個新節(jié)。等同于右鍵菜單的“前節(jié)”、“后 節(jié)”。 - 81 -

第92頁

? 插入節(jié)注釋 每 個 節(jié) 可 有 多 行 節(jié) 注 釋 。 “ 插 入 ”/“ 注 釋 ” 命 令 可 在 當前 節(jié) 插 入 一 個 注 釋 , 默 認 文 本 為 “Comment”。在“高級”/“選項”的“最大注釋”字段中,可以設(shè)定輸入節(jié)注釋使用的最大行數(shù)(缺 省值是 7)。在“最小注釋”字段中可設(shè)定輸入節(jié)注釋使用的最小行數(shù)(缺省值是 0),如圖 7-4-3 所示。例如,如果輸入數(shù)字 2,那么在每一個節(jié)起始的標簽行之后會有兩個空行。如果 最小注釋大于 0,系統(tǒng)會自動留出注釋行,點擊注釋行可直接輸入注釋。與程序文本相比, 注釋文本顯示為灰色。 圖 7-4-3 注釋設(shè)定 7.4.2 添加觸點和線圈 ? 插入“觸點” 快捷菜單: 。在當前位置前串聯(lián)插入一個觸點。 如果標記位置是一個線圈或觸點和線圈之間的連接線,那么新的觸點會被順序連接到前 一個觸點。 觸點標記文本缺省值為“???”。點擊文本輸入所要的變量或常量。此時,可以使用輸入助 手(快捷鍵 F2),直接從變量列表中選擇輸入,如圖 7-4-4 所示。 圖 7-4-4 變量列表 ? 插入“并聯(lián)觸點” 快捷菜單: 。在光標的標記位置處并聯(lián)插入一個觸點。 如果標記位置是一個線圈或觸點和線圈之間的連接線,那么新的觸點會并聯(lián)到觸點上。 觸點標記文本缺省值為“???”。點擊文本輸入所要的變量或常量。此時,可以使用“輸入 變量”(快捷鍵 F2),直接從變量列表中選擇輸入,如圖 7-4-4 所示。 ? 添加“線圈” 快捷菜單: 。在光標的標記位置輸出一個線圈。 如果標記位置是一段位于觸點和線圈之間的連接線,那么新線圈平行插入到線圈下面。 如果標記位置是一個線圈,那么新線圈平行插入到上面。 - 82 -

第93頁

線圈標記文本缺省值為“???”。點擊文本輸入所要的變量或常量。此時,可以使用“輸入 變量”(快捷鍵 F2),直接從變量列表中選擇輸入,如圖 7-4-4 所示。 線圈只能是并聯(lián)的,從左向右傳遞邏輯值,并且把值保存到合適的邏輯變量中。可以預(yù) 置狀態(tài) ON(對應(yīng)邏輯變量 TRUE 值)或者 OFF(對應(yīng)邏輯變量 FALSE 值)。 ? “取反”操作 快捷菜單: 。觸點和線圈取非。 如果線圈取非,則取非后的值會被保存到對應(yīng)的邏輯變量中。如果觸點取非,只有當邏 輯值是 FALSE 時,才能連通。 ? “置位/復(fù)位”操作 快捷菜單: 。線圈可以定義成置位或者復(fù)位狀態(tài)。 用線圈符號(S)表示一個置位線圈,一旦設(shè)置為 TRUE 值,置位線圈將一直保持為 TRUE, 直到被重新復(fù)位。 用線圈符號(R)表示一個復(fù)位線圈,一旦設(shè)置為 FALSE 值,復(fù)位線圈將一直保持為 FALSE,直到被重新置位。 7.4.3 添加指令 PowerPro 的指令主要有兩種調(diào)用形式:功能塊和使能運算符。下面分別講述這兩者的使 用方法。 ? 使能運算符調(diào)用 在 PowerPro 的指令系統(tǒng)中,一些標準指令,諸如初等運算指令、比較指令、移位指令、 賦值指令、類型轉(zhuǎn)換指令、邏輯運算指令等,都應(yīng)采用使能運算符形式調(diào)用。 右鍵菜單/使能運算符,或者在“插入”菜單中選擇“使能運算符”,均可插入使能運算符。 當插入一個使能運算符時,會出現(xiàn)帶有一個 EN 標志的使能輸入端。使能輸入端 EN 的 輸入為 BOOL 類型。當使能輸入端 EN 為 TRUE 值時,運算才被執(zhí)行,如圖 7-4-5 所示。 圖 7-4-5 插入使能運算符 當選擇插入使能運算符時,系統(tǒng)默認的指令為“AND”,可以選中運算符關(guān)鍵字“AND”, 直接更改為所要求的指令,諸如賦值指令“MOVE”,也可以借助幫助來輸入使能運算符的關(guān) 鍵字。用鼠標激活運算符關(guān)鍵字,按下快捷鍵 F2,或者調(diào)用主菜單“編輯”/“輸入變量”命令, 在彈出的幫助窗口中選擇合適的運算符,便添加了相應(yīng)的使能運算符,如圖 7-4-6 所示。 - 83 -

第94頁

圖 7-4-6 自動提示輸入運算符 ? 功能塊調(diào)用 包括定時器、計數(shù)器、邊沿觸發(fā)器、通訊、高速輸入輸出、模擬量處理指令等在內(nèi)的指 令,應(yīng)采用功能塊的形式調(diào)用。 在使用功能塊調(diào)用這些指令之前,首先需要了解庫的概念。PowerPro 軟件中,把用來實 現(xiàn)這些常用功能的指令集合起來建立專門的庫。假如要使用某些指令,首先需要添加該指令 的庫。關(guān)于庫的概念及使用,請參見 7.4.4 節(jié)。 在添加完相應(yīng)的庫以后,可以在程序中用功能塊形式調(diào)用該指令。右鍵菜單/功能塊,或 者在“插入”菜單中選擇“功能塊”,彈出如圖 7-4-7 所示的對話框,根據(jù)庫選擇所需要的指令即 可。 圖 7-4-7 添加功能塊指令 在應(yīng)用中經(jīng)常會混淆“功能塊”與“使能運算符”的概念。其實二者是有嚴格區(qū)別的,“功能 塊”與“使能運算符”具有不同的調(diào)用形式。對于“功能塊”,其自帶使能端,無論是否使能,在 程序運行時均會執(zhí)行該功能塊。對于“使能運算符”,只有在使能端 EN 有效時,才可以調(diào)用 該使能運算符。 - 84 -

第95頁

注意: 在調(diào)用功能塊指令時,需要對該功能塊進行實例聲明,與變量定義類似,需要定義一個變量,數(shù)據(jù) 類型自動默認為該功能塊類型。一個程序中假如用到多個該指令,其聲明的變量應(yīng)不同。 7.4.4 添加庫 編寫 PLC 程序的過程中,經(jīng)常會引用一些指令或者功能塊,如字符串處理指令、觸發(fā)器 功能塊、計數(shù)器功能塊、PID 控制功能塊等等。在 PowerPro 軟件中,把用來實現(xiàn)這些常用功 能的指令和功能塊集合起來進行分類,然后建立專門的庫。 庫是指令與功能塊的集合,所有的庫都包含“庫名.lib”文件(包含指令和功能塊的輸入輸 出代碼),調(diào)用指令和功能塊只需載入相應(yīng)的“庫名.lib”文件。 最常用的庫主要有標準庫(Standard.lib)、應(yīng)用庫(Util.lib、Util_no_Real.lib)、系統(tǒng)庫 (SysLibC16x.lib、SyslibCallBack.lib)等。標準庫和系統(tǒng)庫在建立工程時就自動添加到程序 中,可以直接調(diào)用,其它庫則需要添加到工程后才可以調(diào)用。系統(tǒng)提供的所有庫文件都以庫 文件*.lib 的形式存在于\\Hollysys\\PowerPro\\Library 目錄下。 ? 庫管理器 庫管理器用來管理庫函數(shù)和功能塊,包含了系統(tǒng)提供的所有標準函數(shù)和功能塊。選擇“窗 口”/“庫管理器”選項,打開庫管理器,如圖 7-4-8 所示。 庫管理器可以顯示所有和當前工程連接的庫,可以像使用用戶自定義的程序、功能塊、 函數(shù)、數(shù)據(jù)類型和變量一樣使用函數(shù)庫里的程序、功能塊、函數(shù)、數(shù)據(jù)類型和變量。 圖 7-4-8 打開庫管理器 標準庫管理器窗口分成 4 個區(qū)域,如圖 7-4-9 所示。綁定到工程的庫列表位于左上區(qū)域, 左下區(qū)域顯示所選擇庫的程序、數(shù)據(jù)類型或全局變量。選擇一個函數(shù)或功能塊后,其變量聲 明出現(xiàn)在庫管理器的右上區(qū)域,右下區(qū)域是函數(shù)或功能塊的圖形顯示。 學(xué)會查看函數(shù)庫是非常重要的。在函數(shù)庫中,給出了一些關(guān)于該函數(shù)非常重要的信息, 例如,該函數(shù)中有幾個輸入變量及中間變量,它們各自的數(shù)據(jù)類型是什么,有哪些中間變量 是必須賦予初始值的以及變量的注釋等等。 - 85 -

第96頁

庫 列變 表量 聲 明 程 序 圖 形 顯 示 圖 7-4-9 庫管理器窗口 ? 添加庫 當庫列表區(qū)的庫文件已不能滿足目前的編程需要時,則需要添加庫。注意,由于 Util.lib 和 Util_no_Real.lib 的數(shù)據(jù)類型有沖突,會產(chǎn)生編譯錯誤,不允許同時添加。使用庫時,需要 保證相應(yīng)的庫文件存在于如下目錄:PowerPro 安裝目錄\\Library\\。添加庫的過程如下所述: 使用“插入”/“添加庫”命令,或在庫管理器窗口的庫列表位置選擇鼠標右鍵菜單命令“添加庫”, 如圖 7-4-10 所示。 圖 7-4-10 添加庫 選擇所需要的庫文件,點擊“打開”。不論哪種庫,只需要打開對應(yīng)的*.lib 文件即可,如 圖 7-4-11 所示。 - 86 -

第97頁

圖 7-4-11 打開庫 上面所選擇的庫被添加到庫列表中,如圖 7-4-12 所示。注意,凡是添加到庫管理器的庫 都會占用用戶程序空間,所以建議用戶只添加所使用的庫。 圖 7-4-12 顯示庫 ? 刪除庫 使用“編輯”/“刪除”命令,或選擇鼠標右鍵菜單“刪除”,可以從工程和庫管理器中刪除已 添加的庫。 注意: 在新建工程后,PowerPro 自動添加了標準庫(Standard.lib)和系統(tǒng)庫(SyslibCallBack.lib), 其余庫文件需要手動添加。 - 87 -

第98頁

7.4.5 庫的制作 在工程實施中,如果有一些算法或邏輯是大量重復(fù)的,而且可以應(yīng)用于多個工程中,則 可以將這部分邏輯制作成庫,以方便于程序編寫、工程維護管理及技術(shù)資源共享。還可以加 上口令,以保護庫的具體實現(xiàn)算法和邏輯不被查看和修改。以下將介紹制作庫的過程: 首先新建一個工程,“目標設(shè)置”中“配置”選“None”,如圖 7-4-13 所示。 圖 7-4-13 自定義庫(1) 確認后,彈出“創(chuàng)建 POU”窗口,如圖 7-4-14 所示。“POU 類型”選擇“功能塊”。根據(jù)需要 填寫“新 POU 名”,一般來說命名要盡量采用能反映其實際用途的字符。在圖 7-3-2 中,“POU 語言”選擇了 ST,“新 POU 名”為“Generate_CRC”,即 CRC 校驗。 圖 7-4-14 自定義庫(2) 設(shè)置完畢后自動生成一個功能塊結(jié)構(gòu)體,可以先保存為庫文件,再往里面添加所需要的 內(nèi)容。保存時注意要存在PowerPro\\Library目錄下,文件名根據(jù)需要定義,保存類型要選擇內(nèi) 部庫(Internal Library),如圖7-4-15所示,使算法邏輯在庫文件中實現(xiàn)。還有一種是外部庫 (External Library),其算法邏輯在模塊中實現(xiàn),庫文件中只定義使用的變量。 - 88 -

第99頁

圖 7-4-15 自定義庫(3) ? 舉例 本例是專為產(chǎn)生 CRC16 校驗而制作的一個 ST 語言的自定義庫,如圖 7-4-16 所示。 編譯通過后,就可以在其它的工程中使用此庫。使用前注意在庫管理器中先要加入此庫。 如果想要在其它的計算機上使用此庫,則只需要將此庫文件復(fù)制到其它計算機的軟件安 裝目錄 PowerPro\\Library 下,再添加到工程中即可。 一個庫中可以包括多個功能塊或函數(shù)。如果想要添加功能塊或函數(shù),只需打開庫文件, 在程序中添加新的功能塊即可。 注意,庫中的功能塊不允許遞歸調(diào)用,即不允許自己調(diào)用自己。 圖 7-4-16 自定義庫(4) - 89 -

第100頁

對于自定義庫,可以加口令保護。這與對程序加密的原理相同,只需在“資源”選項卡中, 選中“工程選項”,打開“Passwords”,設(shè)定相應(yīng)的口令,即可實現(xiàn)加密,如圖7-4-17所示。 圖 7-4-17 自定義庫加密 7.4.6 跳轉(zhuǎn)和返回 跳轉(zhuǎn)和返回都是對程序掃描順序的改變。在正常情況下,PLC 將根據(jù)主程序中節(jié)的順序 進行掃描。 ? 跳轉(zhuǎn):當條件滿足后,則跳轉(zhuǎn)至相應(yīng)的節(jié)。 右鍵菜單/跳轉(zhuǎn),或者在“插入”菜單中選擇“跳轉(zhuǎn)”,均可插入跳轉(zhuǎn)命令,如圖 7-4-18 所示。 插入跳轉(zhuǎn)后,需要輸入跳轉(zhuǎn)標簽(默認為“Label”)。跳轉(zhuǎn)標簽用于識別跳轉(zhuǎn)目的地。如 圖所示,則跳轉(zhuǎn)條件滿足后,直接跳轉(zhuǎn)至第三節(jié),不再執(zhí)行第二節(jié)的程序。 每個網(wǎng)絡(luò)都有一個標簽,缺省為空。標簽在每個網(wǎng)絡(luò)的首行,鼠標直接點擊,即可輸入 標簽。 圖 7-4-18 跳轉(zhuǎn) - 90 -

百萬用戶使用云展網(wǎng)進行電子書冊制作,只要您有文檔,即可一鍵上傳,自動生成鏈接和二維碼(獨立電子書),支持分享到微信和網(wǎng)站!
收藏
轉(zhuǎn)發(fā)
下載
免費制作
其他案例
更多案例
免費制作
x
{{item.desc}}
下載
{{item.title}}
{{toast}}