模块六 其他的特殊指令_第1页
模块六 其他的特殊指令_第2页
模块六 其他的特殊指令_第3页
模块六 其他的特殊指令_第4页
模块六 其他的特殊指令_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、模块六模块六 其他的特殊指令其他的特殊指令学习目标 掌握程序控制指令的格式和功能,学会用程序控制指令来编写程序; 了解子程序的概念,掌握子程序的建立和调用的方法; 理解中断、中断事件、中断优先级等概念,了解各类中断事件及中断优先级,掌握中断指令的格式和功能,掌握中断程序的建立方法; 了解高速计数器的计数方式、工作模式、控制字节、初始值和预置值寄存器以及状态字节等含义,掌握高速计数器指令的格式和功能,学会使用高速计数器; 了解PWM和PTO的含义,了解PTO/PWM寄存器的各位的含义,掌握高速脉冲输出指令的格式和功能,能够使用PTO/PWM发生器产生需要的控制脉冲。任务一:程序控制指令任务一:程

2、序控制指令 程序控制指令的作用是控制程序的运行方向,如程序的跳转、程序的循环等。在工程实践中常用来解决一些生产流程的选择性分支控制、并行分支控制等。1任务提出设定I0.0为电动机点动连续运行控制选择开关,当I0.0得电时,选择点动控制;当I0.0不得电时,选择连续运行控制。表6-1 跳转与标号指令说明:N的取值范围是0255,可以在主程序、子程序或者中断服务程序中使用跳转指令,跳转指令及跳转标号指令只能用于同一程序段中。 表6-2 跳转与标号编程举例。2任务解决方案设定I0.0为电动机点动连续运行控制选择开关,当I0.0得电时,选择点动控制;当I0.0不得电时,选择连续运行控制3其他的程序控制

3、指令(1)条件结束指令与停止指令说明:1)条件结束指令只能用在主程序,不能用在子程序和中断程序。2)如果 STOP 指令在中断程序中执行,那么该中断立即终止并且忽略所有挂起的中断,继续扫描程序的剩余部分在本次扫描的最后完成 CPU 从 RUN 到 STOP 的转变。(2)看门狗复位指令看门狗复位指令(WDR)允许S7-200 CPU的系统看门狗定时器被重新触发,这样可以在不引起看门狗错误的情况下,增加此扫描所允许的时间。(3)循环控制指令程序循环控制结构用于描述一段程序的重复循环执行。指令格式和功能如表6-5所示。由FOR和NEXT指令构成程序的循环体 表6-6 程序控制指令编程举例 5应用实

4、例例1 有三台电动机,设置2种起停方式:手动操作方式:用每个电动机各自的起停按钮控制M1M3的起停状态;自动操作方式:按下起动按钮,M1M3每隔5s依次起运;按下停止按钮,M1M3同时停止。I/0分配如表6-7所示。动动脑吧:程序是如何实现所要求的控制功能的?动动脑吧:程序是如何实现所要求的控制功能的?例2 使用I0.1由OFF到ON的上升沿,将10,15,20,25,30,35分别送到VW10,VW12,VW20。分析:此程序可以由循环程序来实现,程序如图6-3所示。 调用子程序优点:- 用子程序可以减小程序的长度- S7-200在每个扫描周期中处理主程序中的代码,不管代码是否执行。而子程序

5、只有在被调用时,S7-200才会处理其代码,因而用子程序可以缩短程序扫描周期。-用子程序创建的程序代码是可传递的。具有某种独立功能的子程序,可以复制到另一个应用程序中。子程序有子程序调用和子程序返回两大类指令,子程序可以被多次调用,也可以嵌套(最多8层),还可以递归调用自己(自己调自己),使用递归的时候要慎重。任务二:子程序的使用任务二:子程序的使用 1任务提出建立模拟量计算子程序:在实际的控制项目中,从模拟量输入模块中得到模块量,需要经过一定的数学运算,来得到我们实际需要的模拟值。对这种需要重复进行的数学运算,可以通过建立子程序来实现,在需要的时候调用。(1)建立子程序的方法从“编辑”菜单选

