PLC论坛-全力打造可编程控制器专业技术论坛

 找回密码
 注册哦

QQ登录

只需一步,快速开始

微信扫码登录

查看: 86517|回复: 0

[西门子] 写程序必须要会的高速处理指令

[复制链接]
发表于 2024-8-30 17:02:03 | 显示全部楼层 |阅读模式
PLC的高速处理指令包括高速计数指令、高速脉冲指令。一般来说,高速计数器和编码的配合使用可用来累计比 PLC扫描频率高得多的脉冲输入,利用产生的中断事件完成预定的操作,因此在现代自动控制的精确定位、测量长度等控制领域有重要的应用价值。

高速脉冲输出功能是指在可编程控制器的某些输出端有高速脉冲输出,用来驱动负载以实现精确控制。

高速计数器指令

PLC的普通计数器的计数过程受CPU 扫描速度的影响,CPU 通过每一扫描周期读取一次被测信号的方法来捕捉被测信号的上升沿,被测信号的频率较高时,会丢失计数脉冲,所以普通计数器的工作频率一般只有几十赫兹,它不能对高速脉冲信号进行计数。为解决这一问题,S7-200SMARTPLC提供了6个高速计数器 HSC0~HSC5,以响应快速脉冲输入信号。高速计数器独立于用户程序工作,不受程序扫描时间的限制,它可对小于主机扫描周期的高速脉冲准确计数,用户通过相关指令,设置相应的特殊存储器控制高速计数器的工作。

(1)S7-200SMART 系列的高速计数器

不同型号的 PLC主机,高速计数器数量不同,经济型的 CPU 模块支持 HSC0、HSC1、HSC2、HSC3这4个高速计数器,而没有 HSC4和 HSC5这2个计数器;标准型的 CPU 模块拥有 HSC0~HSC5这6个高速计数器。6个高速计数器的主要参数如表5-99所示。

表5-99 6个高速计数器的主要参数



HSC0、HSC2、HSC4和 HSC5支持8种计数模式,分别为模式0、模式1、模式3、模式4、模式6、模式7、模式9和模式10,而 HSC1和 HSC3只支持模式0这1计数模式。

高速计数器的硬件输入接口与普通数字量输入接口使用相同的地址,已定义用于高速计数器的输入端不再具有其它功能,但某个模式下没有用到的输入端仍然可以用作普通开关量的输入点,其占用的输入端子如表5-99所示。各高速计数器不同的输入端接口有专用的功能,如时钟脉冲端、方向控制端、复位端、启动端等。同一输入端不能用于两种不同的功能,但高速计数器当前模式未使用的输入端可用于其它功能。

(2)高速计数器的工作类型

S7-200SMARTPLC高速计数器有4种工作类型:①内部方向控制的单相计数;②外部方向控制的单相计数;③双脉冲输入的加/减计数;④两路脉冲输入的双相正交计数。

① 内部方向控制的单相计数 内部方向控制的单相计数,它只有一个脉冲输入端,通过高速计数器的控制字节的第3位来控制计数方向。若高速计数器控制字节的第3位为1,进行加计数;若该位为0,进行减计数,如图5-8所示,图中CV 表示当前值,PV 表示预置值。计数模式0和1为内部方向控制的单相计数,其中模式1还具有外部复位功能。



图5-8 内部方向控制的单相计数

② 外部方向控制的单相计数 外部方向控制的单相计数,它有一个脉冲输入端,有一个方向控制端。若方向控制端等于1,加计数;若方向控制端等于0,减计数,如图5-9所示。计数模式3和4为外部方向控制的单相计数,其中模式4还具有外部复位功能。



图5-9 外部方向控制的单相计数

