西門子S7-1200PLC模塊江西代理價(jià)格

西門子S7-300/400 PLC的取整指令
PLC數(shù)據(jù)類型中存在浮點(diǎn)數(shù)類型,在某些應(yīng)用場合下只需要浮點(diǎn)數(shù)的整數(shù)部分,那么就涉及到取整的問題。下面依次介紹S7-300/400系統(tǒng)中基本的取整指令。
(1)取整為長整型數(shù)的指令
對(duì)浮點(diǎn)數(shù)取整為長整型數(shù)指令的基本結(jié)構(gòu)如圖4-46所示。大體結(jié)構(gòu)與前面介紹的指令類似,ROUND為該指令的標(biāo)題,用于指明該指令的功能;EN端和ENO端所能識(shí)別的數(shù)據(jù)仍為BOOL類型的數(shù)據(jù)。IN端輸入REAL類型的數(shù)據(jù),OUT端輸出DINT類型盼數(shù)據(jù)。其中,IN端可以為具體的數(shù),也可以為存儲(chǔ)地址;而OUT端只能為存儲(chǔ)地址。
ROUND指令將輸入IN的數(shù)據(jù)以浮點(diǎn)數(shù)讀取,并將其轉(zhuǎn)換為長整型(32位),結(jié)果為接近的整數(shù)(“取整到接近值”)。如果浮點(diǎn)數(shù)介于兩個(gè)整數(shù)之間,則返回偶數(shù)。結(jié)果由輸出端OUT輸出。如果產(chǎn)生溢出,ENO的狀態(tài)為“0”。
如輸入的浮點(diǎn)數(shù)為485.63,則經(jīng)指令取整輸出486;如果輸入的浮點(diǎn)數(shù)為485.43,經(jīng)指令取整輸出485;如果輸入的浮點(diǎn)數(shù)為485.50,這個(gè)浮點(diǎn)數(shù)介于整數(shù)485和整數(shù)486之間,則經(jīng)指令取整輸出偶數(shù)486。
(2)截取長整型數(shù)部分的指令
截取長整型數(shù)部分指令的基本結(jié)構(gòu)如圖4-47所示。IN端輸入REAL類型的數(shù)據(jù),OUT端輸出DINT類型的數(shù)據(jù)。TRUNC指令將輸入端IN的數(shù)據(jù)以浮點(diǎn)數(shù)讀取,并將其轉(zhuǎn)換為長整型(32位)。長整型數(shù)結(jié)果(向零取整)由輸出端OUT輸出。如果產(chǎn)生溢出,ENO的狀態(tài)為“0”。

圖4-46 ROUND指令結(jié)構(gòu)

圖4-47 TRUNC指令結(jié)構(gòu)
(3)向上取整指令
向上取整指令的基本結(jié)構(gòu)如圖4-48所示。IN端輸入REAL類型的數(shù)據(jù),OUT端輸出DNT類型的數(shù)據(jù)。CEIL指令將輸入端IN的數(shù)據(jù)以浮點(diǎn)數(shù)讀取,并將其轉(zhuǎn)換為長整型(32位)。結(jié)果為大于該浮點(diǎn)數(shù)的小整數(shù)(取整為正無窮大)。如果產(chǎn)生溢出,ENO的狀態(tài)為"0"。
如輸入端IN輸入的數(shù)據(jù)為456.89,則輸出端OUT輸出的數(shù)據(jù)為457,即大于所給浮點(diǎn)數(shù)小的整數(shù)。

(4)向下取整指令
向下取整指令的基本結(jié)構(gòu)如圖449所示。IN端輸入REAL類型的數(shù)據(jù),OUT端輸出DINT類型的數(shù)據(jù)。FLOOR指令將輸入端IN的數(shù)據(jù)以浮點(diǎn)數(shù)讀取,并將其轉(zhuǎn)換為長整型(32位)。結(jié)果為小于該浮點(diǎn)數(shù)的大整數(shù)部分(取整為負(fù)無窮大)。如果產(chǎn)生溢出,ENO的狀態(tài)為“0”。
如輸入端IN輸入的數(shù)據(jù)為456.89,則輸出端OUT輸出的數(shù)據(jù)為456,即小于所給浮點(diǎn)數(shù)大的整數(shù)。

