S PLC編程及應(yīng)用第三版_廖常初__第章_第1頁
S PLC編程及應(yīng)用第三版_廖常初__第章_第2頁
S PLC編程及應(yīng)用第三版_廖常初__第章_第3頁
S PLC編程及應(yīng)用第三版_廖常初__第章_第4頁
S PLC編程及應(yīng)用第三版_廖常初__第章_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、.1第4章 S7-1200的用戶程序結(jié)構(gòu)4.1 函數(shù)與函數(shù)塊函數(shù)與函數(shù)塊 4.1.1 生成與調(diào)用函數(shù)生成與調(diào)用函數(shù) 1函數(shù)的特點(diǎn)函數(shù)的特點(diǎn) 函數(shù)FCFB是用戶編寫的子程序,它們包含完成特定任務(wù)的程序,F(xiàn)C和FB有與調(diào)用它的塊共享的輸入、輸出參數(shù)。 設(shè)壓力變送器量程的下限為0 MPa,上限為High MPa,經(jīng)A/D轉(zhuǎn)換后得到027648的整數(shù)。轉(zhuǎn)換后的數(shù)字NP之間的計(jì)算公式為P =(High N)/ 27648 (MPa) 用函數(shù)FC1實(shí)現(xiàn)上述運(yùn)算。 2生成函數(shù)生成函數(shù) 指令樹的“添加新塊”,單擊“添加新塊”對話框中的“函數(shù)”按鈕,F(xiàn)C默認(rèn)的編號為1,默認(rèn)的語言為LAD。設(shè)置函數(shù)的名稱為“計(jì)算

2、壓力”。單擊“確定”按鈕,生成FC1。 往下拉動(dòng)程序區(qū)最上面的分隔條,分隔條上面是函數(shù)的接口區(qū),下面是程序區(qū)。.2 在接口區(qū)中生成局部變量,后者只能在它所在的塊中使用。 右鍵單擊項(xiàng)目樹中的FC1,單擊快捷菜單中的“屬性”,選中打開的對話框左邊的“屬性”,用復(fù)選框取消默認(rèn)的屬性“塊的優(yōu)化訪問”。成功編譯后接口區(qū)出現(xiàn)“偏移量”列,只有臨時(shí)數(shù)據(jù)才有偏移量。 函數(shù)各種類型的局部變量的作用如下: 1)輸入?yún)?shù)Input用于接收調(diào)用它的主調(diào)塊提供的輸入數(shù)據(jù)。 2)輸出參數(shù)Output用于將塊的程序執(zhí)行結(jié)果返回給主調(diào)塊。 3)輸入_輸出參數(shù)InOut的初值由主調(diào)塊提供,塊執(zhí)行完后用同一個(gè)參數(shù)將它的值返回給主

3、調(diào)塊。 4)文件夾Return中自動(dòng)生成的返回值“計(jì)算壓力”與函數(shù)的名稱相同,屬于輸出參數(shù)。數(shù)據(jù)類型為Void,表示函數(shù)沒有返回值。 函數(shù)還有兩種局部數(shù)據(jù): 5)臨時(shí)數(shù)據(jù)Temp是暫時(shí)保存在局部數(shù)據(jù)堆棧中的數(shù)據(jù)。每次調(diào)用塊之后,臨時(shí)數(shù)據(jù)可能被同一優(yōu)先級中后面調(diào)用的塊的臨時(shí)數(shù)據(jù)覆蓋。.3 6)常量Constant是塊中使用并且?guī)в蟹柮某A俊?4FC1的程序設(shè)計(jì)的程序設(shè)計(jì) 程序見下圖,運(yùn)算的中間結(jié)果用臨時(shí)局部變量“中間變量”保存。STEP 7自動(dòng)地在局部變量的前面添加#號。 5在在OB1中調(diào)用中調(diào)用FC1 在變量表中生成調(diào)用FC1時(shí)需要的3個(gè)變量,將項(xiàng)目樹中的FC1拖放到右邊的程序區(qū)的水平“導(dǎo)

