第6章 PLC的功能指令.ppt
第6章PLC的功能指令,6.1功能指令概述6.1.1功能指令的学习方法6.1.2使能输入与使能输出,图6-1EN与ENOLDI2.4SQRTVD0,VD4AENOMOVBVB8,QB2VD0为负数时无能流流出。删除AENO后两个方框变为并联。,6.1.3梯形图中的网络与指令一个网络中只能有一块独立电路。输入语句表指令时必须使用英文的标点符号。6.2程序控制指令1.条件结束指令与停止指令2.监控定时器复位指令3.循环指令,,【例6-1】在I0.01的上升沿,求VW100~VW108中5个字的累加和。网络1LDI0.0EUMOVB0,AC0//清累加器0MOVDVB100,AC1//累加器1(存储区指针)指向VB100FORVW0,1,5//循环开始网络2LDSM0.0I*AC1,AC0//字累加D2,AC1//指针AC1的值加2,指向下一个变量存储器字网络3NEXT//循环结束网络4LDI0.0EUMOVDAC0,VD10//保存运算结果,6.3局部变量表与子程序6.3.1局部变量表1.局部变量与全局变量程序中的每个程序组织单元POU(ProgramOrganizationalUnit)均有由64字节L存储器组成的局部变量表。局部变量只在它被创建的POU中有效,全局符号在各POU中均有效。局部变量有以下优点1尽量使用局部变量的子程序易于移植到别的项目。2如果使用临时变量(TEMP),同一片物理存储器可以在不同的程序中重复使用。2.局部变量的类型TEMP临时变量暂时保存在局部数据区中的变量。主程序或中断程序的局部变量表只有TEMP变量。IN输入变量由调用它的POU提供的传入子程序的输入参数。OUT输出变量子程序返回给调用它的POU的输出参数。IN_OUT输入_输出变量其初始值由调用它的POU提供,并用同一变量将子程序的执行结果返回给调用它的POU。,3.局部变量的地址分配4.在局部变量表中增加新的变量6.3.2子程序的编写与调用1.子程序的作用子程序将程序分成容易管理的小块,使程序结构简单清晰,易于查错和维护。子程序调用是有条件的,可以多次调用,使用子程序可以减少扫描时间。2.子程序的创建3.子程序的调用举例,,图6-4局部变量表与模拟量计算子程序,图6-5在主程序中调用子程序LDI0.4CALL模拟量计算,AIW2,VW20,2356,VD40,【例6-2】设计求V存储区连续的若干个字的累加和的子程序。下面是名为“求和”的子程序的局部变量表和STL程序代码。子程序中的*POINT是地址指针POINT指定的地址中字变量的值。,,网络1LDSM0.0MOVD0,RESULT//清结果单元FORCOUNT,1,NUMB//循环开始网络2LDSM0.0ITD*POINT,TMP1//将待累加的整数转换为双整数DTMP1,RESULT//双整数累加D2,POINT//指针值加2,指向下一个字网络3NEXT//循环结束,,图6-7在OB1中调用子程序,6.4数据处理指令6.4.1比较指令,,图6-8比较触点指令,图6-9自复位接通延时定时器,6.4.2数据传送指令1.字节、字、双字和实数的传送2.字节立即读指令MOV_BIR读取1个字节的物理输入,字节立即写指令MOV_BIW写1个字节的物理输出。3.字节、字、双字的块传送指令“BMBVB20,VB100,4”指令将VB20~VB23中的数据被传送到VB100~VB103。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查表指令举例命令参数1~4,分别代表“”、“”不等于、“”。,,图6-16先入先出指令举例,,,图6-17存储器填充指令,6.4.6读写实时时钟指令读实时时钟指令TODR从实时钟读取当前时间和日期,并把它们装入以T为起始地址的8字节缓冲区,依次存放年、月、日、时、分、秒、0和星期,1为星期日,2~7为星期1~6。写实时时钟指令TODW将起始地址为T的8字节缓冲区中的时间和日期写入实时钟。,,图6-18时钟指令【例6-5】出现事故时,I0.0的上升沿产生中断,使输出Q1.0立即置位,同时将事故发生的日期和时间保存在VB10~VB17中。//主程序OB1LDSM0.1//第一次扫描时ATCH0,0//指定在I0.0的上升沿执行0号中断程序ENI//允许全局中断,//中断程序0(INT_0)LDSM0.0//该位总是为ONSIQ1.0,1//使Q1.0立即置位TODRVB10//读实时时钟【例6-6】用实时时钟指令控制路灯的定时接通和断开,2000开灯,0600关灯,下面是语句表程序。LDSM0.0TODRVB0//读实时时钟,小时值在VB3LDBVB3,1620//如果在20点~0点日期、时间值用BCD码表示OBVB3,1606//或0点~6点Q0.0//点亮路灯,6.5数学运算指令与逻辑运算指令6.5.1数学运算指令梯形图IN1IN2OUT,IN1-IN2OUTIN1*IN2OUT,IN1/IN2OUT语句表IN1OUTOUT,OUT-IN1OUTIN1*OUTOUT,OUT/IN1OUT16位整数运算、32位双整数运算、实数运算和加1、减1指令。整数乘、除法的操作数为两个16位整数,乘积或商均为16位,不保留余数。双整数乘、除法的操作数和运算结果均为32位。此外还有MUL整数乘法产生双整数指令。DIV整数除法产生双整数指令。两个16位整数相除,结果的高16位为余数,低16位为商。,【例6-7】在输入信号I0.4的上升沿,用模拟电位器0来设置定时器T37的设定值(5~20s),即从SMB28读出的数字0~255对应于5~20s。设读出的数字为N,100ms定时器的设定值为200–50N/255+50150N/255+50(0.1s)网络1LDI0.4EU//在I0.4的上升沿MOVBSMB28,AC0MUL150,AC0//150乘以模拟电位器的转换值/D255,AC0//除以255,双整数除法I50,AC0//加偏移量50(5s)MOVWAC0,VW10网络2LDI0.5TONT37,VW10//T37以VW10中的数值为设定值,6.5.2浮点数函数运算指令包括正弦指令SIN、余弦指令COS和正切指令TAN,自然对数指令LN和自然指数指令EXP。角度的单位为弧度。6.5.3逻辑运算指令【例6-8】在I4.0的上升沿执行下面程序中的逻辑运算。LDI4.0EUINVBVB0//字节取反指令ANDBVB1,VB2//字节与指令ORBVB3,VB4//字节或指令XORBVB5,VB6//字节异或指令,,6.6中断程序与中断指令6.6.1中断程序中断允许指令ENI允许处理所有被连接的中断事件。禁止中断指令DISI禁止处理所有中断事件。进入RUN模式时自动禁止中断,中断程序越短越好。6.6.2中断事件与中断指令中断连接指令ATCH建立中断事件EVNT与对应的中断程序INT的联系。中断事件由中断事件号指定(见表7-12),中断程序由中断程序号指定。中断分离指令DTCH断开中断事件与中断程序之间的联系。中断优先级(见表7-12)分组通信(最高优先级)、I/O中断和定时中断。I/O中断I0.0~I0.3上升沿、下降沿中断;HSC当前值等于设定值、计数方向改变和计数器外部复位中断;输出完指定的脉冲数时产生的中断。,,图6-22中断指令,定时中断0/1的周期为1~255ms,分别写入SMB34和SMB35。每当定时时间到时,执行相应的定时中断程序。定时器T32/T96中断的时间周期最大为32.767s。【例6-10】在I0.0的上升沿通过中断使Q0.0立即置位。在I0.1的下降沿通过中断使Q0.0立即复位。//主程序OB1LDSM0.1//第一次扫描时ATCHINT_0,0//I0.0上升沿时执行0号中断程序ATCHINT_1,3//I0.1下降沿时执行1号中断程序ENI//允许全局中断//中断程序0(INT_0)LDSM0.0//该位总是为ONSIQ0.0,1//使Q0.0立即置位//中断程序1(INT_1)LDSM0.0//该位总是为ONRIQ0.0,1//使Q0.0立即复位,【例6-11】用定时中断0实现周期为2s的高精度定时。//主程序OB1LDSM0.1//第一次扫描时MOVB0,VB10//将中断次数计数器清0MOVB250,SMB34//设定时中断0的中断时间间隔为250msATCHINT_0,10//指定产生定时中断0时执行0号中断程序ENI//允许全局中断//中断程序INT_0,每隔250ms中断一次LDSM0.0//该位总是为ONINCBVB10//中断次数计数器加1LDB8,VB10//如果中断了8次(2s)MOVB0,VB10//将中断次数计数器清0INCBQB0//每2s将QB0加1,6.7高速计数器与高速脉冲输出指令6.7.1编码器高速计数器一般与增量式编码器配合使用,双通道A、B相型编码器提供转速和转轴旋转方向的信息。三通道增量式编码器的Z相零位脉冲用作系统清零信号,或坐标的原点,以减少测量的积累误差。,,图6-23A、B相型编码器的输出波形6.7.2高速计数器的工作模式与外部输入信号1无外部方向输入信号的单相加/减计数器(模式0~2)用控制字节控制计数方向。2有外部方向输入信号的单相加/减计数器(模式3~5)。3有加计数时钟脉冲和减计数时钟脉冲输入的双相计数器(模式6~8)。4A/B相正交计数器(模式9~11)。,图6-241倍速正交模式操作举例,,图6-254倍速正交模式操作举例根据有无复位输入和启动输入,上述的4类工作模式又可以各分为3种。高速计数器的外部输入信号见表7-16。6.7.3高速计数器指令与应用【例6-12】用指令向导生成HSC0的初始化程序和中断程序,HSC0为无外部方向输入信号的单相加/减计数器(模式0),计数值为10000~20000时Q4.0输出为1。(用编程软件演示),,6.7.4高速脉冲输出与开环位置控制占空比脉冲宽度与脉冲周期之比。脉冲列PTO功能提供周期与脉冲数目可以由用户控制的占空比为50的方波脉冲输出。脉冲宽度调制PWM功能提供连续的、周期与脉冲宽度可以由用户控制的输出。,,图6-28位置控制系统的速度与加减速时间CPU有两个PTO/PWM发生器,分别通过Q0.0或Q0.1输出高速脉冲。(演示用位置控制向导生成PWM指令PWMx_RUN)。(演示用位置控制向导组态脉冲列输出PTO的包络曲线)。,