电气控制与可编程控制器PLC2016年春自动化与电子工程学院邢关生xinggs@qust.edu.cn邢关生PART2S7-1200PLC编程及应用第1章.S7-1200PLC基本原理第2章.S7-1200硬件组成与组态第3章.S7-1200程序设计基础第4章.梯形图程序设计方法第5章.S7-1200的指令第6章.用户程序结构与故障诊断5.1数据处理指令5.2数学运算指令5.3程序控制指令5.4字符串指令5.5高速脉冲输出和高速计数器第五章S7-1200的指令5.1数据处理指令5.2数学运算指令5.3程序控制指令5.4字符串指令5.5高速脉冲输出和高速计数器第五章S7-1200的指令5.1数据处理指令比较指令数据转换指令数据传送指令移位和循环移位指令5.1.1比较指令•几种类型的比较指令1)基本的比较指令(两个数比大小)判断两个同类型的数的大小关系2)范围内IN_RANGE、范围外OUT_RANGE判断一个数在区间内还是区间外3)OK、NOT_OK判断一个数是否是实数(浮点数)比较指令都可以等效为一个触点,因为比较的结果仅有两种情况:TRUEorFalse5.1.1比较指令•功能:比较数据类型相同的两个数IN1和IN2的大小有符号数或无符号数的大小,进而输出。•两个要素:比较符、数据类型比较运算符有6种:==、=、=、、和IN1和IN2数据类型(按长度分):字节(有符号、无符号)、字(有符号、无符号)、双字整数(有符号、无符号)、实数、字符和字符串、时间等•在梯形图中,以触点的形式编程。若两数比较运算的结果为“TRUE”,则该触点闭合;若为“FALSE”,则触点断开1)基本的比较指令5.1.1比较指令1)基本的比较指令5.1.1比较指令(P96)用接通延时定时器和比较指令组成占空比可调的方波发生器。提示:1.周期固定、占空比可调2.用定时器指令产生固定周期脉冲,利用定时器的经过值来调整占空比5.1.1比较指令——例15.1.1比较指令——例1注意比较指令针对的数据类型是Time用比较和计数指令编写开关灯程序。要求灯控按钮I0.0按下第一次,灯Q4.0亮,按下第二次,灯Q4.0、Q4.1全亮,按下第三次灯全灭。如此循环。关键点:在程序中所用计数器为加法计数器,当加到3时,必须复位计数器。5.1.1比较指令——例2•功能:判断一个数是否在某个范围内或者范围外。2)范围内IN_RANGE、范围外OUT_RANGE5.1.1比较指令(P96)数据类型可以设置在HMI设备上可以设定电动机的转速,由HMI输入的设定值存于MW20,若MW20的范围为100-1440转/分钟,则延时5秒钟启动电动机Q0.0,否则Q0.1长亮提示。5.1.1比较指令——例3可测试输入的数据是否为实数。5.1.1比较指令3)OK、NOT_OK图中,当MD0和MD4中为有效的浮点数时,会激活“实数乘”(MUL)运算并置位输出,即将MD0的值将与MD4的值相乘,结果存储在MD10中。同时Q4.0输出为1。5.1.2EN和ENO一些用方框表示的指令,左侧有使能输入EN,右侧有使能输出ENOEN端有能流输入(输入“1”),则指令能够执行指令执行,且无误,ENO才有能流输出(输出“1”);若执行有误,则能流就此中止ENO可作为下一个方框的EN输入哪些指令有EN和ENO?传送与转换指令、数学运算指令、移位与循环指令、字逻辑运算指令5.1.3数据转换指令•几种数据转换指令1)CONV数据类型转换2)浮点数取整浮点数转换为双字整数3)SCALE_X按比例,将百分比小数(浮点数)变为整数4)NORM_X按比例,将整数值变为小数5.1.3数据转换指令5.1.3数据转换指令1)CONV将输入数据做数据类型转换,结果存储在输出中IN和OUT的数据类型5.1.3数据转换指令什么是BCD码?用4位二进制数表示一位十进制数2#0000—2#10010—92#1010—2#1111不表示十进制数字BCD码中的符号如何表示?BCD码最高4位表示符号2#0000:正号,2#1111:负号BCD16:4个十进制数位,范围:-999至+999BCD32:8个十进制数位,范围:-9999999至+99999995.1.3数据转换指令1)CONV例:特殊的情况:BCD32只能转换为DINTBCD16只能转换为INTIN可以是常数,OUT不可以5.1.3数据转换指令2)浮点数取整IN:浮点数OUT:整数RealorLRealROUND:圆整,四舍五入CEIL:取大于等于IN的最小整数FLOOR:取小于等于IN的最大整数TRUNC:截位取整,舍去小数点之后的5.1.3数据转换指令2)浮点数取整IN:浮点数OUT:整数注意不同数据类型的数据范围5.1.3数据转换指令3)SCALE_XOUT=MINVALUE(MAX-MIN)5.1.3数据转换指令4)NORM_XVALUE-MINOUT=MAX-MIN类似于归一化模拟量的规范化(NORM_X、SCALE_X的应用)模拟量输入的规范化需要先将模拟量输入值规范化为由0.0到1.0的实数(浮点)值。再按比例放到测量范围中,转为具有工程单位的量。模拟量输入的规范化规范化的最大最小值与模拟量输入通道的极性有关模拟量输出的规范化先将以工程单位表示的值标准化为0.0和1.0之间的值,然后将其换算到0到27648之间或-27648到27648之间模拟量输出的规范化Scale的最大最小值与模拟量输出通道的极性有关5.1.4数据传送指令1)MOVE数据从源复制到目的,同时转换数据类型2)SWAP高低字节交换3)FILL_BLK、UFILL_BLK块填充4)MOVE_BLK、UMOVE_BLK块移动5.1.4数据传送指令1)MOVE注意:是数据复制,源不变从IN复制到OUT,数据类型依据情况改变5.1.4数据传送指令2)SWAP高低字节交换注意操作数的数据类型:Word:高字节、低字节互换DWord:高低4个字节的顺序颠倒5.1.4数据传送指令5.1.4移位和循环移位指令1)移位指令SHR,数据区向右移位SHL,数据区向左移位2)循环移位指令ROR,循环右移ROL,循环左移要素:哪个数据区?移位方向?移出几位?空位如何补?5.1.4移位和循环移位指令5.1.4移位和循环移位指令1)移位指令SHR,数据区向右移位SHL,数据区向左移位参数:•IN:被移动的数据区•N:移动的位数•OUT:移位的结果被移动的数据区的类型左移时,空位补0;右移时,空位补符号位(如果有符号位)5.1.4移位和循环移位指令1)移位指令SHR,数据区向右移位SHL,数据区向左移位例子:5.1.4移位和循环移位指令2)循环移位指令ROR,循环右移ROL,循环左移例子:无论左移、右移,移出的位补入空位[例]通过循环指令实现流水灯控制,由按键I0.0启动。5.1.4移位和循环移位指令I0.0为控制开关,M0.5为周期为1s的时钟存储器位,实现的功能为当按下I0.0,QD4中为1的输出位每秒钟向左移动1位。第1段程序的功能是赋初值,即将QD4中的Q7.0置位,第2段程序的功能是每秒钟QD4循环左移一位改变流水灯的要求:Q0.0到Q0.7每隔1秒按顺序点亮,后灯亮时,前灯不灭。