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

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

在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)用的次序。 
選擇和要用的塊類(lèi)型(Selecting and Assigning the Available Block Types) 根據(jù)下列準(zhǔn)則選擇各個(gè)塊: 定義塊間接口 Defining the Interfaces Between Blocks 概述(Overview) 功能 Function 塊名稱(chēng) Block Name 用戶(hù)程序只能在一個(gè)OB啟動(dòng)。因測(cè)量值將被不斷地獲取,要求有一個(gè)循環(huán)調(diào)用的組織塊(OB1)。 程序部分——數(shù)據(jù)輸入和數(shù)據(jù)輸出在此OB中編程。 "Cycle" OB
子任務(wù)“獲取測(cè)量數(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ù)排序測(cè)量數(shù)據(jù)和計(jì)算結(jié)果選擇塊類(lèi)型時(shí),記住須要一個(gè)包含每個(gè)測(cè)量值的計(jì)算結(jié)果“均方根”和“平方值”的輸出緩沖區(qū)。只有FB是合適的塊類(lèi)型。因?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ù)值返回,而且無(wú)可用數(shù)據(jù)在一個(gè)程序循環(huán)后再需要保留。標(biāo)準(zhǔn)的S7-SCL函數(shù)SORT能夠用來(lái)計(jì)算均方根。建立特殊函數(shù)SQUARE來(lái)計(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ù)能夠分為以下幾類(lèi): |