西门子SCL编程实例——霓虹灯顺序控制(DECO指令)
有如下控制任务:
舞台上有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指令的输出值;
resultByte:= DECO_BYTE(IN:=0) ;//字节的第0位置1
这样 , resultByte的值=2#00000001;
回到本文的控制任务 , 我们编写功能块FB52_NenoLights , 它有一个输入信号start和输出值Q , 其中:
- start:布尔型变量 , 启动信号 , 上升沿有效;
- Q:字节型变量 , 为输出的字节;
- 还有一些用于上升沿检测的静态变量 , 模块变量的声明如下图所示:
文章插图
【西门子SCL编程实例——霓虹灯顺序控制(DECO指令)】代码如下图所示:
文章插图
在主程序中 , 我们通过CPU的2s时钟脉冲来触发启动信号 , 输出地址为QB0 , 代码如下图所示:
文章插图
其实 , DECO指令还可以实现用一个按钮控制多个电机的启停 。 比如 , 第1次按下按钮 , 电机1运行;第2次按下按钮 , 电机1停止 , 电机2运行 。。。 ;它可以用简单的代码 , 实现复杂的功能 。 后续我会录个视频演示下这个代码;
好了 , 关于DECO指令就先介绍到这里 。
我的新书《西门子S7-200 SMART PLC应用技术——编程、通信、装调、案例》已经出版 , 欢迎点击下面的链接查看:
推荐阅读
- 机器人|万州区举办“中国梦科技梦”机器人编程大赛
- 英特尔推出可检测代码错误的ControlFlag机器编程工具
- 可编程3D打印耗材可帮助普通3D打印机轻松实现多材料物品的制作
- 菜鸟学编程,不懂C++ this指针?还不赶快来学一学
- 大学生如何提升Java编程能力
- 对于一个编程小白来说,该学习Java还是Python
- 盘点:2020年5种流行的 AI 编程语言,就业高薪不是梦
- 为何学习编程往往都是从编写输出HelloWorld的程序开始
- 我测|一款重量仅87克的无人机,如何链接大疆教育7年编程梦
- 如何正确地学习编程语言