西門子PLC TIA博途生成隨機(jī)數(shù)
以下內(nèi)容來源于網(wǎng)絡(luò)。
博途工控人VX群+VX:15961872327
博途工控人VX群+VX:15961872327
先建一個功能塊FC,功能FC采用SCL語言來編寫,具體按照如下步驟:
1、在設(shè)計功能時,先確定好,它的具體功能,比如:是想獲取一個隨機(jī)實數(shù),該隨機(jī)實數(shù)是可以定義數(shù)值范圍,還要考慮一些錯誤代碼,該例子定義了三個錯誤狀態(tài)碼,16#7000(無當(dāng)前任務(wù))、16#0000(任務(wù)完成)、16#8200(最大值小于最小值)。
2. 新建一個FC功能塊,命名為random number(FC1) 然后定義接口變量。如下圖:

變量名稱很清晰地描述了變量功能,這里不逐一解釋
3、就是開始寫FC1功能塊程序了 ,程序如下圖所示:
程序共5個程序段:

程序段1 塊內(nèi)變量初始化,三個變量分別賦值0、1、16#7000。
程序段2 檢查輸入范圍變量,是否出現(xiàn)最小值大于最大值的情況。

程序段3 讀系統(tǒng)時間,用納秒,使用納秒的隨機(jī)性。判斷讀系統(tǒng)時間是否有誤,如果有誤,給狀態(tài)變量 賦值。
程序段4 無符號長整型數(shù)需要四個字節(jié),每個字節(jié)和系統(tǒng)時間納秒的四個字節(jié)分別對應(yīng),實際上#tempRandomValue就已經(jīng)是一個隨機(jī)的無符號整型數(shù)了。
程序段5 對#tempRandomValue進(jìn)行標(biāo)準(zhǔn)化操作,使其變成0.0~1.0之間的一個數(shù)據(jù),然后再逆標(biāo)準(zhǔn)化,使這個隨機(jī)數(shù)產(chǎn)生于我們要求的最小值和最大值之間。
4,新建一個全局背景DB,如下圖所示

5 、再主程序OB1中調(diào)用FC1
左側(cè)為數(shù)值的范圍,可以自己隨便定義 右側(cè)為輸出數(shù)字和錯誤代碼

6、 打開模擬器運行 ,如下圖所示,數(shù)據(jù)隨機(jī)變化