6、择插入(Insert) 子程序;从指令树,用鼠标右键单击“程序块”图标并从弹出菜单选择插入(Insert) 子程序 从“程序编辑器”窗口,鼠标右键单击,从弹出快捷菜单中选择插入(Insert) 子程序;选择插入子程序之后,在程序编辑器的底部会出现一个新标记,代表新的子程序,子程序的编号n从0开始自动向上生成。任务二:子程序的使用任务二:子程序的使用表6-8 子程序指令说明:1)子程序调用指令编写在主程序中,子程序返回指令编写在子程序中;2)子程序标号n的范围是063;3)子程序可以不带参数调用,也可以带参数调用。带参数调用的子程序必须事先在局部变量表里对参数进行定义。局部变量表中的变量有IN、

7、IN_OUT、OUT和TEMP四类。IN(输入):是传入子程序的输入参数;IN_OUT(输入/输出):将参数的初始值传给子程序,并将子程序的执行结果返回给同一地址;OUT(输出):子程序的执行结果,它被返回给调用它的程序。被传递参数的数据类型有BOOL、BYTE、WORD、INT、DWORD、DINT、REAL、STRINGL八种。TEMP:局部存储器只能用作子程序内部的暂时存储器,不能用来传递参数。局部变量表最左边的一列是每个参数在局部存储器(L)中的地址。 表6-9 子程序编程举例 3任务解决方案在上述任务中,需要用到带参数的子程序调用,在子程序的局部变量表中定义“转换值”、“系数1”和“

8、系数2”的输入变量(IN),“模拟值”的输出变量(OUT),“暂存1”的临时变量(TEMP),任务通过设置如图6-9所示主程序和图6-10所示子程序实现。 4应用实例例1 编写子程序,将在主程序读取的系统时间的分钟数从BCD码格式转换成十进制整数格式。图6-11 例1的主程序图6-12 例1的子程序例2将上题中的系统时间的秒、分钟、小时均从BCD格式转换成十进制整数格式。图6-13 例2的主程序图6-14 例2的子程序例3 设计子程序,用来记录设备运行时间。用设备启动时的I0.0调用子程序。主程序如图6-15所示(该程序只能在STL编程器中输入)。局部变量表 中断是计算机在实时处理和实时控制中

9、不可缺少的一项技术。当控制系统执行正常程序时,系统中出现了某些急需处理的异常情况或特殊请求时,系统暂时中断现行程序,转去处理紧急事件(即中断服务程序),中断服务程序处理完毕,系统自动回到原来的程序继续执行。1中断事件 中断事件向CPU发出中断请求,S7-200有34个中断事件,每一个中断事件都分配一个编号用于识别,叫做中断事件号。中断事件大致可以分为三大类:通信中断输入、输出中断时间中断。任务三:任务三:PLC中断处理功能中断处理功能(1)通信中断PLC的自由通信模式下,通信口的状态可由程序来控制。用户可以通过编程来设置通信协议、波特率和奇偶校验。S7-200系列PLC有6种通讯口中断事件。(

10、2)I/O中断S7-200对I/O点状态的各种变化产生中断事件。包括外部输入中断、高速计数器中断和脉冲串输出中断。这些事件可以对高速计数器、脉冲输出或输入的上升或下降状态做出响应。(3)时基中断时间中断包括定时中断和定时器T32/T96中断。定时中断可用来支持一个周期性的活动。周期时间以1ms为单位,周期设定时间1255ms。对于定时中断0,把周期时间值写入SMB34;对定时中断1,把周期时间值写入SMB35。 2中断优先级在PLC应用系统中通常有多个中断事件,当多个中断事件同时向CPU申请中断时,要求CPU能够将全部中断事件按中断性质和处理的轻重缓急进行排队,并给予优先权。S7-200CPU

11、规定的中断优先级由高到低依次是:通信中断;输入、输出中断;定时中断。每类中断的不同中断事件又有不同的优先级。CPU响应中断的原则是:(1)当不同的优先级的中断源同时申请中断时,先响应优先级高的中断事件。(2)在相同优先级的中断事件中,CPU按先来先服务的原则处理中断。(3)当CPU正在处理某中断,它要一直执行到结束。不会被别的中断程序,甚至是更高优先级的中断程序所打断,新出现的中断事件需要排队,等待处理。CPU任何时刻只执行一个中断程序。 中断事件及优先级 3任务提出使用定时中断,编程完成采样工作,要求每10ms采样一次。 (1)建立中断程序的方法同建立子程序的方法完全一样。表6-11 中断指

