当前位置:首页 > 技术分享 > 正文

西门子SCL编程实例——霓虹灯顺序控制(DECO指令)

有如下控制任务:舞台上有8根霓虹灯灯管,要求顺序点亮灯管。灯管编号1到8,从1号开始,每次只有一根灯管点亮,持续的时间为2秒钟。当8号灯管点亮结束后,再次从1号开始,如此循环。今天这篇文章,我们使用西门子SCL编程语言来完成这个控制任务。8根灯管分别连接到数字量输出的8个通道上,假设使用ET200M...

有如下控制任务:舞台上有8根霓虹灯灯管,要求顺序点亮灯管。灯管编号1到8,从1号开始,每次只有一根灯管点亮,持续的时间为2秒钟。当8号灯管点亮结束后,再次从1号开始,如此循环。今天这篇文章,我们使用西......

有如下控制任务:

舞台上有8根霓虹灯灯管,要求顺序点亮灯管。灯管编号1到8,从1号开始,每次只有一根灯管点亮,持续的时间为2秒钟。当8号灯管点亮结束后,再次从1号开始,如此循环。

今天这篇文章,我们使用西门子SCL编程语言来完成这个控制任务。


8根灯管分别连接到数字量输出的8个通道上,假设使用ET200MP的DQ8x24VDC/2AHF,通道地址为QB0。

要完成该控制任务,可以顺序控制的方式一步一步来写代码。但是,这样写起来会比较繁琐。本文给大家介绍一个简单的方法,使用DECO指令。

DECO指令称为"解码"指令,它可以把双字/字/字节的指定位置1(set),并且将其它位置0(reset),它的基本语法为:

resultDoubleWord:=DECO_DWORD(IN:=tmpBitNumber);//双字

或者:

resultWord:=DECO_WORD(IN:=tmpBitNumber);//字

或者:

resultByte:=DECO_BYTE(IN:=tmpBitNumber);//字节

其中:

tmpBitNumber是要置1的位编号。编号从右往左开始,最右边的位编号为0;

Result是DECO指令的输出值;

例如,要将某字节的第0位置1,可以使用下面的代码:

resultByte:=DECO_BYTE(IN:=0);//字节的第0位置1

这样,resultByte的值=2{text-decoration:none;outline:none;display:block;width:100%;height:100%;}e8e8e8;position:relative;padding:20px94px12px180px;overflow:hidden;}.pgc-card::after{content:"";display:block;border-left:1pxsolid222;line-height:1;font-weight:bold;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.pgc-content-desc{font-size:14px;color:f85959;padding-top:18px;line-height:1em;}.pgc-card-buy{width:75px;position:absolute;right:0;top:50px;color:#406599;font-size:14px;text-align:center;}.pgc-buy-text{padding-top:10px;}.pgc-icon-buy{height:23px;width:20px;display:inline-block;background:url();}

S7-200SMARTPLC应用技术

¥84.5

购买

最新文章