有效使用S7-SCL。首先,你或許會有一些問題,如: ?? 我怎樣用SCL來設(shè)計(jì)程序? ?? 哪些S7-SCL語言功能適合執(zhí)行任務(wù)? ?? 有什么調(diào)試功能可用? 本部分中將回答這些及其他問題。 用到的S7-SCL語言元素(S7-SCL language Elements Used) 例子程序采用了下列S7-SCL語言功能: ?? 各種S7-SCL塊類型的結(jié)構(gòu)和應(yīng)用 ?? 帶參數(shù)傳遞的塊調(diào)用和賦值 ?? 各種輸入和輸出格式 ?? 用基本數(shù)據(jù)類型的數(shù)組編程 ?? 初始化變量 ?? 程序結(jié)構(gòu),分支及循環(huán)的使用 硬件要求(Required Hardware) 能夠在SIMATIC S7-300或SIMATIC S7-400運(yùn)行例子程序,需要以下外部設(shè)備: ?? 一個(gè)16點(diǎn)的輸入模塊 ?? 一個(gè)16點(diǎn)的輸出模塊 調(diào)試功能(Debugging Functions) 程序已經(jīng)創(chuàng)建,用輸入模塊上的開關(guān)和顯示在輸出模塊上,能夠迅速測試此程序。要運(yùn)行全 面的測試,使用S7-SCL的調(diào)試功能。 也能夠使用STEP 7標(biāo)準(zhǔn)包提供的其他系統(tǒng)函數(shù)。 任務(wù) Task 概述(Overview) 通過輸入模塊獲取測量值,然后通過S7-SCL存貯和處理測量值。結(jié)果將顯示在輸出模塊上。 獲取測量值(Acquire Measured Values) 測量值用8個(gè)輸入開關(guān)設(shè)置,當(dāng)檢測到輸入開關(guān)的邊沿時(shí),然后將測量值讀入內(nèi)存中的測量值 數(shù)組(見下圖)。 測量值的范圍是0到255,為此需要1個(gè)字節(jié)。 處理測量值(Processing Measured Values) 測量值數(shù)組組織成一個(gè)多8個(gè)輸入項(xiàng)目的環(huán)形緩沖區(qū)。當(dāng)檢測到排序開關(guān)的信號,測量值數(shù) 組中存貯的值則按增序進(jìn)行排列。其后,計(jì)算每個(gè)數(shù)的均方根和平方值。為此需要1個(gè)字。 
選擇性輸出(Selectable Outputs) 只能顯示一個(gè)值在輸出模塊上,要進(jìn)行如下選擇: ?? 從列表中元素的選擇 ?? 測量值、均方根和平方值的選擇 按如下選擇顯示的值如下: ?? 3個(gè)開關(guān)用來設(shè)置代碼,檢測到第4個(gè)開關(guān)——取碼開關(guān)的信號,則記錄下代碼。從此,被計(jì)算的地址用 來存取輸出。 ?? 同一個(gè)地址標(biāo)識三個(gè)值:測量值、及其均方根和平方值。要選擇這三個(gè)值中的一個(gè),要求2個(gè)選擇器開 關(guān)。

結(jié)構(gòu)化S7-SCL程序的設(shè)計(jì) Design of a Structured S7-SCL Program
塊的種類(Block Types) 采用結(jié)構(gòu)化S7-SCL程序是前面定義的任務(wù)的解決方案。換言之,意思是采用模塊化設(shè) 計(jì),程序分成幾個(gè)塊,每塊對應(yīng)特定的子任務(wù)。在SCL中,與在STEP 7中的其他語言一樣,有 下列塊類型可用。