③ 双脉冲输入的加/减计数 双脉冲输入的加/减计数,有两个脉冲输入端,一个是加计数脉冲输入端,另一个是减计数脉冲输入端。计数值为两个输入端脉冲的代数和。若高速计数使用在模式6、7,如果加计数时钟输入的上升沿与减计数时钟输入的上升沿之间的时间间隔小于0.3ms,高速计数器把这些事件看作是同时发生的,在此情况下,当前值不变,计数方向指示不变,只要加计数时钟输入的上升沿与减计数时钟输入的上升沿之间的时间间隔大于0.3ms,高速计数器分别捕捉每个事件,在以上两种情况下,都不会产生错误,计数器保持正确的当前值,如图5-10所示。



图5-10 模式6、7时双脉冲输入的加/减计数

④ 两路脉冲输入的双相正交计数 两路脉冲输入的双相正交计数,有两个脉冲输入端,一个是 A 相,另一个是 B相。两路输入脉冲 A 相和 B相的相位相差90° (正交),A 相超前B相90°时,加计数;A 相滞后 B相90°时,减计数。在这种计数方式下,可选择计数模式9或10的1倍速正交模式 (1个时钟脉冲计1个数)和4倍速正交模式 (1个时钟脉冲计4个数),如图5-11所示。



图5-11 两路脉冲输入的双相正交计数

(3)高速计数器的计数模式

S7-200SMART PLC 提 供 了 6 个 高 速 计 数 器 HSC0~ HSC5, 其 中 HSC0、HSC2、HSC4和 HSC5支持8种计数模式,分别为模式0、模式1、模式3、模式4、模式6、模式7、模式9和模式10,而 HSC1和 HSC3只支持模式0和1计数模式。

模式0、模式1采用单相内部方向控制的加/减计数;模式3、模式4采用单相外部方向控制的加/减计数;模式6、模式7采用双脉冲输入的加/减计数;模式9、模式10采用两路脉冲输入的双相正交计数。

选用某个高速计数器在某种计数模式下工作后,高速计数器所使用的输入不是任意选择的,必须按系统指定的输入点输入信号。例如 HSC0 的所有计数模式始终使用I0.0,而HSC2的所有计数模式始终使用I0.2,所以使用这些计数器时,不能将这些输入端子作为其他用途。高速计数器的计数模式和输入端子的关系如表5-100所示。

表5-100 高速计数器的计数模式和输入端子的关系



(4)高速计数器的控制字节、状态字节、数值寻址和中断功能

在定义了计数器和工作模式后,还要设置高速计数器有关控制字节。每个高速计数器都有一个控制字节,它决定计数器是否允许计数、控制计数方向或者对所有其它模式定义初始化计数方向、装载初 始 值 和 装 载 预 置 值。高 速 计 数 器 控 制 字 节 的 位 地 址 分 配 如 表 5-101所示。

表5-101 高速计数器控制字节的位地址分配





每个高速计数器除了控制字节外,还有一个状态字节。状态字节的相关位用来描述当前的计数方向、当前值是否大于或等于预置值,状态位功能如表5-102所示。

表5-102 高速计数器状态字节



每个高速计数器都有一个初始值和一个预置值,它们都是32位的有符号整数。初始值是高速计数器计数的起始值;预置值是计数器运行的目标值,如果当前计数值等于预置值,内部产生一个中断。当控制字节设置为允许装入新的初始值和预置值时,在高速计数器运行前应将初始值和预置值存入特殊的存储器中,然后执行高速计数器指令才有效。不同的高速计数器其初始值、预置值和当前值有专用的存储地址,如表5-103所示。

表5-103 高速计数器数值寻址



当前值也是一个32位的有符号整数,HSC0的当前值在 HC0中读取;HSC1的当前值在 HC1中读取。

(5)高速计数指令

高速计数指令 HSC (HighSpeedCounter)有高速计数器定义指令 (HDEF)和高速计数器启动指令 (HSC)两条,指令格式如表5-104所示。

表5-104 高速计数指令格式