4、線”上。FC1的方框中左邊的“輸入數(shù)據(jù)”等是在FC1的接口區(qū)中定義的輸入?yún)?shù)和輸入/輸出參數(shù),右邊的“壓力值”是輸出參數(shù)。它們被稱為塊的形式參數(shù),簡稱為形參,形參在FC內(nèi)部的程序中使用。方框外是調(diào)用時(shí)為形參指定的實(shí)際參數(shù),簡稱為實(shí)參。實(shí)參與它對應(yīng)的形參應(yīng)具有相同的數(shù)據(jù)類型。STEP 7自動(dòng)地在全局變量的符號地址兩邊添加雙引號。 PLC變量表 OB1調(diào)用FC1的程序.4 6函數(shù)函數(shù)應(yīng)用的仿真實(shí)驗(yàn)應(yīng)用的仿真實(shí)驗(yàn) 將程序下載到仿真CPU后,CPU切換到RUN模式。單擊精簡視圖右下角的 按鈕,切換到項(xiàng)目視圖。雙擊打開項(xiàng)目樹中的“SIM表1”。 令I(lǐng)0.6為1狀態(tài),調(diào)用FC1,令I(lǐng)W64為13824(2

5、7648的一半),執(zhí)行FC1中的程序后,輸出參數(shù)“壓力值”的值5.0 MPa被傳送給它的實(shí)參“壓力計(jì)算值”MD18。4.1.2 生成與調(diào)用函數(shù)塊生成與調(diào)用函數(shù)塊 1函數(shù)塊函數(shù)塊 函數(shù)塊(FB)是用戶編寫的有自己的存儲區(qū)(背景數(shù)據(jù)塊)的代碼塊,F(xiàn)B的典型應(yīng)用是執(zhí)行不能在一個(gè)掃描周期結(jié)束的操作。每次調(diào)用函數(shù)塊時(shí),都需要指定一個(gè)背景數(shù)據(jù)塊。 2生成函數(shù)塊生成函數(shù)塊 在項(xiàng)目“函數(shù)與函數(shù)塊”中添加名為“電動(dòng)機(jī)控制”的FB1。取消FB1默認(rèn)的屬性“塊的優(yōu)化訪問”。.5 3生成函數(shù)塊的局部變量生成函數(shù)塊的局部變量 函數(shù)塊的輸入、輸出參數(shù)和靜態(tài)數(shù)據(jù)用指定的背景數(shù)據(jù)塊保存。在FB中,定時(shí)器如果使用一個(gè)固定的背景

6、數(shù)據(jù)塊,在同時(shí)多次調(diào)用該FB時(shí),該數(shù)據(jù)塊將會被同時(shí)用于兩處或多處。為此在塊接口中生成數(shù)據(jù)類型為IEC_TIMER的靜態(tài)變量“定時(shí)器DB”,用它提供定時(shí)器TOF的背景數(shù)據(jù)。.6 4FB1的控制要求與程序的控制要求與程序 用輸入?yún)?shù)“起動(dòng)按鈕”和“停止按鈕”控制InOut參數(shù)“電動(dòng)機(jī)”。按下停止按鈕,斷開延時(shí)定時(shí)器(TOF)開始定時(shí),輸出參數(shù)“制動(dòng)器”為1狀態(tài),經(jīng)過輸入?yún)?shù)“定時(shí)時(shí)間”設(shè)置的時(shí)間預(yù)置值后,停止制動(dòng)。 在TOF定時(shí)期間,每個(gè)掃描周期執(zhí)行完FB1之后,用靜態(tài)變量“定時(shí)器DB”來保存TOF的背景數(shù)據(jù)。可以修改函數(shù)塊的輸入、輸出參數(shù)和靜態(tài)變量的默認(rèn)值。該默認(rèn)值作為FB的背景數(shù)據(jù)塊同一個(gè)變量

7、的啟動(dòng)值。調(diào)用FB時(shí)沒有指定實(shí)參的形參使用背景數(shù)據(jù)塊中的啟動(dòng)值。.7 5在在OB1中調(diào)用中調(diào)用FB1 在PLC變量表中生成兩次調(diào)用FB1使用的符號地址。在OB1中兩次調(diào)用FB1,自動(dòng)生成背景數(shù)據(jù)塊。為各形參指定實(shí)參。 6調(diào)用函數(shù)塊的調(diào)用函數(shù)塊的仿真實(shí)驗(yàn)仿真實(shí)驗(yàn) 將程序下載到仿真PLC,后者進(jìn)入RUN模式。在S7-PLCSIM的項(xiàng)目視圖打開項(xiàng)目樹中的“SIM表1”,在表中生成IB0和QB0的SIM表?xiàng)l目。 兩次單擊起動(dòng)按鈕 I0.0,1號設(shè)備Q0.0變?yōu)?狀態(tài)。兩次單擊停止按鈕I0.1,Q0.0變?yōu)?狀態(tài),制動(dòng) Q0.1變?yōu)?狀態(tài)。經(jīng)過參數(shù)“定時(shí)時(shí)間”設(shè)置的時(shí)間后Q0.1變?yōu)?狀態(tài)??梢粤顑膳_設(shè)