在S7-SCL源文件中塊的約定(Arrangement of Blocks in S7-SCL Source Files) 一個(gè)S7-SCL程序包含一個(gè)或幾個(gè)S7-SCL源文件。一個(gè)源文件能夠包含單個(gè)塊或一個(gè)有幾個(gè)塊 的完整程序。 
定義子任務(wù) Defining the Subtasks
子任務(wù)(Subtasks) 下圖顯示了子任務(wù),方形區(qū)域表示塊。邏輯塊從左到右排列,也是他們被調(diào)用的次序。 
選擇和要用的塊類型(Selecting and Assigning the Available Block Types) 根據(jù)下列準(zhǔn)則選擇各個(gè)塊: 定義塊間接口 Defining the Interfaces Between Blocks 概述(Overview) 功能 Function 塊名稱 Block Name 用戶程序只能在一個(gè)OB啟動。因測量值將被不斷地獲取,要求有一個(gè)循環(huán)調(diào)用的組織塊(OB1)。 程序部分——數(shù)據(jù)輸入和數(shù)據(jù)輸出在此OB中編程。 "Cycle" OB
子任務(wù)“獲取測量數(shù)據(jù)”要求一個(gè)帶存的塊,即功能塊,因?yàn)槟承┍镜貕K數(shù)據(jù)(如環(huán)形緩沖區(qū))必須從一個(gè)程序循環(huán)保留至下一個(gè)程序循環(huán)。排序數(shù)據(jù)(存)的定位在實(shí)例數(shù)據(jù)塊ACQUIRE_DATA中。同樣的FB也能夠管理地址和選擇輸出子任務(wù),因數(shù)據(jù)是在此用。 "Acquire" FB
當(dāng)為子任務(wù)排序測量數(shù)據(jù)和計(jì)算結(jié)果選擇塊類型時(shí),記住須要一個(gè)包含每個(gè)測量值的計(jì)算結(jié)果“均方根”和“平方值”的輸出緩沖區(qū)。只有FB是合適的塊類型。因?yàn)樵谡{(diào)用層次中,此FB被上層的FB調(diào)用,它不需要擁有自己的DB。其實(shí)例數(shù)據(jù)能夠存貯在調(diào)用它的FB的實(shí)例數(shù)據(jù)塊中。"Evaluate" FB
函數(shù)適合子任務(wù)計(jì)算均方根和平方值,因結(jié)果能夠作為函數(shù)值返回,而且無可用數(shù)據(jù)在一個(gè)程序循環(huán)后再需要保留。標(biāo)準(zhǔn)的S7-SCL函數(shù)SORT能夠用來計(jì)算均方根。建立特殊函數(shù)SQUARE來計(jì)算均方根,同時(shí)檢查其值是否在允許的范圍。"SQRT" FC(square root)and"Square" FC
定義塊間接口 Defining the Interfaces Between Blocks 概述(Overview) 塊的接口由能夠?yàn)槠渌麎K存取的參數(shù)組成。 聲明的參數(shù)是一個(gè)占位符,當(dāng)塊被實(shí)際地使用(被調(diào)用)時(shí),則有一個(gè)值。占位符當(dāng)作形式參 數(shù),當(dāng)塊被調(diào)用時(shí)的值作為實(shí)際參數(shù)。當(dāng)一個(gè)塊被調(diào)用,輸入數(shù)據(jù)作為實(shí)際參數(shù)傳遞給 它。程序返回到凋用塊后,輸出數(shù)據(jù)可用作更多的處理。函數(shù)能夠傳遞其結(jié)果作為函數(shù)值。 塊參數(shù)能夠分為以下幾類: Cycle OB CYCLE OB沒有自己的形式參數(shù)。它調(diào)用功能塊ACQUIRE,并傳遞測量值和控制數(shù)據(jù)到其形式參 數(shù)。 "獲取"功能塊(Acquire FB) 求值(Evaluate) 功能塊ACQUIRE調(diào)用功能塊EVALUATE。他們共享的是要求排序的測量值數(shù)組。而且數(shù)組聲明成 輸入/輸出參數(shù)。為計(jì)算結(jié)果均方根和平方值建立了一個(gè)結(jié)構(gòu)化的數(shù)組作為輸出參數(shù)。下表顯 示了形式參數(shù): SQRT and Square 這些函數(shù)被EVALUATE調(diào)用。他們需要一個(gè)輸入值(自變量),并作為函數(shù)值返回其結(jié)果。
|