高速计数器定义指令 (HDEF),用于指定高速计数器的计数模式,即用来选择高速计数器的输入脉冲、计数方向、复位功能。每个高速计数器在使用之前必须使用此指令来选定一种计数模式,并且每一个高速计数器只能使用一次 “高速计数器定义”指令。

高速计数器启动指令 (HSC),根据高速计数器控制位的状态和按照 HDEF指令指定的工作模式,启动编号为 N 的高速计数器。

(6)高速计数器的使用

使用高速计数器时,需完成以下步骤:

① 根据选定的计数器工作模式,设置相应的控制字节;

② 使用 HDEF指令定义计数器号;

③ 设置计数方向;

④ 设置初始值;

⑤ 设置预置值;

⑥ 指定并使能中断服务程序;

⑦ 执行 HSC指令,激活高速计数器。

如果在计数器运行中改变其设置时,则以上的第②步和第⑥步省略。

(7)高速计数器指令的初始化

高速计数器指令的初始化步骤如下。

① 用初次扫描存储器 SM0.1=1调用执行初始化操作的子程序,由于采用了子程序,在后续扫描中不必再调用这个子程序,从而减少扫描时间,使程序结构更加优化。

② 初 始 化 子 程 序 中, 根 据 所 希 望 的 控 制 要 求 设 置 控 制 字 节 (SMB37、SMB47、SMB57、SMB137、SMB147、SMB157)。例如SMB37=16#C8,表示使用 HSC0,允许加计数,写入初始值,不装入预置值,运行中不更改方向,若为正交计数时,为4倍速正交计数,高电平有效复位。

③ 执行 HDEF指令时,设置 HSC编号 (0~5)和计数模式 MODE (0~10)。

④ 使用 MOVD指令将新的当前值写入32位当前寄存器 (SMD38、SMD48、SMD58、SMD138、SMD148、SMD158)。如果将0写入当前寄存器中,则是将当前计数值清0。

⑤ 使用 MOVD 指令将预置值写入 32 位预置值寄存器 (SMD42、SMD52、SMD62、SMD142、SMD152、SMD162)。例如执行 MOVD1000,SMD42,则预置值为1000。

⑥ 为了捕获当前值 CV 等于预置值 PV 中断事件,编写中断子程序,并指定 CV=PV中断事件 (中断事件号为16)调用该中断子程序。

⑦ 为了捕获计数方向的改变,将方向改变的中断事件 (中断事件号为17)与一个中断程序联系;为了捕获外部复位事件,将外部复位中断事件 (中断事件号为18)与一个中断程序联系。

⑧ 执行全局中断允许指令 ENI来允许 HSC中断。

⑨ 执行 HSC指令,使S7-200SMART 对高速计数器进行编程。

⑩ 退出子程序。

高速计数器指令的应用

例5-52 采用测频方法测量电动机的转速。

      分析:用测频法测量电动机的转速,其方法是在单位时间内采集编码器脉冲的个数。采集时,可以选用高速计数器对转速脉冲信号进行计数,同时用时基来完成定时。如果在单位时间内得到了脉冲个数,再经过一系列的计算就可以得到电动机的转速。

      采用测频方法测量电动机转速的程序如表5-105所示,其设计思路是:①选择高速计数器 HSC0,并确定工作模式为0,用 SM0.1对高速计数器进行初始化;②设置计数方向为增,允许更新计数方向,允许写入新初始值,允许写入新预置值,允许执行 HSC指令,因此控制字节SMB37为16#F8;③执行 HDEF指令,输入端 HSC为0,MODE 为0;④写入初始值,令SMD38为0;⑤写入时基定时设定值,令 SMB34为200;⑥执行中断连接ATCH 指令,中断事件号为10,执行中断允许指令 ENI,重新启动时基定时器,清除高速计数器的初始值;⑦执行 HSC指令,对高速计数器编程。

表5-105 采用测频方法测量电动机转速的程序





