《第3章 步进电机PLC控制程序设计.doc》由会员分享,可在线阅读,更多相关《第3章 步进电机PLC控制程序设计.doc(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第3章 步进电机PLC控制程序设计学习循环指令、数据传送指令、高速计数指令和中断指令。步进电机的工作原理,线路连接及控制方法。PLC与步进电机直接连接的控制实例。使用环型分配器的PLC控制实例。本章导读1指令学习2.1.1移位指令移位类指令在PLC控制中比较常用,根据移位数据的长度可以分为字节型移位、字型移位和双字型移位,根据移位的方向可分为左移和右移,还可进行循环移位。I0.0=1补011010101X101011000SM1.1右移前VB10单元右移后VB10单元SM1.1左移和右移指令 指令的功能是将IN端输入的无符号数据左移或右移N位后,结果送入OUT端。I0.0=1左移前VW200单
2、元补0XSM1.1左移后VW200单元SM1.1011010001101101图3.1.1 右移指令图3.1.2 左移指令I0.0=11 0 1 0 1 1 0 1 0 1 1 0 1 1 0 1 1 图3.1.3 循环右移指令1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 M0.0=1图3.1.4 循环右移指令相对于普通移位指令和循环移位指令,寄存器移位指令比较复杂,以图3.1.5所示的梯形图程序作为一个小小的示例,详细分析寄存器移位指令的工作过程。假设I0.0和I0.1的时序如图3.1.6所示,观察其中的两次移位结果。图3.1.5 寄存器移位指令1234LD I0.0EUSHR
3、B I0.1,M10.0,+3 语句表1DATA位:布尔型变量,接收外部I0.1送过来的信号,并传入S_BIT位。I0.0(P)I0.12S_BIT位:布尔型变量,若N为正,每次将值移入指定移动位数的最低位。第二次移位第一次移位S_BITI0.1初始状态1 0 1 3N:字节型,通常为常量。N为正时表示左移,N为负时表示右移。5SM1.1XS_BITI0.1第一次移位完1 1 0 4ENO:用于表示指令是否正确执行。如果出错ENO输出0,反之输出1。SM1.11 S_BITI0.1第二次移位完01 1 5SM1.1:用于接收移位数据的溢出位。SM1.10 图3.1.6 寄存器移位指令执行过程2
4、.1.2数据传送指令数据传送指令用于在各个编程元件之间进行数据传送。包括MOV_B(字节传送)、MOV_BIR(立即读字节)、MOV_BIW(立即写字节)、MOV_W(字传送)、MOV_DW(双字传送)和MOV_DW(实数传送)。如图3.1.7所示为数据传送指令功能介绍。15243使能输入,EN=1时,执行数据传送操作。2操作数类型:1. 立即读,必须用IB,即输入点。2. 立即写,字节、字、双字和实数型时,V、I、Q、M、S、SM、L、T、C、AC、*VD、*AC、*LD和常数。其中,不带星号的字母后面要加上相应的数据类型,带星号的作为间址寄存器,里面保存存放实际数据的地址。常数可是是二进制
5、(2#10010011)、十六进制(16#2f)和十进制数据(如35,47)。数据输入3在一段既有位操作又有字操作的程序中,用于表示字操作结果是否正确,将二进制结果位BR位加入程序后,无论字操作结果如何,都不会造成二进制逻辑链中断。在LAD的方块指令中,BR位与ENO有对应关系,用于表明方块指令是否被正确执行:如果执行出现了错误,BR位为0,ENO也为0;如果功能被正确执行,BR位为1,ENO也为1。出错条件5操作数类型:1. 立即写,必须用QB,即输出点。2. 立即写,字节、字、双字和实数型时,V、Q、M、S、SM、L、AC、*VD、*AC、*LD和常数。其中,不带星号的字母后面要加上相应的
6、数据类型,带星号的作为间址寄存器,里面保存存放实际数据的地址。数据输出4MOV_B:MOVE BYTE。传送数据为字节。MOV_BIR:MOVE BYTE IMMEDIATELY READ。立即读字节。MOV_BIW:MOVE BYTE IMMEDIATELY WRITE。立即写字节。MOV_W:MOVE WORD。传送数据为字。MOV_DW:MOVE DOUBLE WORD。传送数据为双字。MOV_R:MOVE REAL。传送数据为实数。指令名称1图3.1.7 数据传送指令1MOV_B指令若输入数据在IB区,扫描程序时从输入映像寄存器取数,而MOV_BIR不经输入映像寄存器,直接读取输入点的
7、值。2. MOV_B指令若输出数据在QB区,指令执行时,只把数据送入到输出映像寄存器中,到扫描接触时才会刷新输出点,而MOV_BIW指令立即写到输出端子上,不需要等到输出刷新阶段。3. 虽然BIR和BIW指令能够减少某些信号的滞后现象,但对整个系统而言,却延长了程序的扫描时间,总体上反而扩大了滞后现象,因此不提倡频繁采用。 要点提示为方便查询,列出如表3-1-1所示的数据传送指令总表。表3-1-1 数据传送指令指令名称梯 形 图功能说明寻址范围字节传送EN=1时,OP1 OP2(传送字节数据)INVB、IB、QB、MB、SMB、LB、AC、*VD、*AC、*LD和常数OUTVB、QB、MB、S
8、MB、LB、AC、*VD、*AC、*LD立即读字节EN=1时,OP1 OP2(立即读入输入触点状态值)INIBOUTVB、QB、MB、SMB、LB、AC、*VD、*AC、*LD立即写字节EN=1时,OP1 OP2(立即刷新输出)INVB、IB、QB、MB、SMB、LB、AC、*VD、*AC、*LD和常数OUTQB字传送EN=1时,OP1 OP2(传送字长数据)INVW、IW、QW、MW、SMW、LW、T、C、AC、*VD、*AC、*LD和常数OUTVW、QW、MW、SMW、LW、T、C、AC、*VD、*AC、*LD双字传送EN=1时,OP1 OP2(传送双字长数据)INVD、ID、QD、MD、
9、SMD、LD、HC、AC、*VD、*AC、*LD和常数OUTVD、QD、MD、SMD、LD、AC、*VD、*AC、*LD实数传送EN=1时,OP1 OP2(传送实数数据)与双字传送相同表3-1-2 数据块传送指令字节交换指令指令名称梯 形 图功能说明操作数类型字节块传送当使能EN=1时,将以OP1为首地址单元的N个连续字节型数据送入到以OP2为首地址的N个连续字节单元中。OP1BYTEOP2BYTENBYTE字块传送当使能EN=1时,将以OP1为首地址单元的N个连续字型数据送入到以OP2为首地址的N个连续字单元中。OP1WORDOP2WORDNWORD双字块传送当使能EN=1时,将以OP1为首
10、地址单元的N个连续双字型数据送入到以OP2为首地址的N个连续双字单元中。OP1DOUBLE WORDOP2DOUBLE WORDNDOUBLE WORD字节交换当使能EN=1时,将OP1的高8位好第八位交换,并保存在OP1中。OP1WORD2.1.3中断指令在计算机控制技术中,中断通常用来处理那些随机出现的急需处理的事件。CPU响应中断请求后,会暂时停止正在进行的任务,并保护现场,将累加器、逻辑堆栈、寄存器及特殊继电器的工作状态好数据保存起来,然后转入相应的中断服务程序中去处理。完成中断任务后,立即恢复现场,将保存好的现场数据好状态重新装入,返回到中断前的位置继续执行程序。这种工作方式就叫中断
11、。计算机中,中断响应的过程如图3.1.8所示。执行主程序主程序继续执行主程序断点中断请求中断响应执行中断处理程序中断返回图3.1.8 中断程序响应过程S7-200中,对CPU224型和CPU226型,引发中断的事件一共有5大类34项,每个中断事件对应不同的编号,编号范围:033。其中输入信号引发的中断有8项,通信口引发的有6项,定时器引发的有4项,高速计数引发的有14项,脉冲指令引发的有2项。在编程中需用到中断时,可查表3-1-4.表3-1-4 中断事件表事件号中断事件描述事件号中断事件描述0I0.0上升沿中断17高速计数器2:输入方向改变1I0.0下降沿中断18高速计数器2:外部复位2I0.
12、1上升沿中断19PTO 0脉冲串输出完成中断3I0.1下降沿中断20PTO 1脉冲串输出完成中断4I0.2上升沿中断21定时器T32 CT=PT中断5I0.2下降沿中断22定时器T96 CT=PT中断6I0.3上升沿中断23通信口0:接收信息完成7I0.3下降沿中断24通信口1:接收信息完成8通信口0:接收字符25通信口1:接收字符9通信口0:发送字符完成26通信口1:发送字符完成10定时中断0:SMB34存放定时间隔,5255s27速计数器0:输入方向改变11定时中断1:SMB35存放定时间隔,5255s28高速计数器0:外部复位12高速计数器0:CV=PV(当前值=预设值)29高速计数器4
13、:CV=PV(当前值=预设值)13高速计数器1:CV=PV(当前值=预设值)30速计数器4:输入方向改变14高速计数器1:输入方向改变31高速计数器4:外部复位15高速计数器1:外部复位32高速计数器3:CV=PV(当前值=预设值)16高速计数器2:CV=PV(当前值=预设值)33高速计数器5:CV=PV(当前值=预设值)在编写中断程序时需用到的指令有以下几条,如图3.1.9所示。12354开中断13使能有效时,开启全部中断,允许CPU接收所有中断事件的中断请求,并执行已激活的中断事件。关中断23使能有效时,关闭全部中断,禁止CPU接收所有中断事件的中断请求。中断返回33使能有效时,退出中断服
14、务程序,返回到主程序,Micro/Win32自动为各中断程序的结尾添加无条件返回(RETI),用户不必添加。中断连接43使能有效时,中断事件EVENT与一个标号为INT的中断服务程序建立联系。INT:中断服务程序号(0127)EVNT:中断事件号(033)中断分离5使能有效时,取消中断事件EVENT与所有中断服务程序的关联,并对该事件关中断。EVNT:中断事件号(033)图3.1.9 中断指令1中断优先级。按全部中断事件的中断性质和轻重缓急分成不同的优先级。当多个事件并发请求中断时,按优先级的高低进行排队,同级别的按先来先处理的原则。S7-200的优先级从高到底依次为:通信中断、高速脉冲串输出
15、中断、外部输入中断、高速计数器中断、定时中断和定时器中断。2. 中断队列。在任何时刻,CPU只执行一个中断程序。CPU执行中断程序期间,对新出现的中断事件按优先级顺序排成中断队列,CPU从高到低依次执行中断程序。3. S7-200中,中断不允许嵌套。但在中断程序中可以调用一个嵌套的子程序,因为累加器和逻辑堆栈在中断程序和被调子程序中是公用的。4. 多个中断可以调用同一个中断服务程序,同一个事件不能同时指定多个中断服务程序。 中断程序的调用原则下面以一个简单实例来加深理解中断程序的编写步骤及基本要求。【实例3-1】采用中断指令完成每隔0.1s对模拟量输入值进行采样,并存入VW10中。1对定时采样
16、,可使用定时中断0或定时中断1来完成。2. 采样时间间隔可以将设定值送到SMB34或SMB35中。3. 建立中断服务程序INT_0。在里面用字传送指令将AIW0送入VW10字单元。4. 查表找出中断事件号,连接中断服务程序。5. 开中断。 问题分解本程序采用定时中断1来完成采样任务,梯形图程序如图3.1.10所示。1234567图3.1.11 定时采集模拟量程序设定定时中断1以0.1s间隔产生中断1定时中断1与INT_0中断程序建立联系2开中断,CPU可以响应该中断事件3主程序编辑框,每个控制程序只有一个4中断服务程序中采样,结果存入VW105中断服务程序INT_0的编辑框6子程序SBR_0,
17、点击即进入编辑框7中断服务程序中,不可使用开中断指令ENI、关中断指令DISI、高速计数器指令HDEF、步进段开始指令LSCR和条件结束指令END。通过以上实例,归纳中断程序编程的一般步骤如图3.1.12所示。根据中断性质,查出中断事件号如有必要,先进行中断源初始化编写中断服务程序INT_n中断连接开中断如有必要,进行中断分离图3.1.12 中断程序编程步骤2.1.4高速计数器指令1.普通计数器 按顺序扫描的方式工作,每个扫描周期只对计数脉冲进行一次累加。当输入脉冲频率比PLC扫描周期的频率高时,无法准确计数。2.高速计数器 避开顺序扫描过程,直接对外部高频脉冲信号进行计数,不影响CPU的性能
18、。计数器的工作频率可高达20KHz。S7-200中内置有46个高速计数器,分别为HSC0HSC5,共有12中工作模式,如表3-1-5所示。表3-1-5 高速计数器工作模式(一)高速计数器种类工作模式HSC0HSC3HSC4HSC5I0.0I0.1I0.2I0.1I0.3I0.4I0.5I0.4单路脉冲输入的内部方向控制加/减计数器0计数计数计数计数1计数复位计数复位2单路脉冲输入的外部方向控制加/减计数器3计数方向计数方向4计数方向复位计数方向复位5两路脉冲输入加/减计数器6增计数减计数增计数减计数7增计数减计数复位增计数减计数复位8两路脉冲输入双相正交计数器9A相B相A相B相10A相B相复位
19、A相B相复位11表3-1-6 高速计数器工作模式(二)高速计数器种类工作模式HSC1HSC2I0.6I0.7I1.0I1.1I1.2I1.3I1.4I1.5单路脉冲输入的内部方向控制加/减计数器0计数计数1计数复位计数复位2计数复位启动计数复位启动单路脉冲输入的外部方向控制加/减计数器3计数方向计数方向4计数方向复位计数方向复位5计数方向复位启动计数方向复位启动两路脉冲输入加/减计数器6增计数减计数增计数减计数7增计数减计数复位增计数减计数复位8增计数减计数复位启动增计数减计数复位启动两路脉冲输入双相正交计数器9A相B相A相B相10A相B相复位A相B相复位11A相B相复位启动A相B相复位启动注
20、:上述两表中所用的输入点如果没在高速计数器中使用,可作为一般的数字量输入点来用,或作为中断事件的输入点。为了加深对高速计数方式的理解,下面以时序图进行详细的说明。(1)单路脉冲输入的内部方向控制加/减计数器 只有一个脉冲输入端,以高速计数器对应的控制字的第三位控制计数方向。该位为1,加计数;该位为0,减计数。如图3.1.13所示。图3.1.14 内部方向控制的加/减计数输入脉冲1内部方向控制2计数器当前值3PV=CV时产生中断该位为1,加计数该位为0,减计数123计数器允许,当前值清零,预设值=4的时序图(2)单路脉冲输入的外部方向控制加/减计数器。 有一个输入端,一个方向控制端。方向输入信号
21、等于1时,加计数;方向输入信号等于0时,减计数。输入脉冲信号外部方向控制当前值计数器允许,当前值清零,预设值=4的时序图图3.1.15 外部方向控制的加/减计数(3)两路脉冲输入加/减计数器计数器允许,当前值清零,预设值=4的时序图加计数脉冲输入减计数脉冲输入当前值图3.1.16 两路脉冲输入的加/减计数(4)两路脉冲输入双相正交计数器 两路脉冲输入端A相和B相,相位相差90(正交),A相超前B相90时,加计数;A相滞后B相90时,减计数。这种计数方式,可以选择1x模式(单倍频,一个时钟脉冲记一个数)和4x模式(四倍频,一个时钟脉冲记四个数),如图3.1.17和3.1.18所示。计数器允许,当
22、前值清零,预设值=3的时序图图3.1.17 两路脉冲输入双相正交计数1x模式A相时钟B相时钟当前值计数器允许,当前值清零,预设值=9的时序图图3.1.18 两路脉冲输入双相正交计数4x模式当前值B相时钟A相时钟3.高速计数器的控制字 定义了高速计数器和工作模式之后,还要设置高速计数器的有关控制字节。每个高速计数器均有一个控制字,它决定了计数器的计数允许或禁用,方向控制(仅限模式0,1和2)或对所有其他模式的初始化计数方向,装入当前值和预设值。控制字的每个控制位的说明如表3-1-7所示。表3-1-7 HSC的控制字HSC0HSC1HSC2HSC3HSC4HSC5说 明SM37.0SM47.0SM
23、57.0SM147.0复位控制:0=高电平有效,1=低电平有效SM47.1SM57.1启动控制:0=高电平有效,1=低电平有效SM37.2SM47.2SM57.2SM147.2正交速率:0=4倍频,1=1倍频SM37.3SM47.3SM57.3SM137.3SM147.3SM157.3计数方向:0=减计数,1=增计数SM37.4SM47.4SM57.4SM137.4SM147.4SM157.4计数方向改变:0=不改变,1=允许改变SM37.5SM47.5SM57.5SM137.5SM147.5SM157.5设定值更新:0=不更新,1=允许更新SM37.6SM47.6SM57.6SM137.6S
24、M147.6SM157.6当前值更新:0=不更新,1=允许更新SM37.7SM47.7SM57.7SM137.7SM147.7SM157.7高速计数控制:0=禁止计数,1=允许计数4.高速计数器的状态字 每个高速计数器都有一个状态字。状态字表示当前计数方向以及当前值是否大于或等于预设值。高速计数器状态字的04位不用,其他位的描述如表3-1-8所示。监控高速计数器状态的目的是使外部事件产生中断,以完成重要操作。表3-1-8 HSC的状态字HSC0HSC1HSC2HSC3HSC4HSC5说 明SM36.5SM46.5SM56.5SM136.5SM146.5SM156.5当前计数方向的状态位:0=减
25、计数,1=加计数SM36.6SM46.6SM56.6SM136.6SM146.6SM156.6当前值等于预设值状态位:0=不等于,1=相等SM36.7SM46.7SM56.7SM136.7SM146.7SM156.7当前值大于预设值状态位:0=不大于,1=大于高速计数器的当前值和预设值 每个高速计数器都有一个32位的当前值寄存器和一个32位的预设值寄存器,它们都是有符号整数。表3-1-9列举了用于装入新当前值和预设值的特殊内部标志位存储区。表3-1-9 高速计数器当前值和预设值占用的特殊内部标志位存储区高速计数器HSC0HSC1HSC2HSC3HSC4HSC5当前值寄存器SMD38SMD48S
26、MD58SMD138SMD148SMD158预设值寄存器SMD42SMD52SMD62SMD142SMD152SMD1621高速计数指令 包括两条:定义高速计数指令HDEF和执行高速计数指令HSC,如图3.1.19所示。152高速计数模式:0114高速计数器编号:05指令名称:定义高速计数指令高速计数器编号:053指令名称:执行高速计数指令234图3.1.19 高速计数指令5高速计数器的初始化 由于高速计数器的HDEF指令在进入RUN模式后只能执行一次,为了减少程序运行时间,优化程序结构,一般以子程序形式进行初始化。下面以HSC1为例,介绍高速计数器的初始化步骤,如图3.1.20所示。1利用S
27、M0.1来调用一个初始化子程序进入初始化子程序如SMB47=16#F8,在模式0,1,2中其意义是:允许写入新的当前值和新的设定值,增计数,启动和复位信号高电平有效。查表3-1-7。2装载控制字3选择1号高速计数器,模式为011中的一种。执行HDEF指令4将希望的当前值装入SMD48(装0表示清除)。装载当前值5将希望的设定值装入SMD52。查表3-1-9。装载设定值若希望捕获当前值等于设定值,则将CV=PV中断事件(13号)与中断程序连接(ATCH),并编写相关的中断程序。若想捕获外部复位中断事件,则事件号为15。查表3-1-4。6设置中断7执行ENI指令,启动全局中断。开中断8执行HSC指
28、令9退出初始化子程序图3.1.20 高速计数器初始化2.1.5高速脉冲输出指令S7-200中只能用Q0.0和Q0.1来输出高速脉冲信号,如果不使用高速脉冲输出功能时,Q0.0和Q0.1可以作为普通数字量输出点使用。高速脉冲输出通常用来控制步进电机或伺服电机,S7-200的高速脉冲输出有两种形式:PTO(Pulse Train Output)高速脉冲串输出和PWM(Pulse Width Modulation)脉冲宽度调制输出。1.脉冲输出指令 PLS指令名称121输出点,0或12图3.1.21 高速脉冲输出指令2.与高速脉冲输出控制相关的特殊继电器 包括1个8位的状态字,1个8位的控制字,2个
29、16位的时间寄存器,1个32位的PTO计数器,1个八位的段寄存器,1个16位的偏移地址寄存器。通过这些特殊继电器,来控制高速脉冲输出的工作状态、输出形式及设置各种参数。分别如表3-1-10,3-1-11,3-1-12和3-1-13所示。表3-1-10 PTO输出的状态字Q0.0Q0.1功 能 描 述SM66.4SM76.4PTO包络表因计算错误而终止:0=无错误,1=终止SM66.5SM76.5PTO包络表因用户命令而终止:0=无错误,1=终止SM66.6SM76.6PTO溢出:0=无溢出,1=有溢出SM66.7SM76.7PTO空闲:0=执行中,1=空闲表3-1-11 PTO输出的控制字Q0
30、.0Q0.1功 能 描 述SM67.0SM77.0允许更新PTO/PWM周期值:0=不更新,1=更新SM67.1SM77.1允许更新PWM脉冲宽度值:0=不更新,1=更新SM67.2SM77.2允许更新PTO脉冲输出个数:0=不更新,1=更新SM67.3SM77.3PTO/PWM的时间基准选择:0=us,1=msSM67.4SM77.4PWM的更新方式:0=异步更新,1=同步更新SM67.5SM77.5PTO单段/多段输出选择:0=单段,1=多段SM67.6SM77.6PTO/PWM的输出模式选择:0=PTO,1=PWMSM67.7SM77.7允许PTO/PWM的脉冲输出:0=禁止,1=允许表
31、3-1-11 PTO/PWM控制字参考值控制字节允许输出方式时基PTO段操作更新PTO个数更新脉宽更新周期16#81是PTO1us单段不更新16#84是PTO1us单段更新不16#85是PTO1us单段更新更新16#89是PTO1ms单段不更新16#8C是PTO1ms单段更新不16#8D是PTO1ms单段更新更新16#A0是PTO1us多段不不16#A8是PTO1ms多段不不16#C1是PWM1us不更新16#C2是PWM1us更新不16#C3是PWM1us更新更新16#C9是PWM1ms不更新16#CA是PWM1ms更新更新16#CB是PWM1ms更新更新表3-1-12 高速脉冲输出控制的其
32、他相关特殊继电器Q0.0Q0.1功 能 描 述SMW68SMW78存储PTO/PWM周期值,字型数据,数据范围:265535SMW70SMW80存储PWWM的脉宽值,字型数据,范围:065535SMD72SMD82存储PTO的脉冲数,双字型数据,范围:14294967295SMB166SMB176存储多段PTO的段数,字节型数据,范围:1255SMW168SMW178存储多段PTO包络表的起始偏移地址,字型数据3.PTO的使用 它是可以指定脉冲数和周期的占空比为50%的高速脉冲串的输出。状态字节中的最高位(空闲位)用来指示脉冲串输出是否完成。可以在脉冲串输出完成时启动中断程序,若使用多段操作,
33、则在包络表完成时启动中断程序。周期和脉冲个数周期为16位无符号数,范围:5065535ms或265535us。通过控制字的第三位来选择。注意事项: 如果周期小于2个时间单位,则周期默认值为2个时间单位。 周期应该设定为偶数,为奇数时会引起波形失真。脉冲个数为32位无符号数,范围:14294967295。注意事项: 如果设定脉冲数为0,则系统自动将其更改为1。单段PTO流水线中每次只能存储一个脉冲串的控制参数,初始PTO段一旦启动,必须按照第二个波形的要求立即刷新SM,并再次执行PLS指令,第一个脉冲串输出完成,第二个脉冲串输出立即开始。重复这一步骤,可以实现多个脉冲串的输出。特点: 多个脉冲串
34、的时基可以不同。 编程复杂,参数设置不当时,会造成各个脉冲串连接不平滑。多段PTO在变量存储区V建立一个包络表。包络表中存放每个脉冲串的参数,执行PLS指令时,S7-200自动按照包络表中的顺序及参数进行脉冲串输出。包络表由段数和每段参数构成,每段长度为8个字节,用于存储初始周期值(2字节)、周期增量值(2字节)、脉冲个数(4字节)。表3-1-13是包络表的格式。特点: 编程简单,按照程序设定的周期增量自动增减脉冲周期。 所有脉冲串的时基必须一致,执行PLS指令时,包络表的所有参数都不能改变。表3-1-13 包络表的格式字节偏移地址段存 储 说 明段数(1255),数值0产生非致命错误,无PT
35、O输出段1初始周期,无符号数,范围:265535个时钟单位周期增量,有符号整数,范围:-32768+32767个时基单位输出脉冲数,无符号整数,范围:14294967295段2初始周期,无符号数,范围:265535个时钟单位周期增量,有符号整数,范围:-32768+32767个时基单位输出脉冲数,无符号整数,范围:14294967295段3初始周期,无符号数,范围:265535个时钟单位周期增量,有符号整数,范围:-32768+32767个时基单位输出脉冲数,无符号整数,范围:14294967295【例3-2】高速计数和高速脉冲输出综合实例使用高速脉冲输出(PLS)来为高速计数提供计数信号,构
36、成一个简单的反馈回答。用Q0.1和Q0.2分别借到指示灯HL1和HL2上,HL1亮0.5s后,HL2亮,再过0.5s两灯都熄灭1s,重复上述过程,直到总脉冲数达到30000个时(合计15个循环),高速计数和高速脉冲输出都停止,HL1和HL2都熄灭。高速计数器采用HSC0,高速脉冲输出采用单段PTO方式,高速脉冲输出点接Q0.0,用一导线将Q0.0和I0.0连接起来。如图3.1.22所示。图3.1.22 硬件接线图1.程序设计框图 程序设计可以采样主程序、初始化子程序和中断服务程序来完成。如图3.1.23所示为程序执行过程框图和PTO在各中断程序中输出的脉冲个数。图3.1.23 程序流程图和脉冲
37、输出2.程序设计思想(1)建立主程序。为高速计数器HSC0送控制字,赋当前值和预设值,定义高速计数器,调用初始化化子程序。(2)建立HSC0初始化化子程序。连接中断事件并启动计数。(3)建立PLS初始化子程序,并启动PLS,输出单段PTO。(4)建立中断服务程序。根据PV=CV中断事件,将中断事件号和中断服务程序连接起来。本程序设计三个中断程序,在它们之间形成循环调用的关系。下面是对主程序、子程序和中断程序进行详细说明。分别如图2.1.24图2.1.28所示。装载HSC0的控制位:激活HSC0,可更新PV,可更新CV可改变方向,正向计数。HSC0的当前值(CV)设为0HSC0的第一次设定值(P
38、V)设为1000HSC0被设定为模式0:单路脉冲输入的内部方向控制加/减计数器,I0.0为输入端。调用子程序0,初始化并启动PLS主程序调用子程序1,初始化并启动HSC0图3.1.24 主程序装载脉冲输出(PLS)的控制位:PTO、时基1ms,可更新、激活脉冲周期1ms产生30000个脉冲启动脉冲输出(PLS),从Q0.0输出子程序0图3.1.25 子程序0中断事件号12与中断程序0建立联系开中断,允许全部中断启动HSC0,开始计数子程序1图3.1.26 子程序1Q0.1置位,HL1灯亮重置HSC0的控制字,仅更新设定值(PV)HSC的第二次设定值,设置为1500用中断1取代中断0,分配事件号12再次启动HSC0中断程序0图3.1.27 中断程序0中断程序