12、令 5任务解决方案分析:可以使用定时中断完成每10ms采样一次,通过查表6-10可知,定时中断0的中断事件号为10。在主程序中将采样周期(10ms)即定时中断的时间间隔写入定时中断0的特殊存储器SMB34,中断事件10和INT0相连。在中断程序中,将模拟量输入信号读入。主程序如图6-18所示,中断程序如图6-19所示。 6应用实例例1 在I0.0的上升沿通过中断使Q0.0立即复位。在I0.1的下降沿通过中断使Q0.0立即复位。通过查表6-10得知,I0.0的上升沿中断事件号是0,I0.1的下降沿中断事件号是3。例2 定时中断的定时时间最长为255ms,用定时中断0实现周期为2s的高精度定时。查

13、表6-10可知,定时中断0的中断号为10。为了实现2s的定时,可以将定时时间间隔设为250ms,在定时中断0的中断程序中,将VB0加1,当VB0达到8的时候(即中断了8次),对应的时间间隔为2s。 例2的主程序 例2的中断程序0(INT_0) 例3 使用定时中断实现对100ms定时周期进行计数。 PLC的普通计数器的计数过程与扫描工作方式有关,CPU通过每一扫描周期读取一次被测信号的方法来捕捉被测信号的上升沿,被测信号的频率较高时,会丢失计数脉冲,因此普通计数器的工作频率很低,一般仅有几十赫兹。高速计数器可以对普通计数器无能为力的事件进行计数,计数频率取决于CPU的类型,CPU22x系列最高计

14、数频率为30KHz,用于捕捉比CPU扫描速更快的事件,并产生中断,执行中断程序,完成预定的操作。高速计数器在现代自动控制的精确定位控制领域有重要的应用价值。高速计数器可连接增量旋转编码器等脉冲产生装置,用于检测位置和速度。任务四:任务四: 高速计数指令的使用高速计数指令的使用 S7-200系列PLC中有六个高速计数器,它们分别是HSC0、HSC1、HSC2 、HSC3、HSC4、和HSC5。这些高速计数器可用于处理比PLC扫描周期还要短的高速事件。当高速计数器的当前值等于预置值时产生中断;外部复位信号有效(HSC0不支持)时产生外部复位中断;计数方向改变(HSC0不支持)时产生中断。通过中断服

15、务程序实现对控制目标的控制。 1高速计数器的工作模式 S7-200 CPU高速计数器可以分别定义为4种计数方式:(1)单相计数器,内部方向控制(2)单相计数器,外部方向控制(3)双相增/减计数器,双脉冲输入(4)A/B相正交脉冲输入计数器 每种高速计数方式的计数脉冲、复位脉冲、起动脉冲端子的不同接法可以设定3种工作模式。无复位,无启动输入有复位,无启动输入有复位,有启动输入 所以高速计数器可组成12种工作模式。 表6-13 高速计数器指令。说明:操作数HSC指定高速计数器号(05),MODE指定高速计数器的工作模式(011)。每个高速计数器只能用一条HDEF指令 3高速计数器的控制字节每个高速

16、计数器在S7-200 CPU的特殊存储器中拥有各自的控制字节。控制字节用来定义计数器的计数方式和其他一些设置,以及在用户程序中对计数器的运行进行控制。各高速计数器的控制字节的各个位的0/1状态具有不同的设置功能,含义如表6-14所示。表 6-14 高速计数器的控制字节含义 HSC0 HSC1 HSC2 HSC3 HSC4 HSC5 含 义 SM37.0 SM47.0 SM57.0 SM137.0 SM147.0 SM157.0 复位信号有效电平: 0=高电平有效;1=低电平有效 SM37.1 SM47.1 SM57.1 SM137.1 SM147.1 SM157.1 启动信号有效电平: 0=高

17、电平有效;1=低电平有效 SM37.2 SM47.2 SM57.2 SM1372 SM147.2 SM157.2 正交计数器的倍率选择: 0=4 倍率; 1=1 倍率 SM37.3 SM47.3 SM57.3 SM137.3 SM147.3 SM157.3 计数方向控制位: 0=减计数; 1=加计数 SM37.4 SM47.4 SM57.4 SM137.4 SM147.4 SM157.4 向 HSC 写入计数方向: 0=不更新; 1=更新 SM37.5 SM47.5 SM57.5 SM137.5 SM147.5 SM157.5 向 HSC 写入新的预置值: 0=不更新; 1=更新 SM37.6

