西门子上升沿指令_西门子SCL编程实例——霓虹灯顺序控制(DECO指令)
有如下控制任務(wù):
舞臺(tái)上有8根霓虹燈燈管,要求順序點(diǎn)亮燈管。燈管編號(hào)1到8,從1號(hào)開(kāi)始,每次只有一根燈管點(diǎn)亮,持續(xù)的時(shí)間為2秒鐘。當(dāng)8號(hào)燈管點(diǎn)亮結(jié)束后,再次從1號(hào)開(kāi)始,如此循環(huán)。
今天這篇文章,我們使用西門子SCL編程語(yǔ)言來(lái)完成這個(gè)控制任務(wù)。
8根燈管分別連接到數(shù)字量輸出的8個(gè)通道上,假設(shè)使用ET200MP的DQ 8x24VDC/2A HF,通道地址為QB0。
要完成該控制任務(wù),可以順序控制的方式一步一步來(lái)寫(xiě)代碼。但是,這樣寫(xiě)起來(lái)會(huì)比較繁瑣。本文給大家介紹一個(gè)簡(jiǎn)單的方法,使用DECO指令。
DECO指令稱為"解碼"指令,它可以把雙字/字/字節(jié)的指定位置1(set),并且將其它位置0(reset),它的基本語(yǔ)法為:
resultDoubleWord := DECO_DWORD(IN:=tmpBitNumber) ;//雙字
或者:
resultWord := DECO_WORD(IN:=tmpBitNumber) ;//字
或者:
resultByte:= DECO_BYTE(IN:=tmpBitNumber) ;//字節(jié)
其中:
- tmpBitNumber是要置1的位編號(hào)。編號(hào)從右往左開(kāi)始,最右邊的位編號(hào)為0;
- Result是DECO指令的輸出值;
例如,要將某字節(jié)的第0位置1,可以使用下面的代碼:
resultByte:= DECO_BYTE(IN:=0) ;//字節(jié)的第0位置1
這樣,resultByte的值=2#00000001;
回到本文的控制任務(wù),我們編寫(xiě)功能塊FB52_NenoLights,它有一個(gè)輸入信號(hào)start和輸出值Q,其中:
- start:布爾型變量,啟動(dòng)信號(hào),上升沿有效;
- Q:字節(jié)型變量,為輸出的字節(jié);
- 還有一些用用于上升沿檢測(cè)的靜態(tài)變量,模塊變量的聲明如下圖所示:
代碼如下圖所示:
在主程序中,我們通過(guò)CPU的2s時(shí)鐘脈沖來(lái)觸發(fā)啟動(dòng)信號(hào),輸出地址為QB0,代碼如下圖所示:
其實(shí),DECO指令還可以實(shí)現(xiàn)用一個(gè)按鈕控制多個(gè)電機(jī)的啟停。比如,第1次按下按鈕,電機(jī)1運(yùn)行;第2次按下按鈕,電機(jī)1停止,電機(jī)2運(yùn)行。。。;它可以用簡(jiǎn)單的代碼,實(shí)現(xiàn)復(fù)雜的功能。后續(xù)我會(huì)錄個(gè)視頻演示下這個(gè)代碼;
好了,關(guān)于DECO指令就先介紹到這里。
我的新書(shū)《西門子S7-200 SMART PLC應(yīng)用技術(shù)——編程、通信、裝調(diào)、案例》已經(jīng)出版,歡迎點(diǎn)擊下面的鏈接查看:
總結(jié)
以上是生活随笔為你收集整理的西门子上升沿指令_西门子SCL编程实例——霓虹灯顺序控制(DECO指令)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Mysql学习总结(8)——MySql基
- 下一篇: [flask]gunicorn配置文件