《S7-200PLC基础教程 ---第6章课件》由会员分享,可在线阅读,更多相关《S7-200PLC基础教程 ---第6章课件(27页珍藏版)》请在金锄头文库上搜索。
1、第6章 PLC的功能指令,6.1 功能指令概述 6.1.1 功能指令的学习方法 6.1.2 使能输入与使能输出,图6-1 EN与ENO LD I2.4 SQRT VD0, VD4 AENO MOVB VB8, QB2 VD0为负数时无能流流出。删除AENO后两个方框变为并联。,6.1.3 梯形图中的网络与指令 一个网络中只能有一块独立电路。 输入语句表指令时必须使用英文的标点符号。 6.2 程序控制指令 1条件结束指令与停止指令 2监控定时器复位指令 3循环指令,【例6-1】在I0.0 = 1的上升沿,求VW100VW108中5个字的累加和。 网络1 LD I0.0 EU MOVB 0, AC
2、0/ 清累加器0 MOVD &VB100, AC1/ 累加器1(存储区指针)指向VB100 FOR VW0, 1, 5/ 循环开始 网络2 LDSM0.0 +I*AC1, AC0/ 字累加 +D 2, AC1/ 指针AC1的值加2,指向下一个变量存储器字 网络3 NEXT/ 循环结束 网络4 LD I0.0 EU MOVDAC0, VD10/ 保存运算结果,6.3 局部变量表与子程序 6.3.1 局部变量表 1局部变量与全局变量 程序中的每个程序组织单元POU(Program Organizational Unit)均有由64字节L存储器组成的局部变量表。局部变量只在它被创建的POU中有效,全
3、局符号在各POU中均有效。局部变量有以下优点: 1) 尽量使用局部变量的子程序易于移植到别的项目。 2) 如果使用临时变量(TEMP),同一片物理存储器可以在不同的程序中重复使用。 2局部变量的类型 TEMP (临时变量):暂时保存在局部数据区中的变量。主程序或中断程序的局部变量表只有TEMP变量。 IN (输入变量):由调用它的POU提供的传入子程序的输入参数。 OUT(输出变量):子程序返回给调用它的POU的输出参数。 IN_OUT(输入_输出变量):其初始值由调用它的POU提供,并用同一变量将子程序的执行结果返回给调用它的POU。,3局部变量的地址分配 4在局部变量表中增加新的变量 6.
4、3.2 子程序的编写与调用 1子程序的作用 子程序将程序分成容易管理的小块,使程序结构简单清晰,易于查错和维护。子程序调用是有条件的,可以多次调用,使用子程序可以减少扫描时间。 2子程序的创建 3子程序的调用举例,图6-4 局部变量表与模拟量计算子程序,图6-5 在主程序中调用子程序 LD I0.4 CALL 模拟量计算, AIW2, VW20, +2356, VD40,【例6-2】 设计求V存储区连续的若干个字的累加和的子程序。下面是名为“求和”的子程序的局部变量表和STL程序代码。子程序中的*#POINT是地址指针POINT指定的地址中字变量的值。,网络1 LD SM0.0 MOVD0,
5、#RESULT / 清结果单元 FOR #COUNT, 1, #NUMB / 循环开始 网络2 LD SM0.0 ITD *#POINT, #TMP1 / 将待累加的整数转换为双整数 +D #TMP1, #RESULT / 双整数累加 +D 2, #POINT / 指针值加2,指向下一个字 网络3 NEXT/ 循环结束,图6-7 在OB1中调用子程序,6.4 数据处理指令 6.4.1 比较指令,图6-8 比较触点指令,图6-9 自复位接通延时定时器,6.4.2 数据传送指令 1字节、字、双字和实数的传送 2字节立即读指令MOV_BIR读取1个字节的物理输入,字节立即写指令MOV_BIW写1个字
6、节的物理输出。 3字节、字、双字的块传送指令 “BMB VB20, VB100, 4”指令将VB20VB23中的数据被传送到VB100VB103。 4字节交换指令 6.4.3 移位与循环指令 1右移位和左移位指令 2循环右移位和循环左移位指令,图7-12 移位与循环移位指令,6.4.4 数据转换指令 1段译码指令, 2数字转换指令 3实数转换为双整数的指令:ROUND将实数四舍五入后转换为双字整数,TRUNC是截位取整指令。 4译码指令5编码指令 6.4.5 表功能指令 1填表指令,图6-14 填表指令举例,图6-15 查表指令举例 命令参数CMD = 14,分别代表“=”、“”(不等于)、“
7、”。,图6-16 先入先出指令举例,图6-17 存储器填充指令,6.4.6 读写实时时钟指令 读实时时钟指令TODR从实时钟读取当前时间和日期,并把它们装入以T为起始地址的8字节缓冲区,依次存放年、月、日、时、分、秒、0和星期, 1为星期日,27为星期16。写实时时钟指令TODW将起始地址为T的 8字节缓冲区中的时间和日期写入实时钟。,图6-18 时钟指令 【例6-5】出现事故时,I0.0的上升沿产生中断,使输出Q1.0立即置位,同时将事故发生的日期和时间保存在VB10VB17中。 /主程序 OB1 LD SM0.1 / 第一次扫描时 ATCH 0, 0 / 指定在I0.0的上升沿执行0号中断
8、程序 ENI / 允许全局中断,/中断程序0(INT_0) LD SM0.0 / 该位总是为ON SIQ1.0, 1/ 使Q1.0立即置位 TODRVB10/ 读实时时钟 【例6-6】用实时时钟指令控制路灯的定时接通和断开,20:00开灯,06:00关灯,下面是语句表程序。 LDSM0.0 TODRVB0/ 读实时时钟,小时值在VB3 LDB=VB3, 16#20/如果在 20点0点(日期、时间值用BCD码表示) OBVB3, 16#06/ 或0点6点 =Q0.0/ 点亮路灯,6.5 数学运算指令与逻辑运算指令 6.5.1 数学运算指令 梯形图:IN1 + IN2 = OUT, IN1-IN2
9、 = OUT IN1 * IN2 = OUT, IN1 / IN2 = OUT 语句表:IN1 + OUT = OUT,OUT-IN1 = OUT IN1 * OUT = OUT,OUT / IN1 = OUT 16位整数运算、32位双整数运算、实数运算和加1、减1指令。 整数乘、除法的操作数为两个16位整数,乘积或商均为16位,不保留余数。双整数乘、除法的操作数和运算结果均为32位。此外还有 MUL:整数乘法产生双整数指令。 DIV:整数除法产生双整数指令。两个16位整数相除,结果的高16位为余数,低16位为商。,【例6-7】 在输入信号I0.4的上升沿,用模拟电位器0来设置定时器T37的设
10、定值(520s),即从SMB28读出的数字0255对应于520s。设读出的数字为N,100ms定时器的设定值为 (20050)N / 25550 =150N / 25550 (0.1s) 网络1 LD I0.4 EU / 在I0.4的上升沿 MOVB SMB28, AC0 MUL +150, AC0 / 150乘以模拟电位器的转换值 /D +255, AC0 / 除以255,双整数除法 +I +50, AC0/ 加偏移量50(5s) MOVW AC0, VW10 网络2 LD I0.5 TON T37, VW10/ T37以VW10中的数值为设定值,6.5.2 浮点数函数运算指令 包括正弦指令
11、SIN、余弦指令COS和正切指令TAN,自然对数指令LN和自然指数指令EXP。角度的单位为弧度。 6.5.3 逻辑运算指令 【例6-8】在I4.0的上升沿执行下面程序中的逻辑运算。 LD I4.0 EU INVB VB0/ 字节取反指令 ANDB VB1, VB2/ 字节与指令 ORB VB3, VB4/ 字节或指令 XORB VB5, VB6/ 字节异或指令,6.6 中断程序与中断指令 6.6.1 中断程序 中断允许指令ENI允许处理所有被连接的中断事件。禁止中断指令DISI禁止处理所有中断事件。进入RUN模式时自动禁止中断,中断程序越短越好。 6.6.2 中断事件与中断指令 中断连接指令A
12、TCH建立中断事件(EVNT)与对应的中断程序(INT)的联系。中断事件由中断事件号指定(见表7-12),中断程序由中断程序号指定。 中断分离指令DTCH断开中断事件与中断程序之间的联系。 中断优先级(见表7-12)分组:通信(最高优先级)、I/O中断和定时中断。 I/O中断:I0.0I0.3上升沿、下降沿中断;HSC当前值等于设定值、计数方向改变和计数器外部复位中断;输出完指定的脉冲数时产生的中断。,图6-22 中断指令,定时中断0/1的周期为1255ms,分别写入SMB34和SMB35。每当定时时间到时,执行相应的定时中断程序。定时器T32/T96中断的时间周期最大为32.767s。 【例
13、6-10】在I0.0的上升沿通过中断使Q0.0立即置位。在I0.1的下降沿通过中断使Q0.0立即复位。 /主程序 OB1 LD SM0.1 / 第一次扫描时 ATCH INT_0, 0 / I0.0上升沿时执行0号中断程序 ATCH INT_1, 3 / I0.1下降沿时执行1号中断程序 ENI / 允许全局中断 /中断程序0(INT_0) LD SM0.0 / 该位总是为ON SIQ0.0, 1/ 使Q0.0立即置位 /中断程序1(INT_1) LD SM0.0 / 该位总是为ON RIQ0.0, 1/ 使Q0.0立即复位,【例6-11】用定时中断0实现周期为2s的高精度定时。 / 主程序
14、OB1 LD SM0.1 / 第一次扫描时 MOVB 0, VB10 / 将中断次数计数器清0 MOVB 250, SMB34 / 设定时中断0的中断时间间隔为250ms ATCH INT_0, 10 / 指定产生定时中断0时执行0号中断程序 ENI / 允许全局中断 / 中断程序INT_0, 每隔250ms中断一次 LD SM0.0 / 该位总是为ON INCBVB10/ 中断次数计数器加1 LDB=8, VB10 / 如果中断了8次(2s) MOVB 0, VB10 / 将中断次数计数器清0 INCB QB0 / 每2s将QB0加1,6.7 高速计数器与高速脉冲输出指令 6.7.1 编码器
15、 高速计数器一般与增量式编码器配合使用,双通道A、B相型编码器提供转速和转轴旋转方向的信息。三通道增量式编码器的Z相零位脉冲用作系统清零信号,或坐标的原点,以减少测量的积累误差。,图6-23 A、B相型编码器的输出波形 6.7.2 高速计数器的工作模式与外部输入信号 1) 无外部方向输入信号的单相加/减计数器(模式02):用控制字节控制计数方向。 2) 有外部方向输入信号的单相加/减计数器(模式35)。 3) 有加计数时钟脉冲和减计数时钟脉冲输入的双相计数器(模式68)。 4) A/B相正交计数器(模式911)。,图6-24 1倍速正交模式操作举例,图6-25 4倍速正交模式操作举例 根据有无
16、复位输入和启动输入,上述的4类工作模式又可以各分为3种。 高速计数器的外部输入信号见表7-16。 6.7.3 高速计数器指令与应用 【例6-12】用指令向导生成HSC0的初始化程序和中断程序,HSC0为无外部方向输入信号的单相加/减计数器(模式0),计数值为1000020000时Q4.0输出为1。 (用编程软件演示),6.7.4 高速脉冲输出与开环位置控制 占空比:脉冲宽度与脉冲周期之比。 脉冲列(PTO)功能提供周期与脉冲数目可以由用户控制的占空比为50%的方波脉冲输出。脉冲宽度调制 (PWM) 功能提供连续的、周期与脉冲宽度可以由用户控制的输出。,图6-28 位置控制系统的速度与加减速时间 CPU有两个PTO/PWM发生器,分别通过Q0.0或Q0.1输出高