8、備幾乎同時(shí)起動(dòng)、同時(shí)停車和制動(dòng)延時(shí)。.8 7處理調(diào)用錯(cuò)誤處理調(diào)用錯(cuò)誤 調(diào)用符號名為“電動(dòng)機(jī)控制”的FB1之后,在FB1的接口區(qū)增加了輸入?yún)?shù)“定時(shí)時(shí)間”,被調(diào)用的FB1的字符變?yōu)榧t色。右鍵單擊出錯(cuò)的FB1,執(zhí)行快捷菜單中的“更新塊調(diào)用”命令,出現(xiàn)“接口同步”對話框,顯示出原有的塊接口和增加了輸入?yún)?shù)后的塊接口。單擊“確定”按鈕,“接口同步”對話框消失。被調(diào)用的FB1被修改為新的接口,程序中FB1的紅色字符變?yōu)楹谏?9 8函數(shù)與函數(shù)塊的區(qū)別函數(shù)與函數(shù)塊的區(qū)別 FB和FC均為用戶編寫的子程序,接口區(qū)中均有Input、Output、InOut參數(shù)和Temp數(shù)據(jù)。FC的返回值實(shí)際上屬于輸出參數(shù)。下面

9、是FC和FB的區(qū)別: 1)函數(shù)塊有背景數(shù)據(jù)塊,函數(shù)沒有。 2)只能在函數(shù)內(nèi)部訪問它的局部變量。其他代碼塊或HMI可以訪問函數(shù)塊的背景數(shù)據(jù)塊中的變量。 3)函數(shù)沒有靜態(tài)變量,函數(shù)塊有保存在背景數(shù)據(jù)塊中的靜態(tài)變量。如果函數(shù)或函數(shù)塊的內(nèi)部不使用全局變量,只使用局部變量,不需要做任何修改,就可以將塊移植到其他項(xiàng)目。如果代碼塊有執(zhí)行完后需要保存的數(shù)據(jù),應(yīng)使用函數(shù)塊。 4)在調(diào)用函數(shù)塊時(shí)可以不設(shè)置某些輸入、輸出參數(shù)的實(shí)參,而是使用它們的默認(rèn)值。函數(shù)的局部變量沒有默認(rèn)值,調(diào)用時(shí)應(yīng)給所有的形參指定實(shí)參。 5)函數(shù)塊的輸出、輸入?yún)?shù)和用靜態(tài)數(shù)據(jù)保存的內(nèi)部狀態(tài)數(shù)據(jù)有關(guān)。 9組織塊與組織塊與FB和和FC的區(qū)別的區(qū)別

10、 出現(xiàn)事件或故障時(shí),由操作系統(tǒng)調(diào)用對應(yīng)的組織塊,F(xiàn)B和FC是用戶程序在代碼塊中調(diào)用的。組織塊沒有輸出參數(shù)、InOut參數(shù)和靜態(tài)數(shù)據(jù),它的輸入?yún)?shù)是操作系統(tǒng)提供的啟動(dòng)信息。用戶可以在組織塊的接口區(qū)生成臨時(shí)變量和常量。組織塊中的程序是用戶編寫的。.104.1.3 多重背景多重背景 1用于定時(shí)器計(jì)數(shù)器的多重背景用于定時(shí)器計(jì)數(shù)器的多重背景 每次調(diào)用IEC定時(shí)器和IEC計(jì)數(shù)器指令時(shí),都需要指定一個(gè)背景數(shù)據(jù)塊。如果這類指令很多,將會生成大量的數(shù)據(jù)塊“碎片”。多重背景用于解決這個(gè)問題。在項(xiàng)目“多重背景”中生成名為“電磁閥控制”的FB2,去掉它的“優(yōu)化的塊訪問”屬性。在接口區(qū)定義數(shù)據(jù)類型為IEC_Timer的

11、靜態(tài)變量TON_DB、TP_DB和TOF_DB,來提供定時(shí)器的背景數(shù)據(jù)。這種程序結(jié)構(gòu)被稱為多重背景。.11 將定時(shí)器TON拖放到程序區(qū),出現(xiàn)“調(diào)用選項(xiàng)”對話框。單擊選中“多重背景”,用選擇框選中列表中的“TON_DB”,用FB2的靜態(tài)變量TON_DB提供TON的背景數(shù)據(jù)。用同樣的方法在FB2中調(diào)用定時(shí)器TP和TOF,用FB2的靜態(tài)變量“TP_DB”和“TOF_DB”提供TP和TOF的背景數(shù)據(jù)。 這樣處理后,3個(gè)定時(shí)器的背景數(shù)據(jù)被包含在它們所在的函數(shù)塊的背景數(shù)據(jù)塊中,不需要為每個(gè)定時(shí)器設(shè)置一個(gè)單獨(dú)的背景數(shù)據(jù)塊。因此能更合理地利用存儲空間。.12 在PLC變量表中定義調(diào)用FB2需要的變量,在OB1