18、 SM47.6 SM57.6 SM137.6 SM147.6 SM157.6 向 HSC 写入新的初始值: 0=不更新; 1=更新 SM37.7 SM47.7 SM57.7 SM137.7 SM147.7 SM157.7 启用 HSC: 0=关 HSC; 1=开 HSC 4高速计数器的数值寻址每个高速计数器都有一个32位初始值和一个32位预置值寄存器,初始值和预设值均为有符号整数。当前值也是一个32位的有符号整数,高速计数器的当前值可以通过高速计数器标识符HC加计数器号码(05)寻址来读取。初始值是高速计数器计数的起始值,预置值是高速计数器的目标值,当实际计数值等于预置值时,会产生中断事件。要

19、改变高速计数器的初始值和预置值,必须使控制字节(见表7-2)的第5位和第6位为1,在允许更新预置值和初始值的前提下,新初始值和新预置值才能写入初始值及预置值寄存器。初始值和预置值占用的特殊内部寄存器如表6-15所示。 5高速计数器的状态字节每个高速计数器都有一个状态字节,存储当前的计数方向、当前值是否等于预置值、当前值是否大于预置值。PLC通过监控高速计数器状态字节,可产生中断事件,以便用以完成用户希望的重要操作。状态字节只在中断程序中有效。各高速计数器的状态字节描述如表6-16所示。 7应用实例例1 设置一个两相正交4x高速计数器。分析:设置主程序调用子程序,子程序实现对高速计数器的设置(允

20、许计数,更新当前值,更新预置值,更新计数方向为加计数,正交计数设为4,复位和起动设置为高电平有效;定义HSC1位工作模式11;当前值SMD48清零,预置值SMD52设为1000;设置当前值等于预设值中断,全局开中断)在中断子程序中改写高速计数器的初始值。 例2 假设某单向旋转机械上连接了一个A/B两相正交脉冲增量旋转编码器,计数脉冲的个数就代表了旋转轴的位置。编码器旋转一圈产生10个A/B相脉冲和一个复位脉冲(C相或Z相),需要在第5个和第8个脉冲所代表的位置之间接通Q0.0,其余位置Q0.0断开。分析:利用HSC0的当前值(CV)=预置值(PV)中断,可以比较容易地实现要求的功能。A相接入I

21、0.0,B相接入I0.1,复位脉冲(C相或Z相)接入I0.2,查表确定HSC0的控制字节SM37应为2#10100100=16#A4。主程序:第一个扫描周期,一次性调用HSC0初始化子程序SBR_0,如图6-30所示。子程序:初始化HSC0为模式10,设预置值为5,并连接中断事件12(CV=PV)到INT_0,如图6-31所示。中断程序:根据计数值置位Q0.0,并重设预置值,如图6-32所示: S7-200 CPU22x系列PLC设有高速脉冲输出,输出频率可达20KHz,新型的CPU 224 XP的高速脉冲输出速率可以达到100kHz。高速脉冲输出有脉冲串输出PTO(输出一个频率可调,占空比为

22、50%的脉冲)和脉宽调制输出PWM(输出一个周期一定,占空比可调的脉冲)两种形式。 每个CPU有两个PTO/PWM发生器,一个发生器分配给输出端Q0.0,另一个分配给Q0.1。用来驱动诸如步进电机等负载,实现速度和位置的开环运动控制。当Q0.0或Q0.1设定为PTO或PWM功能时,其他操作均失效。不使用PTO/PWM发生器时,Q0.0或Q0.1作为普通输出端子使用。通常在启动PTO或PWM操作之前,用复位R指令将Q0.0或Q0.1清0。 注:只有晶体管输出类型的CPU能够支持调整脉冲输出功能。 任务五:高速输出指令的应用任务五:高速输出指令的应用 1脉宽调制输出(PWM)PWM功能可输出周期一

23、定占空比可调的高速脉冲串,其时间基准可以是s或ms,周期的变化范围为1065 535s或265 535ms,脉宽的变化范围为065 535s或065 535ms。当指定的脉冲宽度大于周期值时,占空比为100%,输出连续接通。当脉冲宽度为0时,占空比为0%,输出断开。如果指定的周期小于两个时间单位,周期被默认为两个时间单位。可以用以下两种办法改变PWM波形的特性。 2脉冲串输出(PTO)PTO功能可输出一定脉冲个数和占空比为50%的方波脉冲。输出脉冲的个数在14 294 967 295范围内可调;输出脉冲的周期以s或ms为增量单位,变化范围分别是1065 535s或265 535ms。如果周期小于两个时间单位,周期被默认为两个时间单位。如果指定的脉冲数为0,则脉冲数默认为1。PTO功能允许多个脉冲串

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论