用S7-1200 PLC实现循环彩灯的控制,含源程序
在S7-1200型PLC的实际编程工作中,无论是经验设计法还是顺序控制设计法对于要求比较复杂的任务都会产生大量的程序段,可读性差。本实例通过常见的循环彩灯控制为例,了解学习S7-1200型PLC程序块的应用。
相关知识:移动操作相关指令
(1) 移动值MOVE指令
MOVE指令用于将IN输入端的源操作数(数值或地址中的数据)赋值给输出端OUT1指定的地址中,指令执行后源操作数保持不变。该指令支持的数据类型为除Bool型数据之外的所有数据类型。
如下图程序段是PLC上电后将Q0口数值清零,一般用于系统的上电复位。
如果输入 IN 数据类型的位长度超出输出 OUT1 数据类型的位长度,则源值的高位会丢失。如果输入 IN 数据类型的位长度低于输出 OUT1 数据类型的位长度,则目标值的高位会被改写为 0。
小提示: 移动指令MOVE一般用于批量给输出寄存器Q赋值,或者在输入信号较多的情况下批量读取输入寄存器I中的数据。
例1:控制Q1.0~Q1.7上连接的8位彩灯隔一跳一点亮
再加一个按位操作的程序进行对比
例2:读取一位拨码开关输入的数值并保存在辅助寄存器M中
再加一个按位操作的程序进行对比
通过以上对比可以看出,在一些特定情况下使用MOVE指令可以可以大量简化程序步骤。
任务布置
选用5个点动按键S0~S4给PLC的输入信号,作为花样功能选择键,8个发光二极管LED0~LED7作为PLC的输出信号,编写程序实现8个发光二极管闪烁花样的切换显示。
按下按键S1,发光二极管点亮1个,并向右循环移动点亮,每秒移动1位;
按下按键S2,发光二极管点亮2个,并向右循环移动点亮,每秒移动1位;
按下按键S3,发光二极管点亮3个,并向右循环移动点亮,每秒移动1位;
按下按键S4,发光二极管点亮4个,并向右循环移动点亮,每秒移动1位;
按下按键S5,发光二极管点亮5个,并向右循环移动点亮,每秒移动1位;
任务实施
(1) 任务分析
1)在实际应用中压力传感器是将水的压力值转换成电压信号输入给PLC、单片机等控制系统,这个输入信号是模拟量。在模块中用可调电位器来模拟了压力传感器,电位器输出的电压范围是0~5V,对应的压力量程为0~0.1MPa。S7-1200PLC集成了两路模拟信号输入,传感器将电压信号输入PLC后会经过A/D转换成范围0~27648的数字量保存在IW64中。所以在本任务中要设法将地址IW64中采集的数字信号值还原成以Pa为单位的压力值。
2)系统要求有手动和自动两种工作模式,不同工作模式由点动按键ME进行切换,因此在梯形图程序编写时采用手动单步运行程序和自动连续运行程序两个函数块进行调用,具体转换条件如下图所示。
(2)I/O地址分配表
该系统共有5个输入,3个输出,资源分配如下表。
按照I/O分配表设置PLC变量,在Portal V13 软件中设置PLC变量表如下图所示
(3)硬件接线图 按照任务控制要求和I/O地址分配表画出硬件接线图并插接导线。
此处就略过不再详细解释了
(4)梯形图程序
重点难点详解:该任务有自动连续运行和手动单步运行两种工作模式,并由点动按键ME作为切换条件,设置以下4个函数功能块:
完整梯形图参考程序
OB1中的程序
FC1 上电初始化
FC4 300ms脉冲信号
FC3跑马灯循环
FC4控制循环次数
「西门子案例」S7-1200PLC 可变延时跑马灯案例
关注“PLC发烧友”,一起涨知识!
一、动作描述:
1.六个指示灯组成跑马灯系统,外加两个按钮控制跑马灯的开始和停止;
2.按开始按钮,跑马灯分四个阶段:第一阶段,指示灯从右至左逐个点亮;第二阶段,指示灯从左至右逐个点亮;第三阶段,指示灯从右至左依次点亮;第四阶段,指示灯从左至右依次熄灭。
3.指示灯点亮的时间可以通过形式参数指定。
4.按下停止按钮,指示灯全都熄灭,跑马灯停止。
二、硬件设备:
1.西门子PLC :S7-1214C DC/DC/DC
2.指示灯6个,按钮2个
三、软件:
1.西门子plc编程软件:TIA 博途V16
四、I/O分配:
输入点
注释
输出点
注释
I0.0
开始
Q0.0
指示灯1
I0.1
停止
Q0.1
指示灯2
Q0.2
指示灯3
Q0.3
指示灯4
Q0.4
指示灯5
Q0.5
指示灯6
五、程序编写及思路:
为便于后期修改,我们把跑马灯程序做成一个FB块,并定义形式参数,如图:
并建立了一些中间变量,来完成程序逻辑:
接下来我们开始写程序:
根据工艺要求,我们把程序分成几个阶段,用变量“步骤”数组元素来表示。
取“开始”上升沿,开始第一步:
在程序的第一步开始后,赋初始值给将要移动的辅助变量:
赋初始值后,开始左移,做一个定时器,移位完成触发计时,计时完成复位:
判断移位已经完成,复位当前步骤,置位下一个步骤:
进入第二阶段,同样开始赋初识值:
重复之前的移位动作,这次改为右移:
同样判断移位完成,复位当前步骤,置位下一个步骤:
接下来还是赋初识值,这次需要另一个辅助移动变量来做运算
第三阶段开始,需要依次点亮,就需要用到辅助灯组来做XOR异或运算:
同样是判断移位完成,复位当前步骤,置位下一个步骤,然后继续辅初识值:
以同样的方式做XOR异或运行,实现依次熄灭:
判断移位完成,复位当前步骤,并置位第一阶段步骤,实现循环:
如果按停止按钮,则复位所有步骤和移位辅助位:
移动辅助位对应到指示灯Output形式参数:
然后在main主程序调用此FB块,并赋实际参数:
程序完成!
来源:PLC发烧友,作者:技成培训网-张志强。 “PLC发烧友”公众号后台回复:“跑马灯”,即可免费获取! 留言处大家可以补充文章解释不对或欠缺的部分,这样下一个看到的人会学到更多,你知道的正是大家需要的。。。
相关问答
plc程序里面move是怎么控制的?
1.在PLC程序中,move指令是用来控制机器人或者其他设备的移动的。2.move指令的控制原理是通过PLC输出信号来控制电机或者气缸等执行机构的运动,从而实现设备...
plc设计一个节日彩灯的控制程序,共有24个彩灯,设置有启动开...
[最佳回答]TITLE=程序注释Network1//网络标题//网络注释LDI0.0MOVW100,VW200Network2LDNI0.0MOVW500,VW200Network3L...
plc控制轴移动位置偏位怎么处理?
如果PLC控制轴移动位置偏位,可以采取以下处理方法:1、检查传感器是否损坏或松动,重新调整位置;2、检查控制程序是否正确,修改程序错误;3、检查机械结构...
怎样在西门子plc程序中显示伺服移动的正负距离?
利用PTO/PWM这个向导生成的指令利用hsc0这个高速脉冲计数器就能看到正负正向加反向减利用PTO/PWM这个向导生成的指令利用hsc0这个高速脉冲计数器就能...
PLC控制伺服问题,伺服马达传动的滑台,怎样让伺服一直运动,当...
[最佳回答]给一个数据寄存器来做脉冲输出指令的操作数,存放脉冲数。开始赋一个很大的值,碰到那个接近开关就给寄存器清零,然后赋一定值。(中间可能会要停顿一...
plc的偏移量怎么调出来?
在PLC程序设计中,偏移量是指数据或地址较原始段数据或地址的偏移距离,也就是需要在内存中向后或向前移动多少字节才能访问到需要的数据或地址。当我们需要使用...
西门子200循环左移指令解释?
西门子200循环左移指令是一种控制指令,它可以将一个字节的数据从右边移动到左边,并将最左边的位移出的数据放到最右边。西门子200循环左移指令是一种控制指令...
plc摄像录影机c1说明书?
07【7】屏保功能DVR在待机或录像时,短按电源开关键开启或关闭屏幕保护功能。08【8】移动侦测功能将系统菜单<移动侦测>项,设置为<开启>,启动移动侦测功能。...
有哪些“plc移位指令”的实例?
字节移位指令一共有四个循环右移、循环左移、右移、左移循环移位指令(左、右)八个位是循环移动的也就是说循环左移1位就是向左移动1位最高位移到最低位处...
怎么用西门子plc控制歩进电机定距离移动?
用编码器。编码器是按脉冲数分类,也就是转一圈发出多少个脉冲,有几十的,也有上千的,按需要的精度选择,把你需要的移动距离,大概需要多少脉冲数写入PLC,可以...