12、中兩次調(diào)用FB2,將用戶程序下載到仿真CPU,CPU切換到RUN模式。在SIM表1中生成地址IB0和QB0,用I0.4和I0.5模擬FB2的輸入信號“使用者1”和“使用者2”幾乎同時(shí)為1狀態(tài)和同時(shí)為0狀態(tài),觀察FB2的輸出參數(shù)“電磁閥1”和“電磁閥2”的狀態(tài)是否按程序的要求變化,各段定時(shí)時(shí)間與FB2中設(shè)置的是否相同。.13 2用于用戶生成的函數(shù)塊的多重背景用于用戶生成的函數(shù)塊的多重背景 在項(xiàng)目“多重背景”生成與4.1.2節(jié)相同的名為“電動(dòng)機(jī)控制”的函數(shù)塊FB1,去掉FB1“優(yōu)化的塊訪問”屬性。生成一個(gè)名為“多臺電機(jī)控制”的函數(shù)塊FB3,去掉FB3“優(yōu)化的塊訪問”屬性。在它的接口區(qū)生成兩個(gè)數(shù)據(jù)類

13、型為“電動(dòng)機(jī)控制”的靜態(tài)變量“1號電動(dòng)機(jī)”和“2號電動(dòng)機(jī)”。每個(gè)靜態(tài)變量內(nèi)部的參數(shù)是自動(dòng)生成的,與FB1“電動(dòng)機(jī)控制”的相同。 在FB3中調(diào)用FB1,在“調(diào)用選項(xiàng)”對話框中選中“多重背景DB”,選中列表中的“1號電動(dòng)機(jī)”,用FB3的靜態(tài)變量“1號電動(dòng)機(jī)”提供FB1“電動(dòng)機(jī)控制”的背景數(shù)據(jù)。用同樣的方法調(diào)用FB1來控制2號電動(dòng)機(jī)。.14 在OB1中調(diào)用FB3“多臺電機(jī)控制”,F(xiàn)B3的背景數(shù)據(jù)塊只有靜態(tài)變量“1號電動(dòng)機(jī)”和“2號電動(dòng)機(jī)”。兩次調(diào)用FB1的背景數(shù)據(jù)都在FB3的背景數(shù)據(jù)塊DB1中。 將用戶程序下載到仿真PLC,CPU切換到RUN模式。在SIM表1中生成地址IB0和QB0,用I0.0同和

14、I0.2分別啟動(dòng)1號、2號電動(dòng)機(jī),用I0.1同和I0.3分別停止1號、2號電動(dòng)機(jī),觀察電動(dòng)機(jī)和制動(dòng)器的狀態(tài)變化是否正常。.154.2 數(shù)據(jù)類型與間接尋址數(shù)據(jù)類型與間接尋址4.2.1 數(shù)據(jù)類型數(shù)據(jù)類型 1數(shù)據(jù)類型的分類數(shù)據(jù)類型的分類 數(shù)據(jù)類型分為基本數(shù)據(jù)類型、復(fù)雜數(shù)據(jù)類型、參數(shù)類型、系統(tǒng)數(shù)據(jù)類型和硬件數(shù)據(jù)類型。 2參數(shù)類型參數(shù)類型 參數(shù)類型是傳遞給被調(diào)用塊的形參的數(shù)據(jù)類型。參數(shù)類型Void不保存數(shù)值,它用于函數(shù)不需要返回值的情況。 3系統(tǒng)數(shù)據(jù)類型系統(tǒng)數(shù)據(jù)類型 系統(tǒng)數(shù)據(jù)類型(SDT)由系統(tǒng)提供,可供用戶使用,具有不能更改的預(yù)定義的結(jié)構(gòu)。例如定時(shí)器結(jié)構(gòu)IEC_TIMER,6種整數(shù)數(shù)據(jù)類型的計(jì)數(shù)器結(jié)構(gòu)

