SIMATIC S7-SCL FOR S7-300/400 有效使用S7-SCL。首先,你或許會有一些問題,如: ?? 我怎樣用SCL來設(shè)計程序? ?? 哪些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運行例子程序,需要以下外部設(shè)備: ?? 一個16點的輸入模塊 ?? 一個16點的輸出模塊 調(diào)試功能(Debugging Functions) 程序已經(jīng)創(chuàng)建,用輸入模塊上的開關(guān)和顯示在輸出模塊上,能夠迅速測試此程序。要運行全 面的測試,使用S7-SCL的調(diào)試功能。 也能夠使用STEP 7標(biāo)準(zhǔn)包提供的其他系統(tǒng)函數(shù)。 任務(wù) Task 概述(Overview) 通過輸入模塊獲取測量值,然后通過S7-SCL存貯和處理測量值。結(jié)果將顯示在輸出模塊上。 獲取測量值(Acquire Measured Values) 測量值用8個輸入開關(guān)設(shè)置,當(dāng)檢測到輸入開關(guān)的邊沿時,然后將測量值讀入存中的測量值 數(shù)組(見下圖)。 測量值的范圍是0到255,為此需要1個字節(jié)。 處理測量值(Processing Measured Values) 測量值數(shù)組組織成一個多8個輸入項目的環(huán)形緩沖區(qū)。當(dāng)檢測到排序開關(guān)的信號,測量值數(shù) 組中存貯的值則按增序進(jìn)行排列。其后,計算每個數(shù)的均方根和平方值。為此需要1個字。 
選擇性輸出(Selectable Outputs) 只能顯示一個值在輸出模塊上,要進(jìn)行如下選擇: ?? 從列表中元素的選擇 ?? 測量值、均方根和平方值的選擇 按如下選擇顯示的值如下: ?? 3個開關(guān)用來設(shè)置代碼,檢測到第4個開關(guān)——取碼開關(guān)的信號,則記錄下代碼。從此,被計算的地址用 來存取輸出。 ?? 同一個地址標(biāo)識三個值:測量值、及其均方根和平方值。要選擇這三個值中的一個,要求2個選擇器開 關(guān)。

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

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