用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控制循环次数
单片机节日彩灯控制器的设计Proteus仿真
节日彩灯控制器的设计
一、设计要求:
以单片机为核心,设计一个节日彩灯控制器:
K1—开始,按此键则灯开始流动(由上而下)。K2—停止,按此键则停止流动,所有灯为暗。K3—下,按此键则灯由下向上流动。K4—交替闪烁,按此键则奇数序号灯与偶数序号灯交替闪烁。二、方案论证:
通过查阅大量相关技术资料,并结合自己的实际知识,我提出课两种技术方案来实现该公能。下面我将首先对这两种方案的组成框图和实现原理分别进行说明,并分析比较它们的特点,然后阐述我最终选择方案的原因。
1 方案比较
彩灯控制器课分为两种方案实现。一种是利用数字逻辑电路装置控制,另一种是采用单片机控制。
1.1 方案一
根据任务要求介绍的彩灯控制电路的基本组成,可以确定彩灯控制器应由振荡器、计数/时序分配电路、移位寄存器和彩灯显示五部分组成。其框图如图所示。
1.2 方案二
本方案主要是通过对基于单片机的多控制、多闪烁方式的LED彩灯循环系统的设计,来达到本设计的要求、其硬件构成框图如图所示,以单片机为核心控制,由单片机最小系统(时钟电路、复位电路、电源)、按键控制电路、LED发光二极管和5V直流电源组成。
2 方案论证
如果采用方案一,利用数字逻辑电路装置控制,其电路不是很复杂,制作相对较容易,成本也相对较低,但可调性差,亮灯模式少而且样式单调,达不到设计任务要求或实现困难。而采用方案二,以单片机控制其优点是电路集成度高,工作原理简单,清晰明了,自定义编程,控制的图案花样多,移植性好等。
3 方案选择
综上,显然方案二各方面优于方案一,以及为了体现专业优势,本次设计采用方案二。
三、理论设计:
1、主程序设计
程序启动时跳转到键盘判断模块程序中,此程序里面包含K1—K4的按键情况判断,循环检测直到有按键按下的时候,程序转去相对应的按键的彩灯显示的模块。
2、键盘扫描程序
四、电路仿真和仿真结果分析 :
1 仿真电路
1.1 时钟电路和复位电路
1.2 按键控制电路
1.3 LED显示电路
2 仿真结果分析:
此次系统设计结果较好,经Proteus软件仿真系统的调试,可检测出仿真电路正常;对应按键按下,彩灯出现不同花型,实现了多控制、多闪烁的LED彩灯循环;经以上仿真测试证实,本设计能实现设计系统要求的预期功能。
五、心得体会:
本次作业设计以C51单片机为核心,控制电路、LED显示电路、以及单片机最小系统等模块组成的核心主控制电路,实现了由单片机对LED灯的控制。
通过对软件的仿真调试,对彩灯控制器的运行成果满意,实现了题目的要求,同时此设计具有电路简单、易操作、成本小、体积小、耗能低等优点。
但是在设计中也出现了一些问题,在程序编写过程中发现自己有的知识模块模糊,导致实验速度减缓,通过c程序的编写实验就发现自己很多地方的不足,在查阅资料和同学的帮助下才解决了困难,这都是以后要多学习的地方。单片机源程序如下:
#include <reg52.h>#define uchar unsigned char //宏定义#define uint unsigned intsbit k1=P1^2; //位定义sbit k2=P1^3;sbit k3=P1^4;sbit k4=P1^5;uchar a=0; //定义所需变量uchar b;uchar code table1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //从上到下流水数组uchar code table2[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //从下到上流水数组void delay_ms(uint xms) //延时函数{uint i,j;for(i=xms;i>0;i--)for(j=110;j>0;j--);}void key_scan(uchar b) //按键扫描{if(b==1) //若K1按下{while(k2==1&&k3==1&&k4==1){for(a=0;a<8;a++) //执行从上到下流水操作{P0=table1[a];delay_ms(100);}a=0;}}if(b==2) //若K2按下{while(k1==1&&k3==1&&k4==1){ //P0全部输出高电平,关闭LEDP0=0xff;}}if(b==3) //若K3按下{while(k1==1&&k2==1&&k4==1){for(a=0;a<8;a++) //执行从下到上流水操作{P0=table2[a];delay_ms(100);}a=0;}}if(b==4) //若K4按下{while(k1==1&&k2==1&&k3==1){P0=0xaa; //奇偶位分别点亮delay_ms(100);P0=0x55;delay_ms(100);}}}void main(void) //主函数{TMOD=0X01; //定时器中断初始化TH0=(65536-1000)/256;TL0=(65536-1000)%256;EA=1;ET0=1;TR0=1;while(1);}void T0_time() interrupt 1 //中断服务函数{TH0=(65536-1000)/256;TL0=(65536-1000)%256;if(k1==0)b=1;if(k2==0)b=2;if(k3==0)b=3;if(k4==0)b=4;key_scan(b);}复制代码
相关问答
【设计一个电路控制 彩灯 的 循环 显示,8个小灯泡排成一行,小灯...[最佳回答]由于不知道你的单片机用的是什么,所以我只能简单说一下方法了.假设你用的是51系列.那么8051系列(包括很多,现在AT89S52算是还可以的,价钱便宜,功能...
【用89S52 单片机 构件建一个 彩灯 控制系统,系统用P1口外接8个...[最佳回答]要程序还是电路图
AT89C52 单片机 控制 彩灯 的原理?89C52一般有四组共32个IO口,每一个IO口均可以程序控制其输出电平为高(1)或低(0),在LED的正极接VCC,负极接89C52的IO口,通过控制IO口的输出为低电平(0V)...89C...
1S可调.五、 循环彩灯 控制器设计任务与要求(1)共有红、绿、...[最佳回答]你要的是电路图吧,就是有课怎么给你啊,只有建议你到网上搜了.高校课件下载网.
头上戴的小 彩灯 是什么灯?有LED的,也有白炽灯,有用双金属片的,也有用电路的,若变化多,也可能用单片机单个小灯电压多比较低,大多是串联的,白炽灯用有色玻璃或涂层来确定颜色,LED本...
如何做LED的闪烁页面?实际上,有现成的由输出音量控制的LED灯闪烁电路,如果控制彩灯功率较大,使用它来控制固态继电器就可以扩大输出功率了。使用单片机实现单片机,都听说过吧!...只...
tmod使用方法如果说单片机就是一个电脑你可能不会认可,其实它和我们用的电脑的在本质上没有区别,只是5步和100步的区别,想当年比尔.盖茨也给类似的东西搞过编程,...
你有什么有 单片机 或开源硬件做的有意思的作品吗?颜色检测传感器可以识别各种颜色。单片机把检测到的颜色,控制对应RGB彩灯显示。就做出了自动根据物体颜色而变色的灯。5、自动巡线的小车。小车使用光电传感...
老司机们求推荐!!苏州哪里有 彩灯 设计制作, 彩灯 设计制作制造...[回答][2]《单片机音乐盒花样流水灯设计》功能描述:1、按键切换音乐2、彩灯可以跟随音调亮灭3、按键切换彩灯显示花样4、支持功能定制☆已作出的实物优酷...
跑马灯只亮一半什么问题?线没错,那就是程序的问题,程序没错,不表示没问题。可能原因1:切换两个灯之间的时间间隔太短;可能原因2:程序是个单次系统,没有循环语句;可能原因3...