15、等。 4硬件數(shù)據(jù)類型硬件數(shù)據(jù)類型 硬件數(shù)據(jù)類型與硬件組態(tài)時(shí)模塊的設(shè)置有關(guān)。它用于識別硬件元件、事件和中斷OB等與硬件有關(guān)的對象。PLC變量表的“系統(tǒng)常量”選項(xiàng)卡列出了項(xiàng)目中的硬件數(shù)據(jù)類型變量的值,即硬件組件和中斷事件的標(biāo)識符。.16 5數(shù)據(jù)類型的轉(zhuǎn)換方式數(shù)據(jù)類型的轉(zhuǎn)換方式 調(diào)用指令或塊時(shí),如果操作數(shù)具有不同的數(shù)據(jù)類型,應(yīng)對它們進(jìn)行轉(zhuǎn)換。 (1)隱式轉(zhuǎn)換 如果操作數(shù)的數(shù)據(jù)類型兼容,將自動(dòng)執(zhí)行隱式轉(zhuǎn)換。兼容性測試使用兩種標(biāo)準(zhǔn): 1)使用IEC檢查,采用嚴(yán)格的兼容性規(guī)則,指令有關(guān)的操作數(shù)應(yīng)具有相同的數(shù)據(jù)類型。 2)不使用IEC檢查,不要求指令有關(guān)的操作數(shù)具有相同的數(shù)據(jù)類型,但是必須具有相同的數(shù)據(jù)位數(shù)

16、,例如16位的數(shù)據(jù)類型Int、UInt和Word。 (2)顯式轉(zhuǎn)換 操作數(shù)不兼容時(shí),只能使用顯式轉(zhuǎn)換指令。可使用指令列表的“數(shù)學(xué)函數(shù)”“轉(zhuǎn)換操作”和“字符串 + 字符”文件夾中的指令。 6設(shè)置設(shè)置IEC檢查功能檢查功能 (1)設(shè)置對項(xiàng)目中所有新的塊進(jìn)行IEC檢查 執(zhí)行“選項(xiàng)”菜單中的“設(shè)置”命令,選中出現(xiàn)的“設(shè)置”編輯器左邊窗口的“PLC編程”中的“常規(guī)”組,用復(fù)選框選中右邊窗口“新塊的默認(rèn)設(shè)置”區(qū)中的“IEC檢查” 。 (2)設(shè)置單獨(dú)的塊進(jìn)行IEC檢查 如果沒有設(shè)置對項(xiàng)目中所有的新塊進(jìn)行IEC檢查,用鼠標(biāo)右鍵單擊項(xiàng)目樹中的某個(gè)代碼塊,執(zhí)行快捷菜單中的“屬性”命令,選中打開的對話框左邊窗口的“

17、屬性”組,用右邊窗口中的復(fù)選框激活或取消IEC檢查功能。 .174.2.2 間接尋址間接尋址 1用用FieldRead與與FieldWrite指令實(shí)現(xiàn)間接尋址指令實(shí)現(xiàn)間接尋址 在項(xiàng)目“間接尋址”中生成DB1,在DB1中生“數(shù)組1”Array1.5 of Int。使用指令FieldRead(讀取域)和FieldWrite(寫入域)指令實(shí)現(xiàn)間接尋址。設(shè)置要寫入或讀取的數(shù)據(jù)類型為Int。參數(shù)MEMBER的實(shí)參必須是數(shù)組的第一個(gè)元素“數(shù)據(jù)塊1”.數(shù)組11。參數(shù)索引值“INDEX”是要讀寫的數(shù)組元素的下標(biāo),數(shù)據(jù)類型為DINT。參數(shù)“VALUE”是要寫入數(shù)組元素的操作數(shù)或保存讀取的數(shù)組元素的值的地址。 將

18、程序下載到仿真PLC,啟動(dòng)OB1的程序狀態(tài)監(jiān)視功能。用鼠標(biāo)右鍵單擊指令FieldWrite的輸入?yún)?shù)INDEX的實(shí)參MD10,將MD10的值修改為3。啟用數(shù)據(jù)塊1的監(jiān)視功能,可以看到輸入?yún)?shù)VALUE的值25被寫入下標(biāo)為3的數(shù)組元素“數(shù)據(jù)塊1”.數(shù)組13。修改INDEX的值,VALUE的值將被寫入INDEX對應(yīng)的數(shù)組元素。 用上述方法設(shè)置指令FieldRead的輸入?yún)?shù)INDEX的值為3,輸出參數(shù)VALUE的實(shí)參MW18中是讀取的下標(biāo)為3的數(shù)組元素“數(shù)據(jù)塊1”.數(shù)組13的值。.18 2使用間接尋址的循環(huán)程序使用間接尋址的循環(huán)程序 在項(xiàng)目“間接尋址”的DB1中生成有5個(gè)DInt元素的數(shù)組“數(shù)組2

