plc模擬量輸入輸出都會(huì)涉及到數(shù)據(jù)類(lèi)型的互轉(zhuǎn)問(wèn)題,然而西門(mén)子300系統(tǒng)對(duì)于數(shù)據(jù)格式有著明確的規(guī)定,一般的四則運(yùn)算都是在同一數(shù)據(jù)類(lèi)型下才能進(jìn)行的,這也是一直以來(lái)困擾初學(xué)者的一個(gè)問(wèn)題。
西門(mén)子300編程軟件step7 和 博圖都提供了相應(yīng)的模擬量輸入輸出處理模塊fc105,fc106。但是好多場(chǎng)合下,要對(duì)數(shù)據(jù)進(jìn)行線(xiàn)性轉(zhuǎn)換或運(yùn)算,靠這兩個(gè)函數(shù)是遠(yuǎn)遠(yuǎn)不夠的。這時(shí)候就需要用戶(hù)自己動(dòng)手寫(xiě)一些數(shù)據(jù)轉(zhuǎn)換的子程序。所以知道西門(mén)子數(shù)據(jù)類(lèi)型轉(zhuǎn)換是很有必要的。
1.模擬量數(shù)據(jù)采集值(piw int) 轉(zhuǎn)換為 物理量(浮點(diǎn)數(shù)real)
西門(mén)子plc通過(guò)采集通道采集到的值以整型(int)型式保存在piwx(piw0)內(nèi),要換算為浮點(diǎn)型式的物理量需要經(jīng)過(guò)以下兩步。
第一步:把int 轉(zhuǎn)換為 dint ,不用為為什么,就是精度精度精度。
第二部:把dint 轉(zhuǎn)換為real。
這兩步都很簡(jiǎn)單,如圖所示。難點(diǎn)在于,把浮點(diǎn)數(shù)(real)轉(zhuǎn)換為整形(int),再通過(guò)pqw輸出。
2.物理量(浮點(diǎn)數(shù)real) 轉(zhuǎn)換為 模擬量數(shù)據(jù)輸出值(pqw int)
西門(mén)子plc以整型(int)型式輸出模擬量(pqw0),一般的物理量都是浮點(diǎn)數(shù)型式,要把物理量換算為模擬量輸出,需要經(jīng)過(guò)以下兩步。
第一步:通過(guò)round函數(shù)或trunc函數(shù),把real數(shù)據(jù)轉(zhuǎn)換為di格式。
round是實(shí)數(shù)轉(zhuǎn)換雙字整數(shù)指令,小數(shù)點(diǎn)后的第一位采取四舍五入。trunc也是實(shí)數(shù)轉(zhuǎn)換為雙整數(shù),但是去小數(shù)部分取整數(shù)。
第二部:把dint 數(shù)據(jù)通過(guò)move指令輸送到vw區(qū),再通過(guò)move指令由pqw輸出即可。