西門子PLC用TIA博途SCL語(yǔ)言寫的一個(gè)產(chǎn)生隨機(jī)實(shí)數(shù)的指令塊(學(xué)習(xí)1)
致敬老工控人-劉立峰
這是西門子的一個(gè)功能FC,我們可以用它來(lái)學(xué)習(xí)SCL語(yǔ)言,也可以用來(lái)分析和學(xué)習(xí)怎樣做一個(gè)比較合理且完整的功能FC。
1. 在設(shè)計(jì)該功能時(shí),先確定好,它的具體功能,比如:此例的功能是獲取一個(gè)隨機(jī)實(shí)數(shù),該隨機(jī)實(shí)數(shù)是可以定義在自己想要的數(shù)值范圍內(nèi)的,還要考慮一些錯(cuò)誤代碼的定義,該例子定義了三個(gè)錯(cuò)誤狀態(tài)碼,16#7000(無(wú)當(dāng)前任務(wù))、16#0000(任務(wù)完成)、16#8200(最大值小于最小值)。
2. 這里使用一個(gè)FC塊,首先定義變量。如下圖:

由于變量名稱很清晰地描述了變量功能,所以不逐一解釋。
3. 程序段1。如下圖:

塊內(nèi)變量初始化,三個(gè)變量分別賦值0、1、16#7000。
4. 程序段2。如下圖:

檢查輸入范圍變量,是否出現(xiàn)最小值大于最大值的情況。
5. 程序段3。如下圖:

讀系統(tǒng)時(shí)間,用納秒,使用納秒的隨機(jī)性。判斷讀系統(tǒng)時(shí)間是否有誤,如果有誤,給狀態(tài)變量賦值。
6. 程序段4。如下圖:

無(wú)符號(hào)長(zhǎng)整型數(shù)需要四個(gè)字節(jié),每個(gè)字節(jié)和系統(tǒng)時(shí)間納秒的四個(gè)字節(jié)分別對(duì)應(yīng),實(shí)際上#tempRandomValue就已經(jīng)是一個(gè)隨機(jī)的無(wú)符號(hào)整型數(shù)了。
7. 程序段5。如下圖:

對(duì)#tempRandomValue進(jìn)行標(biāo)準(zhǔn)化操作,使其變成0.0~1.0之間的一個(gè)數(shù)據(jù),然后再逆標(biāo)準(zhǔn)化,使這個(gè)隨機(jī)數(shù)產(chǎn)生于我們要求的最小值和最大值之間。
8. 功能調(diào)用。如下圖:

要生成100.0~1000.0之間的隨機(jī)數(shù),以上為效果,每個(gè)掃描周期產(chǎn)生一個(gè)隨機(jī)實(shí)數(shù),監(jiān)控顯示隨機(jī)數(shù)468.7597。
公眾號(hào):? 巨控電子