19、”,數(shù)據(jù)類型為Array1.5 of DInt,設(shè)置各數(shù)組元素的初始值。生成一個(gè)名為“累加雙字”的函數(shù)FC1,輸入?yún)?shù)“數(shù)組IN”的數(shù)據(jù)類型為Array1.5 of Dint。 FC1的程序首先將“累加結(jié)果”清零,設(shè)置數(shù)組下標(biāo)的初始值為1,程序段2的跳轉(zhuǎn)標(biāo)簽Back表示循環(huán)的開始。指令FieldRead用來實(shí)現(xiàn)間接尋址,其參數(shù)INDEX是要讀寫的數(shù)組元素的下標(biāo)。讀取數(shù)組元素值后,將它與輸出參數(shù)“累加結(jié)果”的值相加,將數(shù)組的下標(biāo)加1,它指向下一個(gè)數(shù)組元素,為下一次循環(huán)做好準(zhǔn)備。將作為循環(huán)次數(shù)計(jì)數(shù)器的“累加個(gè)數(shù)”減1。減1后如果非0則返回標(biāo)簽Back處,開始下一次循環(huán)的操作。.19 在OB1中調(diào)用

20、FC1“累加雙字”,求數(shù)據(jù)塊1中的數(shù)組2從第一個(gè)元素開始,若干個(gè)數(shù)組元素之和,運(yùn)算結(jié)果用MD20(“累加值”)保存。 將程序下載到仿真PLC,CPU切換到RUN模式。用MW24設(shè)置要求和的數(shù)組元素的個(gè)數(shù)為5。啟動(dòng)監(jiān)視功能。在“累加啟動(dòng)”信號M2.0的上升沿調(diào)用FC1“累加雙字”,通過循環(huán)程序計(jì)算出數(shù)組2的5個(gè)元素的累加和為15。 3數(shù)組元素的間接索引數(shù)組元素的間接索引 將項(xiàng)目“間接尋址”中的FC1復(fù)制為名為“間接索引”的FC2,用MOVE指令取代上述循環(huán)程序中的FieldRead,用Int數(shù)據(jù)類型的變量做下標(biāo),可以實(shí)現(xiàn)一維或多維數(shù)組的間接尋址。.20 改變MOVE指令的實(shí)參“#數(shù)組IN#下標(biāo)”

21、中的“下標(biāo)”,就可以實(shí)現(xiàn)間接尋址,讀取數(shù)組不同的元素的值。4.3 中斷事件與中斷指令中斷事件與中斷指令4.3.1 事件與組織塊事件與組織塊 1啟動(dòng)組織塊的事件啟動(dòng)組織塊的事件 組織塊OB是操作系統(tǒng)與用戶程序的接口,出現(xiàn)啟動(dòng)組織塊的事件時(shí),由操作系統(tǒng)調(diào)用對應(yīng)的組織塊。如果當(dāng)前不能調(diào)用OB,則按照事件的優(yōu)先級將其保存到隊(duì)列。如果沒有為該事件分配OB,則會觸發(fā)默認(rèn)的系統(tǒng)響應(yīng)。 2事件執(zhí)行的優(yōu)先級與中斷隊(duì)列事件執(zhí)行的優(yōu)先級與中斷隊(duì)列 事件一般按優(yōu)先級的高低來處理,先處理高優(yōu)先級的事件。優(yōu)先級相同的事件按“先來先服務(wù)”的原則來處理。如果設(shè)置為OB可中斷模式,更高優(yōu)先級的事件將中斷正在運(yùn)行的OB。 各事件

22、有默認(rèn)的組織塊,此外還可以生成編號大于等于123的組織塊。.21 3用用DIS_AIRT與與EN_AIRT指令禁止與激活中斷指令禁止與激活中斷 可以用指令DIS_AIRT延時(shí)處理優(yōu)先級高于當(dāng)前組織塊的中斷OB,調(diào)用指令EN_AIRT啟用以前調(diào)用DIS_AIRT延時(shí)的組織塊處理。4.3.2 初始化組織塊與循環(huán)中斷組織塊初始化組織塊與循環(huán)中斷組織塊 1程序循環(huán)組織塊程序循環(huán)組織塊 項(xiàng)目為“啟動(dòng)組織塊與循環(huán)中斷組織塊”,自動(dòng)生成程序循環(huán)組織塊OB1。 雙擊項(xiàng)目數(shù)中的“添加新塊”,單擊“組織塊”按鈕,選中列表中的“Program cycle”,生成一個(gè)程序循環(huán)組織塊。OB默認(rèn)的編號為123,語言為LA

