這是西門子的一個功能FC,我們可以用它來學習SCL語言,也可以用來分析和學習怎樣做一個比較合理且完整的功能FC。
1. 在設計該功能時,先確定好,它的具體功能,比如:此例的功能是獲取一個隨機實數,該隨機實數是可以定義在自己想要的數值範圍內的,還要考慮一些錯誤代碼的定義,該例子定義了三個錯誤狀態碼,16#7000(無當前任務)、16#0000(任務完成)、16#8200(最大值小於最小值)。 2. 這裡使用一個FC塊,首先定義變量。如下圖:
由於變量名稱很清晰地描述了變量功能,所以不逐一解釋。
3. 程序段1。如下圖:
塊內變量初始化,三個變量分別賦值0、1、16#7000。
4. 程序段2。如下圖:
檢查輸入範圍變量,是否出現最小值大於最大值的情況。
5. 程序段3。如下圖:
讀系統時間,用納秒,使用納秒的隨機性。判斷讀系統時間是否有誤,如果有誤,給狀態變量賦值。
6. 程序段4。如下圖:
無符號長整型數需要四個字節,每個字節和系統時間納秒的四個字節分別對應,實際上#tempRandomValue就已經是一個隨機的無符號整型數了。
7. 程序段5。如下圖:
對#tempRandomValue進行標準化操作,使其變成0.0~1.0之間的一個數據,然後再逆標準化,使這個隨機數產生於我們要求的最小值和最大值之間。
8. 功能調用。如下圖:
要生成100.0~1000.0之間的隨機數,以上為效果,每個掃描週期產生一個隨機實數,監控顯示隨機數468.7597。
閱讀更多 會發光的太陽 的文章