表5-106 加工器件清洗控制的程序





     例5-53高速计数器指令在加工器件清洗控制中的应用。设某传输带的旋转轴上连接了一个 A/B两相正交脉冲的增量旋转编码器。计数脉冲的个数代表旋转轴的位置,也就是加工器件的传送位移量。编码器旋转一圈产生10个 A/B相脉冲和一个复位脉冲,需要在第5个和第8个脉冲所代表的位置之间接通打开电磁阀将其进行清洗,其余位置时不对加工器件进行清洗。

     分析:电磁阀的关闭由 Q0.0进行控制,A 相接I0.0,B相与I0.1连接,复位脉冲接入I0.4,利用 HSC0的 CV=PV (当前值=预置值)的中断,就可实现此功能。

      加工器件清洗控制的程序如表5-106所示。在主程序中,用首次扫描时接通一个扫描周期的特殊内部存储器SM0.1去调用一个子程序,完成初始化操作。在初始化子程序中定义HSC0为模式10 (两路脉冲输入的双相正交计数,具有复位输入功能)。

高速脉冲指令

     高速脉冲输出可对负载进行高精度的控制,例如利用输出的脉冲对步进电机进行控制,只有晶体管输出类型的 CPU 能够支持高速脉冲输出功能。

(1)高速脉冲输出 (PLS)指令

       在S7-200SMARTPLC 中 CPUSR30/40/60、CPUST30/40/60有3个高速脉冲串输出 PTO (Pulse   Train    Output)和脉冲宽度调制输出PWM (Pulse  Width  Modulation)发生器,分别通过数字量输出点Q0.0、Q0.1或Q0.3输出高速脉冲串或脉冲宽度可调的波形。CPUSR20、CPUST20只有Q0.0和Q0.1输出高速脉冲串或脉冲宽度可调的波形。

     脉冲宽度与脉冲周期之比称为占空比,PTO 可以输出一串占空比为50%的脉冲,用户也可以控制脉冲的周期和脉冲数目。周期的单位可选用 μs或 ms,周期范围为50~65536μs或2~65536ms,脉冲计数范围为1~2147483647。

      PWM提供连续的、周期与脉冲宽度可以由用户控制的输出脉冲,周期的单位可选用μs或ms,周期变化范围为10~65536us或2~65536ms,脉冲宽度变化范围为0~65536us或0~65536ms。当指定的脉冲宽度值大于周期值时,占空比为100%,输出连续接通。当脉冲宽度为0时,占空比为0%,输出断开。

     高速脉冲输出 PLS指令检查为脉冲输出 (Q0.0、Q0.1和 Q0.3)设置的特殊存储器位SM,然后执行特殊存储器位定义的脉冲操作,指令如表5-107所示。

表5-107 高速脉冲输出 PLS指令



(2)与脉冲输出控制相关的特殊寄存器

     在S7-200SMARTPLC中,每个 PTO 或 PWM 输出都对应一些SM 特殊寄存器,如1个8位的状态字节、1个8位的控制字节、2个16位的时间寄存器、1个32位的脉冲计数器、1个8位的段数寄存器和1个16位的偏移地址寄存器。通过这些特殊的寄存器,可以控制高速脉冲输出的工作状态、输出形式及设置各种参数。

     ① 高速脉冲输出的状态字节 PTO 输出时,Q0.0、Q0.1或 Q0.3是否空闲、是否产生溢出、是否由用户命令而终止、是否增量计算错误而终止等,都通过状态字节来描述,如表5-108所示。Q0.0 的 SMB66.0~SMB66.3、Q0.1 的 SMB76.0~SMB76.3 和 Q0.3 的SMB566.0~SMB566.3特殊寄存器位没有使用。

表5-108 高速脉冲输出的状态字节



     ② 高速脉冲输出的控制字节 高速脉冲输出的控制字节通过设置特殊寄存器 SMB67、SMB77和SMB567的相关位可定义 PTO/PWM 的输出形式、时间基准、更新方式、PTO的单段或多段输出选择等,这些位的默认值为0,特殊寄存器的设置如表5-109所示。为方便使用,列出 PTO/PWM 的参考控制字节如表5-110所示。