23、D。單擊“確定”按鈕,生成OB123。 分別在OB1和OB123中生成簡單的程序,將它們下載到仿真PLC,如果可以用I0.4和I0.5分別控制Q1.0和Q1.1,說明OB1和OB123均被循環(huán)執(zhí)行。 2啟動(dòng)組織塊啟動(dòng)組織塊 啟動(dòng)組織塊用于首次掃描時(shí)將系統(tǒng)初始化,生成OB100,給QB0置初值7,將MB14加1。在仿真時(shí)觀察OB100的功能是否正常。 3循環(huán)中斷組織塊循環(huán)中斷組織塊 循環(huán)中斷組織塊以設(shè)定的循環(huán)時(shí)間(160000ms)周期性地執(zhí)行,而與程序循環(huán)OB的執(zhí)行無關(guān)。循環(huán)中斷和延時(shí)中斷組織塊的個(gè)數(shù)之和最多允許4個(gè),循環(huán)中斷OB的編號應(yīng)為OB30OB38,或大于等于123。.22 生成OB3

24、0,將循環(huán)時(shí)間改為1s。相位偏移用于錯(cuò)開不同時(shí)間間隔的幾個(gè)循環(huán)中斷OB。OB30的程序控制8位彩燈循環(huán)移位,I0.2控制彩燈是否移位,I0.3控制移位的方向。 在CPU運(yùn)行期間,用SET_CINT指令重新設(shè)置循環(huán)中斷的循環(huán)時(shí)間和相移,時(shí)間的單位為s,用QRY_CINT指令查詢循環(huán)中斷的狀態(tài)。MB9是讀取的狀態(tài)字MW8的低位字節(jié),M9.4為1表示已下載OB30,M9.2為1表示已啟用循環(huán)中斷。.234.3.3 時(shí)間中斷組織塊時(shí)間中斷組織塊 1時(shí)間中斷的功能時(shí)間中斷的功能 時(shí)間中斷用于在設(shè)置的日期和時(shí)間產(chǎn)生一次中斷,或從設(shè)置的日期時(shí)間開始,周期性地重復(fù)產(chǎn)生中斷。時(shí)間中斷OB的編號應(yīng)為1017,或大

25、于等于123。在OB1中調(diào)用指令QRY_TINT來查詢時(shí)間中斷的狀態(tài)。在I0.0的上升沿,調(diào)用指令SET_TINT和ACT_TINT來分別設(shè)置和激活時(shí)間中斷OB10。 參數(shù)LOCAL為1表示使用本地時(shí)間。16#0201表示每分鐘產(chǎn)生一次時(shí)間中斷。參數(shù)ACTIVATE為1時(shí),該指令設(shè)置并激活時(shí)間中斷,為0僅設(shè)置時(shí)間中斷。本例用指令A(yù)CT_TINT來激活時(shí)間中斷。在OB10中將MB4加1。.24 3仿真實(shí)驗(yàn)仿真實(shí)驗(yàn) 打開仿真軟件S7-PLCSIM,生成IB0、MB4和MB9的SIM表?xiàng)l目,MB9是QRY_TINT讀取的狀態(tài)字MW8的低位字節(jié)。下載所有的塊后,仿真PLC切換到RUN模式,M9.4為1

26、狀態(tài),表示已經(jīng)下載了OB10。M9.2為1狀態(tài),表示時(shí)間中斷已被激活。如果設(shè)置的是已經(jīng)過去的日期和時(shí)間,CPU將會在0秒時(shí)每分鐘調(diào)用一次OB10,將MB4加1。在I0.1的上升沿,時(shí)間中斷被禁止,M9.2變?yōu)?狀態(tài),MB4停止加1。在I0.0的上升沿,時(shí)間中斷被重新激活,M9.2變?yōu)?狀態(tài),MB4每分鐘又被加1。4.3.4 硬件中斷組織塊硬件中斷組織塊 1硬件中斷事件與硬件中斷組織塊硬件中斷事件與硬件中斷組織塊 硬件中斷事件包括CPU內(nèi)置的和信號板的DI的上升沿/下降沿事件,高速計(jì)數(shù)器的實(shí)際計(jì)數(shù)值等于設(shè)定值 、計(jì)數(shù)方向改變和外部復(fù)位輸入信號的上升沿。最多可以生成50個(gè)硬件中斷OB,其編號應(yīng)為4

