[西门子] 西门子s7-1200跑马灯案例分享

[复制链接]
查看141 | 回复0 | 2024-4-26 09:57:10 | 显示全部楼层 |阅读模式
本期分享一个使用S7-1200编写跑马灯小程序.

跑马灯程序主要分为两个部分: 震荡电路和计数器累计计数、复位及跑马灯输出

1.首先用两个延时继电器组合,编写一个震荡电路.

解析说明:当PLC开始运行时,延时继电器2(DB2)延时50毫秒接通M0.1输出有效. M0.1输出后延时50毫秒延时继电器1(DB1)M0.0,M0.0生效后关断延时继电器2,程序进入震荡循环模式。

编程实例如下:



震荡循环波形图如下:



(注:以上所示震荡周期为50ms,可根据具体情况设定延时继电器中数值.)

2.累计计数:

解析说明:当M0.1震荡时,计数器(DB3)接收计数使能信号开始计数,计数所得结果寄存在MW1中.M0.1计数使能信号震荡一次,计数器结果MW1加1.当计数结果为1时比较指令接通输出Q0.1,依次类推直到计数结果为4,输出Q0.3.当Q0.3闪烁周期完成熄灭时,使用Q0.3的下降沿信号去复位计数器,使计数器重新开始从1开始计数,依次循环.

(注: ①案例中跑马灯由四个灯交替闪烁,故计数器累计到4,复位计数器.②使用常1信号的上升沿,复位作用为当程序首次运行时,复位计数器中的值,相当于使用开机脉冲清零计数器寄存器中的值.)

编程实例如下:



总结:以上设计利用震荡电路产生脉冲,计数器指令进行累计计数并清零,辅助比较指令进行结果比较,然后输出对应的灯,完成跑马灯的设计要求.

附波形图一张,以便粉丝们理解(图中信号从上到下依次为M0.1、M0.0、M6.0、Q0.0、Q0.1、Q0.2、Q0.3).



设计程序运行视频如下图所示:



video: https://mp.weixin.qq.com/mp/readtemplate?t=pages/video_player_tmpl&action=mpvideo&auto=0&vid=wxv_896159887695265794

文末增加一枚彩蛋,拓展一个更简洁、有效的方案实现上述功能.



解析:上图前两行依然使用第一种方案中的震荡循环方式(详细参照第一种方案).

第5行程序中SHL(左移指令),当SHL指令收到左移使能信号时,整个字节左移一位,结果如图:



第1个左移使能信号(M0.0)有效时, MB1=1,输出结果Q0.0有效;

第2个左移使能信号(M0.0)有效时,  MB1=2,输出结果Q0.1有效;

第3个左移使能信号(M0.0)有效时,  MB1=4,输出结果Q0.2有效;

第4个左移使能信号(M0.0)有效时,  MB1=8,输出结果Q0.3有效;

第5个左移使能信号(M0.0)有效时,MB1=16,此时利用MOVE指令赋值给MB1=0,此处与第一个案例相同,增加一个开机脉冲用以在开机运行时清零MB1中寄存的值.

调试中遇到的问题:跑马灯出现无规律,乱输出的情况,后来查出原因为第5行程序中使能信号(M0.0)开始编写的时候为一个常开触点,由于PLC自身的扫描周期比震荡电路循环周期速度快很多,所以会造成左移使能信号(M0.0)一个震荡电路循环周期内多次被PLC输入寄存器读取为1,后更改为将M0.0更改为一个上升沿信号后故障消失.

本期案例分享就到这里了,如有不妥之处请朋友们指出,同时欢迎同行提供案例分享,下次我们继续聊!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则