表5-109 高速脉冲输出的控制字节



表5-110 PTO/PWM 的参考控制字节



     ③ 其它相关的特殊寄存器 在S7-200SMARTPLC的高速脉冲输出控制中还有其它相关的特殊寄存器用于存储周期值、脉冲宽度值、PTO 脉冲计数值、多段 PTO 进行中的段数等,设置如表5-111所示

表5-111 高速脉冲输出的其它相关特殊寄存器



(3)PTO 操作

      1)PTO 工作模式 PTO 允许脉冲串 “排队”,以保证脉冲输出的连续进行,形成管线,也支持在未发完脉冲串时,立刻终止脉冲输出。如果要控制输出脉冲的频率 (如步进电机的速度/频率控制),需将频率转换为16位无符号数周期值。为保证50%的占空比,周期值设定为偶数,否则会引起输出波形占空比的失真。根据管线的实现方式不同,PTO 分为单段管线和多段管线两种工作模式。

       ① 单段管线模式 PTO 单段管线模式中,每次只能存储一个脉冲串的控制参数。在当前脉冲串输出期间,需要为下一个脉冲更新SM 特殊寄存器。初始 PTO 段一旦启动了,就必须按照第2个波形的要求改变特殊寄存器,并再次执行 PLS指令。第2个脉冲串的属性在管线中一直保持到第1个脉冲器发送完成。在管线中一次只能存储一段脉冲器的属性,当第1个脉冲器发送完成后,接着输出第2个波形,此时管线可以用于下一个新的脉冲串,这样可实现多段脉冲串的连续输出。

       单段管线模式中的各段脉冲串可以采用不同的时间基准,但是当参数设置不恰当时,会造成各个脉冲串之间的连接不平稳且使编程复杂繁琐。

      ② 多段管线模式 PTO 多段管线模式中,在变量存储区 V 建立一个包络表,包络表存放每个脉冲器的参数。执行 PLS指令时,CPU 自动从 V 存储器区包络表中读出每个脉冲串的参数。多段管线 PTO 常用于步进电机的控制。

     包络是一个预先定义的以位置为横坐标、以速度为纵坐标的曲线,它是运动的图形描述。包络表由包络段数和各段构成,每段长度为8个字节,由16位周期增量值和32位脉冲个数值组成,其格式如表5-112所示。选择多段操作时,必须装入包络表在 V 存储器中的起始地址偏移量 (SMW168、SMW178或SMW578)。

表5-112 多段 PTO包络表的格式



      多段管线 PTO 具有编程简单,能够按照程序设定的周期增量值自动增减脉冲周期,周期增量值为正值就增加周期,周期增量值为负值就减少周期,周期增量值为0则周期不变。多段管线 PTO 中所有脉冲串的时间基准必须一致,当执行 PLS指令时,包络表中的所有参数均不能改变。

2)PTO 的使用 使用高速脉冲串输出时,需按以下步骤完成。

① 确定脉冲发生器及工作模式。

      根据控制要求选用高速脉冲串输出端,并选择 PTO,确定 PTO 是单段管线模式还是多段管线模式。若要求有多个脉冲串连续输出时,则选择多段管线模式。

② 按照控制要求设置控制字节,并写入SMB67、SMB77或SMB567中。

③ 写入周期表、周期增量和脉冲数。

     如果使用单段脉冲,周期表、周期增量和脉冲数需分别设置;若采用多段脉冲,则需建立多段脉冲包络表,并对各段参数分别设置。

④ 装入包络表的首地址。

⑤ 设置中断事件并全局开中断。

⑥ 执行 PLS指令,使S7-200SMARTCPU 对 PTO 确认设置。