27、047,或大于等于123。 在項(xiàng)目“硬件中斷例程1”中生成硬件中斷OB40、OB41,組態(tài)時(shí)將它們分配給I0.0的上升沿事件和I0.1的下降沿事件。 在OB40和OB41中,分別用M1.2一直閉合的常開觸點(diǎn)將Q0.0:P置位和復(fù)位。.25 將程序下載到仿真PLC,打開SIM表1,生成IB0和QB0的SIM表?xiàng)l目。兩次單擊I0.0對應(yīng)的小方框,在I0.0的上升沿,CPU調(diào)用OB40,將Q0.0置位為1。兩次單擊I0.1對應(yīng)的小方框,在I0.1的下降沿,CPU調(diào)用OB41,將Q0.0復(fù)位。4.3.5 中斷連接指令與中斷分離指令中斷連接指令與中斷分離指令 “將OB附加到中斷事件”指令A(yù)TTACH和“

28、將OB與中斷事件分離”指令DETACH分別用于在PLC運(yùn)行時(shí)建立和斷開硬件中斷事件與中斷OB的連接。要求使用指令A(yù)TTACH和DETACH,在出現(xiàn)I0.0上升沿事件時(shí),交替調(diào)用硬件中斷組織塊OB40和OB41,分別將不同的數(shù)寫入QB0。項(xiàng)目為“硬件中斷2”。 在硬件組態(tài)時(shí)將OB40分配給I0.0的上升沿中斷事件。該中斷事件出現(xiàn)時(shí),調(diào)用OB40。在OB40中,斷開該事件與OB40的連接,建立該事件與OB41的連接。用MOVE指令給QB0賦值為16#F。OB40.26 下一次出現(xiàn)I0.0上升沿事件時(shí),在OB41中,斷開該事件與OB41的連接,建立該事件與OB40的連接。用MOVE指令給QB0賦值為

29、16#F0。OB41 4仿真實(shí)驗(yàn)仿真實(shí)驗(yàn) 將程序下載到PLC,打開SIM表1,生成I0.0和QB0的SIM表?xiàng)l目。在I0.0的上升沿,CPU調(diào)用OB40,斷開I0.0的上升沿事件與OB40的連接,將該事件與OB41連接。將16#0F寫入QB0,后者的低4位為1。 在I0.0下一個(gè)上升沿,CPU調(diào)用OB41,斷開I0.0的上升沿事件與OB41的連接,將該事件與OB40連接。將16#F0 寫入QB0,后者的高4位為1。 連續(xù)多次單擊I0.0對應(yīng)的小方框,CPU交替調(diào)用OB40和OB41,QB0被交替寫入16#0F和16#F0。.274.3.6 延時(shí)中斷組織塊延時(shí)中斷組織塊 時(shí)間延遲OB的編號為20

30、23,或大于等于123。項(xiàng)目為“時(shí)間延遲中斷例程”。在I0.0的上升沿中斷OB40中,調(diào)用指令SRT_DINT,啟動(dòng)10s延時(shí)。時(shí)間范圍為160000ms,精度為1ms。調(diào)用“讀取本地時(shí)間”指令RD_LOC_T,讀取啟動(dòng)延時(shí)的時(shí)間,用DB1中的變量DT1保存。 定時(shí)時(shí)間到時(shí)調(diào)用OB20。在OB20中調(diào)用RD_LOC_T指令,讀取延時(shí)結(jié)束的時(shí)間,用DB1中的變量DT2保存。同時(shí)將Q0.4:P置位。 OB20 OB1.28 在OB1中調(diào)用指令QRY_DINT來查詢延時(shí)中斷的狀態(tài)字STATUS。在I0.1為1時(shí)調(diào)用指令CAN_DINT來取消延時(shí)中斷過程。 仿真時(shí)生成IB0、QB0和MB9的SIM表?xiàng)l目,M9.4為1表示OB20已經(jīng)下載到CPU,M9.2為1表示正在執(zhí)行SRT_DINT啟動(dòng)的時(shí)間延時(shí)。 監(jiān)控DB1中延時(shí)的起、止時(shí)間。 定時(shí)期間令I(lǐng)0.1為1狀態(tài),調(diào)用指令CAN_DINT取消時(shí)間延遲,M9.2變?yōu)镕ALSE。10s的延遲時(shí)間到的時(shí)候,不會調(diào)用OB20。Q0.4不會變?yōu)門RUE,DB1中的DT2也不會顯示出新讀取的時(shí)間值。.294.4 交叉引用表與程序信息交叉引用表與

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論