彩灯广告屏的PLC控制S7-200程序 程序 我们主要的后发送的产品有,带解释的梯形图接线图原理图图纸,io分配,组态画面

上周刚帮客户搞定了一套户外彩灯广告屏的PLC控制项目,用的还是经典的S7-200,本来以为老架构玩不出花,结果客户要求既能跑流水灯又能切自定义广告画面,还得能调亮度,折腾了两天总算弄利落了,今天把整个流程扒出来给大伙唠唠。

首先先讲最基础的IO分配,我当时是按客户的16路LED灯板来的,外加几个操作按钮和电位器,直接导进STEP7-MicroWIN的符号表就能用,给大伙贴一下:

// 直接复制到STEP7的符号表就能用,不用瞎改
I0.0    START      // 启动按钮(常开,接DC24V+)
I0.1    STOP       // 急停按钮(常闭,断电就触发,安全底线)
I0.2    ADJ_UP     // 亮度加键(后来用触摸屏替代了)
I0.3    ADJ_DOWN   // 亮度减键
I0.4    MODE_SW    // 自动/自定义模式切换键
Q0.0-Q0.7  LIGHT1-LIGHT8 // 第一排8路灯组
Q1.0-Q1.7  LIGHT9-LIGHT16 // 第二排8路灯组
VW0     LIGHT_VAL  // 亮度调节寄存器,存0-255对应0-100%亮度
AIW0    BRIGHT_ADJ // 电位器模拟量输入

为啥这么分?其实就是顺嘴,Q0和Q1是S7-200自带的前16个输出点,刚好对应两块8列的灯板,客户看了也能快速对应上自己的硬件,不用我再解释半天。

接线图我是用CAD画的,给客户的PDF版里标得清清楚楚:DC24V的公共端必须和PLC的M端连起来,每路输出都加了1A的保险丝,毕竟户外灯珠多,烧了换起来也方便,还有急停一定要串在启动回路里,客户一开始还嫌麻烦,我直接甩了个国标电工图集给他就闭嘴了。

接下来是核心的梯形图程序,这块我没搞那些花里胡哨的,都是最实用的逻辑,先贴几个关键的Network:

彩灯广告屏的PLC控制S7-200程序 程序 我们主要的后发送的产品有,带解释的梯形图接线图原理图图纸,io分配,组态画面

首先是上电初始化,这个SM0.1是S7-200的上电脉冲,只在PLC上电的第一个扫描周期接通,用来给灯板初始化太方便了,我一开始还自己用M点做,后来发现官方自带的香多了:

// Network 0:上电初始化,开机第一盏灯亮
LD     SM0.1
=      Q0.0

然后是最经典的启动自锁回路,整个程序的运行使能全靠它:

// Network 1:启动自锁,按启动常亮,按急停直接断
LD     START    // I0.0
O      M0.0
AN     STOP     // I0.1,常闭点所以用AN
=      M0.0

接下来是定时移位的流水灯逻辑,我当时想要每100ms移一次位,所以用了T37这个100ms时基的定时器:

// Network 2:定时产生移位脉冲,每0.1s移一次
LD     M0.0
TON    T37, 1   // T37时基100ms,1就是0.1s
LD     T37
EU
=      M0.1

然后是自动模式下的流水灯,用循环左移指令,让灯珠挨个亮起来:

// Network 3:自动流水灯模式
LD     M0.0
AN     M0.2    // M0.2是自定义模式标志,自动模式下才跑这个
RLB    Q0, 1   // 循环左移一位,Q0的灯挨个亮
RLB    Q1, 1   // 第二排也跟着移,保持同步

这里要注意,第一次上电的时候只有Q0.0亮,后面每次移位都会把前一个灯的状态移到下一个,完美实现流水效果。

然后是自定义广告画面的逻辑,客户要显示“HELLO”,我直接用MOVB指令把十六进制数写到输出口,比一个个置位爽多了,比如:

// Network 4:自定义HELLO广告画面
LD     M0.0
A      M0.2    // 切换到自定义模式才执行
MOVB   16#81, Q0  // Q0.0和Q0.7亮,对应H的左右两竖
MOVB   16#7E, Q1  // Q1.1到Q1.6亮,对应E的横和竖
MOVB   16#09, Q0  // 后面的L、O就不细写了,反正客户自己能改数值

后来我嫌让客户改十六进制麻烦,直接加了个触摸屏的组态画面,用WINCC flexible做的,就是一个小界面,上面有16个小矩形对应16路灯,客户点一下就能亮灭,自动生成MOVB的数值,省得他自己算半天。

最后是亮度调节,这块我一开始用软件PWM老是卡延迟,后来直接用S7-200自带的硬件PWM,把电位器的模拟量值转换成占空比,一行指令搞定:

// Network 5:硬件PWM亮度调节
LD     M0.0
MOVW   AIW0, VW0   // 把电位器的模拟量值存到亮度寄存器
PWM    Q0.0, T37   // 用T37做PWM的时基,占空比由VW0决定

当然实际调试的时候还要先配置定时器的周期,不过大概意思就是把模拟量转换成占空比,调整灯的亮度,这个比手动调按钮方便多了,客户用触摸屏的滑块就能直接调亮度。

整个项目下来,虽然用的是老掉牙的S7-200,但是胜在稳定,客户用了一周就反馈说没问题,比他们之前用的单片机方案靠谱多了,毕竟PLC的抗干扰能力真的不是吹的,上次他们那边没加中继,雷击把PLC烧了,后来加了中继就没出过问题。

对了,我把整个程序的梯形图、接线图、IO分配表还有组态画面都打包好了,需要的评论区扣1就行,不用谢哈。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