欢迎光临
我们一直在努力

工控人必练!S7-1200字逻辑指令经典应用,手把手教你写彩灯控制程序

    学会了西门子S7-1200字逻辑指令的基础用法,怎么才能真正用到实际项目里?最经典、最必练的实战案例,就是16路彩灯奇偶交替闪烁控制。

     这个案例完美覆盖了求反码INV、赋值、时钟脉冲等核心功能,把字逻辑指令“批量处理多路信号”的优势发挥到了极致。如果不用字逻辑指令,16路彩灯交替控制要写几十行程序,而用字逻辑指令,短短3段程序就能搞定,代码简洁又高效。新手只要把这个案例吃透,现场的多路指示灯、多组电磁阀、批量输出控制项目,都能直接举一反三。

    这篇文章就手把手教你写出完整的彩灯交替控制程序,从控制要求、变量定义,到分步编程,新手照着做就能一次成功。

一、先明确核心控制要求

     我们先把控制逻辑理清楚,写程序之前一定要先明确动作要求,不然写出来的程序很容易出问题:

  1.控制对象为16个彩灯,编号1~16,对应PLC的16个输出点;

  2.拨码开关拨到ON位置后,偶数编号和奇数编号的彩灯交替点亮,每组亮灯时长为1秒;

  3.拨码开关拨到OFF位置后,所有彩灯立即全部熄灭;

  4.全程使用字逻辑指令实现,不单独编写单个彩灯的控制程序。

二、第一步:前期准备与变量定义

1. 前期基础设置

    在CPU属性中,打开系统和时钟存储器,启用时钟存储器字节,地址设置为MB0。启用后,我们就能直接调用%M0.5的1HZ时钟脉冲,实现1秒的交替切换,完美匹配亮灯时长要求。

2. PLC变量定义(IO地址分配)

    写程序之前,先把输入输出地址、核心变量定义好,这是程序不出错的基础,也是现场接线的依据。

    这里有个核心知识点:1个Word类型的QW0,正好包含16个Bool类型的输出位,Q0.0对应彩灯1、Q0.1对应彩灯2……Q1.7对应彩灯16,一个字就能一次性控制16个彩灯,这就是字逻辑指令的核心优势。

三、第二步:搞懂彩灯亮灭的数值对应关系

    想要用字逻辑指令实现奇偶交替亮灯,先要搞清楚二进制数值和彩灯亮灭的对应关系,这是程序的核心。

   PLC的输出位,数值为1时,彩灯点亮;数值为0时,彩灯熄灭。

   1.偶数编号彩灯亮、奇数编号灭:偶数位为1,奇数位为0,二进制就是2#0101 0101 0101 0101,转换成十六进制就是16#5555;

   2.奇数编号彩灯亮、偶数编号灭:奇数位为1,偶数位为0,二进制就是2#1010 1010 1010 1010,转换成十六进制就是16#AAAA。

   我们会发现,16#5555和16#AAAA,正好是互为反码的关系,只要对当前的输出值执行求反码INV指令,就能直接实现奇偶彩灯的交替切换,不用分别赋值,大幅简化程序。

四、第三步:分步编写核心控制程序

1. 开关ON初始化程序

     当拨码开关switch(%I0.0)拨到ON位置的瞬间,用上升沿触发赋值指令,给彩灯输出QW0写入初始值16#5555,让偶数编号的彩灯先点亮,完成程序初始化。

    核心逻辑:用上升沿触发,只在开关拨到ON的瞬间执行一次赋值,避免每个扫描周期都重复赋值,导致后续的求反指令失效,这是新手最容易踩的坑。

2. 奇偶交替闪烁核心程序

     这是整个程序的核心,用求反码INV指令配合1HZ时钟脉冲,实现1秒一次的奇偶彩灯交替切换。

核心程序逻辑:

    (1)串联3个触发条件:拨码开关处于ON位置(%I0.0=1)+ 1HZ时钟脉冲的上升沿(%M0.5从0变1);

  (2)触发条件满足时,执行求反码INV指令,输入IN为当前的彩灯输出值QW0,输出OUT也赋值给QW0;

  (3)每到1秒的上升沿,就对QW0的所有位执行一次取反,16#5555变成16#AAAA,再下一次又变回16#5555,完美实现奇偶彩灯1秒交替亮灭。

通俗理解:

    就像一个翻板开关,每过1秒就翻一次面,正面是偶数灯亮,反面是奇数灯亮,循环往复,只用一个指令就实现了交替控制。

3. 开关OFF熄灭程序

    当拨码开关switch(%I0.0)拨到OFF位置时,立即执行赋值指令,给彩灯输出QW0写入数值0,所有输出位全部清零,16个彩灯立即全部熄灭,回到初始状态。

     核心逻辑:只要开关处于OFF位置,就持续给QW0赋值0,避免出现彩灯误点亮的情况,保证控制安全。

五、新手必看的避坑要点

    1.必须用上升沿触发赋值和求反指令:不管是初始化赋值,还是交替取反,都必须用信号上升沿触发!如果不用上升沿,每个扫描周期都会重复执行指令,导致彩灯一直快速闪烁,根本达不到1秒交替的效果,这是新手最容易犯的错误。

   2.搞清楚输出字和位的对应关系:一定要确认QW0对应的是Q0.0~Q1.7,不要把彩灯编号和输出位搞反,不然会出现奇偶灯亮灭顺序错乱的问题。

   3.时钟脉冲要选对:1秒交替要用1HZ的时钟脉冲,也就是%M0.5,不要选成5HZ、10HZ的,不然彩灯闪烁速度会不符合要求。

   4.数据类型必须匹配:求反码指令的输入和输出,必须用Word类型,不能用Int、UInt类型,虽然它们都是16位,但数据类型不匹配会导致运算错误。

   5.开关OFF必须强制清零:拨码开关拨到OFF时,一定要给QW0强制赋值0,不能只停止取反指令,不然彩灯会停在当前亮灯状态,不会全部熄灭,不符合控制要求。

    这个16路彩灯控制案例,完美体现了S7-1200字逻辑指令“批量处理、代码简洁”的核心优势,是新手从理论到实战的必经之路。只要把这个程序吃透,搞懂字逻辑指令的批量处理逻辑,现场的多路指示灯、多组电磁阀、批量输出控制项目,你都能轻松搞定,写出的程序比新手简洁好几倍。

赞(0)
未经允许不得转载:171主机测评 » 工控人必练!S7-1200字逻辑指令经典应用,手把手教你写彩灯控制程序
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址