圖4-48 CEIL指令結(jié)構(gòu)

圖4-49 FLOOR指令結(jié)構(gòu)
(1)對(duì)整型數(shù)取補(bǔ)碼的指令
對(duì)整型數(shù)取補(bǔ)碼指令的結(jié)構(gòu)如圖4-42所示,其基本結(jié)構(gòu)也與前面介紹的指令類似。
IN端和OUT端均為INT類型的數(shù)據(jù),其中OUT端輸出的為IN端輸入數(shù)的二進(jìn)制補(bǔ)碼。NEG_I指令讀取輸入端IN的數(shù)據(jù)并執(zhí)行二進(jìn)制補(bǔ)碼指令,二進(jìn)制補(bǔ)碼指令等同于乘以(-1)后改變符號(hào)(如從正值變?yōu)樨?fù)值)?;旧?/span>ENO與EN的信號(hào)狀態(tài)保持相同,只有當(dāng)EN端的信號(hào)為高電位“1”且產(chǎn)生溢出時(shí),ENO端才與EN端的信號(hào)不同,此時(shí)ENO端為低電位“0”。
(2)對(duì)長整型數(shù)取補(bǔ)碼的指令

對(duì)長整型數(shù)取補(bǔ)碼指令的結(jié)構(gòu)如圖4-43所示,其基本結(jié)構(gòu)與對(duì)整型數(shù)取補(bǔ)碼指令的結(jié)構(gòu)一樣。IN端和OUT端均為DINT類型的數(shù)據(jù),其中OUT端輸出的為IN端輸入數(shù)的二進(jìn)制補(bǔ)碼。NEG_DI指令讀取輸入端IN的數(shù)據(jù)并執(zhí)行二進(jìn)制補(bǔ)碼指令,二進(jìn)制補(bǔ)碼指令等同于乘以(-1)后改變符號(hào)(如從正值變?yōu)樨?fù)值)。同樣的,除了當(dāng)EN端的信號(hào)為高電位“1”且產(chǎn)生溢出時(shí),ENO端與EN端的信號(hào)不同外,其他情況下EN端和ENO端的信號(hào)狀態(tài)一樣。

圖4-42 NEG_I指令結(jié)構(gòu)

圖4-43 NEG_DI指令結(jié)構(gòu)
(3)對(duì)浮點(diǎn)型數(shù)取補(bǔ)碼的指令
對(duì)浮點(diǎn)型數(shù)取補(bǔ)碼指令的結(jié)構(gòu)如圖4-44所示。IN端和OUT端的輸入、輸出數(shù)據(jù)均為REAL類型的數(shù)據(jù);NEG_R指令讀取輸入端IN的數(shù)據(jù)并執(zhí)行二進(jìn)制補(bǔ)碼指令,二進(jìn)制補(bǔ)碼指令等同于乘以(-1)后改變符號(hào)(如從正值變?yōu)樨?fù)值);ENO始終與EN的信號(hào)狀態(tài)相同。
NEG_R指令在程序中的具體應(yīng)用如圖4-45所示。

圖4-44 NEG_R指令結(jié)構(gòu)

圖4-45 NEG_R指令具體的編程
在圖4-45中,輸入端為ID4存儲(chǔ)區(qū)內(nèi)的數(shù)據(jù),因?yàn)楦↑c(diǎn)數(shù)是以32位4個(gè)字節(jié)存儲(chǔ)的,所以在給IN端和OUT端存儲(chǔ)單元時(shí)一定要注意是4個(gè)字節(jié)的單元。本例中,當(dāng)I0.1為高電位“1”時(shí),指令將輸入端的數(shù)據(jù)取反輸出到MD8中。例如,ID4=+8.236,則輸出結(jié)果為MD8=-8.236。

西門子S7-1200PLC模塊江西代理價(jià)格