(4)PWM 操作

      1)PWM 更新方法 脉冲宽度调制输出 PWM (PulseWidth Modulation)发生器用来输出占空比可调的高速脉冲,通过同步更新和异步更新可改变 PWM 输出波形特性。

      如果不需要改变 PWM 时间基准,就可以进行同步更新。执行同步更新时,波形的变化发生在周期边沿,形成平滑转换。

      PWM 的典型操作是当周期时间保持常数时变化脉冲宽度,所以不需改变时间基准,但是,如果需要改变 PWM 时间基准,就必须采用异步更新。异步更新会造成 PWM 功能被瞬时禁止,和 PWM 波形不同步而引起被控设备的振动,因此通常选用一个适合于所有周期时间的时间基准进行 PWM 同步更新。

      2)PWM 的使用 使用 PWM 时,需按以下步骤完成:

① 根据控制要求选用高速脉冲输出端,并选择 PWM 模式;

② 按照控制要求设置控制字节,并写入SMB67、SMB77或SMB567中;

③ 按控制要求将脉冲周期值写入SMW68、SMW78或SMW568,脉宽值写入SMW70、SMW80或SMW570中;

④ 执行 PLS指令,使S7-200SMARTCPU 对 PTO 确认设置。

高速脉冲指令的应用

表5-113 单段 PTO的使用程序







     例5-54单 段 PTO 的 使 用 程 序 如 表 5-113 所 示,主 程 序 一 次 性 调 用 初 始 化 子 程 序SBR_0;当I0.0接通时调用SBR_1,改变脉冲周期。SBR _0子程序用来设定脉冲个数、周期并发出起始脉冲器;SBR_1子程序用来改变脉冲串周期。

     例5-55单段 PTO 输出高速脉冲控制程序如表5-114所示。启动按钮与 PLC 的I0.0连接,停止按钮与 PLC的I0.1连接。按下启动按钮时,Q0.0输出 PTO 高速脉冲。脉冲频率为50Hz,个数为5000个。若输出脉冲过程中按下停止按钮,则脉冲输出立即停止。

表5-114 单段 PTO输出高速脉冲控制程序



    例5-56 用多段PTO 对步进电机的加速和减速进行控制,其要求如图5-12所示。从 A点到 B点为加速运行,从 B点到 C点为匀速运行,从 C点到 D点为减速运行。

      分析:从图5-12可看出,步进电机分段1、段2和段3这3段运行。起始和终止脉冲频率为1kHz,最大脉冲频率为5kHz (周期为200μs)。步进电机总共运行了1000个脉冲数,



图5-12 步进电机的加减速控制

      其中段1为加速运行,有100个脉冲数;段2为匀速运行,有800个脉冲数;段3为减速运行,有 100 个 脉 冲 数。 根 据 以 下 公 式, 写 出 如表5-115所示的包络表 (以 VB300开始作为包络表存储单元)。

表5-115 步进电机控制包络表



段周期增量=(段终止周期-段初始周期)/段脉冲数

     在程序中用传送指令可将表中的数据传送到 V 变量存储区中。

     编程前,首先选择高速脉冲发生器为 Q0.0,并确定PTO 为3段流水线。设置控制字节SMB77为16#A0表示允许PTO 功能、选择PTO 操作、选择多段操作以及选择时基为μs,不允许更新周期和脉冲数。建立3段的包络表,并将包络表的首地址300写入 SMW178。PTO 完成调用中断程序,使 Q0.1接通。PTO 完成的中断事件号为19。用中断调用指令ATCH 将中断事件19与中断程序INT _0连接,并开启中断,执行 PLS指令。其程序如表5-116所示。

表5-116 步进电机的加、减速控制程序










本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册哦

本版积分规则

QQ|小黑屋|手机版|Archiver|PLC技术网-PLC论坛 ( 粤ICP备17165530号 )|网站地图

GMT+8, 2024-9-17 03:54 , Processed in 0.047251 second(s), 27 queries .

快速回复 返回顶部 返回列表