用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控制循环次数
跟电师傅学单片机(15):单片机逻辑运算指令图文讲解
一:累加器A清0和取反指令(共2条)
累加器A清0和取反指令表
累加器A清0指令
CLR A;单片机软件指令功能是将累加器A中的内容清0。影响单片机标志寄存器PSW中的奇偶标志位P。
累加器A取反指令
CPL A;单片机软件指令功能是将累加器A中的内容全部取反,结果送回A中。影响单片机标志寄存器PSW中的奇偶标志位P。
常用于单片机某个存储器单元或某个存储器区域中带符号数的求补。
二:循环移位指令(共4条)
循环移位指令示意图
RL A;左循环移位指令:
单片机软件指令功能是将累加器A的8位二进制数向左移动1位,累加器A中最左边1位(即最高位A.7)移至最右边1位(即最低位A.0)。不影响单片机标志寄存器PSW中的标志位。
RR A;右循环移位指令:
单片机软件指令功能是将累加器A的8位二进制数向右移动1位,累加器A中最右边1位(即最低位A.0)移至最左边1位(即最高位A.7)。不影响单片机标志寄存器PSW中的标志位。
RLC A;带进位左循环移位指令:
单片机软件指令功能是将累加器A的8位二进制数和进位CY向左移动1位,累加器A中最左边1位(即最高位A.7)移至CY,CY原内容移至累加器A的最右边1位(即最低位A.0)。影响单片机标志寄存器PSW中的进位标志位CY。
RRC A;带进位右循环移位指令:
单片机软件指令功能是将累加器A的8位二进制数和进位CY向右移动1位,累加器A中最右边1位(即最低位A.0)移至CY,CY原内容移至累加器A的最左边1位(即最高位A.7)。影响单片机标志寄存器PSW中的进位标志位CY。
单片机标志寄存器PSW功能图
注意:
执行带进位的单片机循环移位指令之前,必须给PSW进位标志位CY置位或清零,否则会影响移动的数据。
到此为止,24条单片机逻辑运算类指令讲解完毕,谢谢阅读!欢迎留言讨论,共同提高!
相关问答
单片机 C语言 右移 指令怎么用?用这种移位语句,就是这种结果。你试试:_crol_()和_cror_()移位函数。需要先加上头文件:#include用这种移位语句,就是这种结果。你试试:_crol_()和_cror_()移...
单片机循环 移位指令中A=7AH?首先,RLC表示A带进位标志(CY)循环左移一次,相当于乘以2;进位标志CY=1,则A=7AH=123D(十进制的123)的带进位标志用二进制表示为101111010,将其整体...首先,R....
C语言驱动 单片机 实现位移控制是否可行?C语言驱动单片机实现位移控制是否可行?答案是C语言驱动单片机实现位移控制是可行的。“位移”也就是对单片机进行移位操作。知识点:移位操作(1)左移(2...C...
单片机 中rr是什么指令?RR在汇编中是移位类指令,是不带进位的循环右移,而RRC是带进位的循环右移。RRRoadRunner(简称RR)是易驰车载电脑中可选配程式,用来管理软硬件资源的中控软...
单片机 C语言编写点亮两盏led灯?可以通过左移函数_crol_()和右移函数_cror_()来实现LED等的来回流动。具体实现方法可以参考如下程序:#include#include#defineuintunsigned...
rl 单片机 含义?单片机RL指令,是左移指令(参加左移的是8个位,也就是一个字节)。是属于单片机的位移指令。RR指令:是右移指令(参加左移的是8个位,也就是一个字节)。相对...
C语言程序中,使用移位操作代替乘除运算,真的效率更高吗?先简单小结一下:当编译器优化能力很弱时,用移位代替简单除法(除2,4,8,16...)效率更高;当编译器优化能力很弱时,在低端CPU上,用移位代替简单乘法(乘2...低端...
单片机 编程,用一个开关控制8个灯轮流亮,再用一个开关控制两个灯一起亮一起灭?按键,使...思路:8个LED接在一个口,如P1口。再将另外两个LED接在另外某个口(如P2)的两个引脚。然后将两个按键分别接在空闲的口的两个引脚。按下一个按键,使8...
立即数是什么意思_作业帮[回答]在8086等CPU处理器中可按下面例子.单片机为例.通常把在立即寻址方式指令中给出的数称为立即数.立即数可以是8位、16位或32位,该数值紧跟在操作码之...
如何设置8051 单片机 的中断优先级PIC系列单片机只有一个中断入口(004H),所有的中断都通过该入口进入中断服务子程序,至于是哪一个中断源,只有在进入中断服务子程序后查询中断标志才...