设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
西门子SCL编程实例——霓虹灯顺序控制(DECO指令) ...
返回列表
发新帖
[西门子]
西门子SCL编程实例——霓虹灯顺序控制(DECO指令)
[复制链接]
20050
|
0
|
2024-4-28 20:37:51
|
显示全部楼层
|
阅读模式
有如下控制任务:
舞台上有8根霓虹灯灯管,要求顺序点亮灯管。灯管编号1到8,从1号开始,每次只有一根灯管点亮,持续的时间为2秒钟。当8号灯管点亮结束后,再次从1号开始,如此循环。
今天这篇文章,我们使用西门子SCL编程语言来完成这个控制任务。
8根灯管分别连接到数字量输出的8个通道上,假设使用ET200MP的DQ 8x24VDC/2A HF,通道地址为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#00000001;
回到本文的控制任务,我们编写功能块FB52_NenoLights,它有一个输入信号start和输出值Q,其中:
start:布尔型变量,启动信号,上升沿有效;
Q:字节型变量,为输出的字节;
还有一些用用于上升沿检测的静态变量,模块变量的声明如下图所示:
代码如下图所示:
在主程序中,我们通过CPU的2s时钟脉冲来触发启动信号,输出地址为QB0,代码如下图所示:
其实,DECO指令还可以实现用一个按钮控制多个电机的启停。比如,第1次按下按钮,电机1运行;第2次按下按钮,电机1停止,电机2运行。。。;它可以用简单的代码,实现复杂的功能。后续我会录个视频演示下这个代码;
好了,关于DECO指令就先介绍到这里。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
菱机妙用
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』