西门子S7-200 PLC指令简介及实例分析 下载本文

内容发布更新时间 : 2024/5/17 20:01:37星期一 下面是文章的全部内容请认真阅读。

(1)每个高速计数器都有一个32位当前值和一个32位预置值,当前值和预设值均为带符号的整数值。要设置高速计数器的新当前值和新预置值,必须设置控制字节(表6-7),令其第五位和第六位为1,允许更新预置值和当前值,新当前值和新预置值写入特殊内部标志位存储区。然后执行HSC指令,将新数值传输到高速计数器。当前值和预置值占用的特殊内部标志位存储区如表6-10所示。

表6-10 HSC0-HSC5当前值和预置值占用的特殊内部标志位存储区

要装入的数值 新的当前值 新的预置值 HSC0 HSC1 HSC2 HSC3 HSC4 HSC5 SMD38 SMD48 SMD58 SMD138 SMD148 SMD158 SMD42 SMD52 SMD62 SMD142 SMD152 SMD162 除控制字节以及新预设值和当前值保持字节外,还可以使用数据类型HC(高速计数器当前值)加计数器号码(0、1、2、3、4或5)读取每台高速计数器的当前值。因此,读取操作可直接读取当前值,但只有用上述HSC指令才能执行写入操作。

(2)执行HDEF指令之前,必须将高速计数器控制字节的位设置成需要的状态,否则将采用默认设置。默认设置为:复位和起动输入高电平有效,正交计数速率选择4×模式。执行HDEF指令后,就不能再改变计数器的设置,除非CPU进入停止模式。

(3)执行HSC指令时,CPU检查控制字节和有关的当前值和预置值。

3. 高速计数器指令的初始化

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

(1)用首次扫描时接通一个扫描周期的特殊内部存储器SM0.1去调用一个子程序,完成初始化操作。因为采用了子程序,在随后的扫描中,不必再调用这个子程序,以减少扫描时间,使程序结构更好。

(2) 在初始化的子程序中,根据希望的控制设置控制字(SMB37、SMB47、SMB137、SMB147、SMB157),如设置SMB47=16#F8,则为:允许计数,写入新当前值,写入新预置值,更新计数方向为加计数,若为正交计数设为4×,复位和起动设置为高电平有效。

(3)执行HDEF指令,设置HSC的编号(0-5),设置工作模式(0-11)。如HSC的编号设置为1,工作模式输入设置为11,则为既有复位又有起动的正交计数工作模式。

(4)用新的当前值写入32位当前值寄存器(SMD38,SMD48,SMD58 ,SMD138, SMD148, SMD158)。如写入0,则清除当前值,用指令MOVD 0,SMD48实现。

(5)用新的预置值写入32位预置值寄存器(SMD42 ,SMD52, SMD62, SMD142 ,SMD152, SMD162)。如执行指令MOVD 1000,SMD52,则设置预置值为1000。若写入预置值为16#00,则高速计数器处于不工作状态。

(6)为了捕捉当前值等于预置值的事件,将条件CV=PV中断事件(事件13)与一个中断程序相联系。

(7)为了捕捉计数方向的改变,将方向改变的中断事件(事件14)与一个中断程序相联系。 (8)为了捕捉外部复位,将外部复位中断事件(事件15)与一个中断程序相联系。 (9)执行全局中断允许指令(ENI)允许HSC中断。 (10)执行HSC指令使S7-200对高速计数器进行编程。 (11)结束子程序。

【例6-4】高速计数器的应用举例。 (1)主程序

如图6-11所示,用首次扫描时接通一个扫描周期的特殊内部存储器SM0.1去调用一个子程序,完成初始化操作。

(2)初始化的子程序

如图6-12所示,定义HSC1的工作模式为模式11(两路脉冲输入的双相正交计数,具有复位和起动输入功能),设置SMB47=16#F8(允许计数,更新新当前值,更新新预置值,更新计数方向为加计数,若为正交计数设为4×,复位和起动设置为高电平有效)。HSC1的当前值SMD48清零,预置值SMD52=50,当前值 = 预设值,产生中断(中断事件13),中断事件13连接中断程序INT-0。

(3)中断程序INT-0,如图6-13所示。

LD SM0.0

MOVD +0 SMD48 // HSC1的当前值清0

MOVB 16#C0 SMB47 //只写入一个新当前值,

预置值不变,计数方向不变, HSC1允许计数

HSC 1 //执行HSC1指令

6.3.5 高速脉冲输出

1. 脉冲输出(PLS)指令

脉冲输出(PLS)指令功能为:使能有效时,检查用于脉冲输出(Q0.0或Q0.1)的特殊存储器位(SM),然后执行特殊存储器位定义的脉冲操作。指令格式如表6-11所示。

表6-11脉冲输出(PLS)指令格式

LAD STL 操作数及数据类型 Q:常量(0或1) 数据类型 字 PLS Q 2. 用于脉冲输出(Q0.0或Q0.1)的特殊存储器

(1)控制字节和参数的特殊存储器

每个PTO/PWM发生器都有:一个控制字节(8位)、一个脉冲计数值(无符号的32位数值)和一个周期时间和脉宽值(无符号的16位数值)。这些值都放在特定的特殊存储区(SM),如表6-12所示。执行PLS指令时,S7-200读这些特殊存储器位(SM),然后执行特殊存储器位定义的脉冲操作,即对相应的PTO/PWM发生器进行编程。

表6-12 脉冲输出(Q0.0或Q0.1)的特殊存储器 Q0.0和Q0.1对PTO/PWM输出的控制字节 Q0.0 SM67.0 SM67.1 SM67.2 SM67.3 SM67.4 SM67.5 SM67.6 SM67.7 Q0.0 SMW68 Q0.1 SM77.0 SM77.1 SM77.2 SM77.3 SM77.4 SM77.5 SM77.6 SM77.7 Q0.1 SMW78 说明 PTO/PWM刷新周期值 PWM刷新脉冲宽度值 PTO刷新脉冲计数值 0 :不刷新; 1 :刷新 0 :不刷新; 1:刷新 0 :不刷新; 1:刷新 PTO/PWM时基选择 0 :1 μs; 1:1ms PWM更新方法 0 :异步更新;1:同步更新 PTO操作 0 :单段操作;1:多段操作 PTO/PWM模式选择 0 :选择PTO 1 : 选择PWM PTO/PWM允许 0:禁止; 1 :允许 Q0.0和Q0.1对PTO/PWM输出的周期值 说明 PTO/PWM周期时间值(范围:2至 65 535) Q0.0和Q0.1对PTO/PWM输出的脉宽值 Q0.0 SMW70 Q0.1 SMW80 说明 PWM脉冲宽度值(范围:0至65 535) Q0.0和Q0.1对PTO脉冲输出的计数值 Q0.0 SMD72 Q0.1 SMD82 说明 PTO脉冲计数值(范围:1至4 294 967 295) Q0.0和Q0.1对PTO脉冲输出的多段操作 Q0.0 SMB166 SMW168 Q0.0 SM66.4 SM66.5 SM66.6 SM66.7 Q0.1 SMB176 SMW178 Q0.1 SM76.4 SM76.5 SM76.6 SM76.7 说明 段号(仅用于多段PTO操作),多段流水线PTO运行中的段的编号 包络表起始位置,用距离V0的字节偏移量表示(仅用于多段PTO操作) Q0.0和Q0.1的状态位 说明 PTO包络由于增量计算错误异常终止 PTO包络由于用户命令异常终止 0 :无错; 1 : 异常终止 1 :异常终止 0 : 无错; PTO流水线溢出 0 :无溢出; 1 : 溢出 PTO空闲 0 :运行中; 1 : PTO空闲 【例6-5】设置控制字节。用Q0.0作为高速脉冲输出,对应的控制字节为SMB67,如果希望定义的

输出脉冲操作为PTO操作,允许脉冲输出,多段PTO脉冲串输出,时基为ms,设定周期值和脉冲数,则应向SMB67写入2#10101101,即16#AD。

通过修改脉冲输出(Q0.0或Q0.1)的特殊存储器SM区(包括控制字节),既更改PTO或PWM的输出波形,然后再执行PLS指令。

注意:所有控制位、周期、脉冲宽度和脉冲计数值的默认值均为零。向控制字节(SM67.7或SM77.7)的PTO/PWM允许位写入零,然后执行PLS指令,将禁止PTO或PWM波形的生成。

(2)状态字节的特殊存储器

除了控制信息外,还有用于PTO功能的状态位,如表6-12所示。程序运行时,根据运行状态使某些位自动置位。可以通过程序来读取相关位的状态,用此状态作为判断条件,实现相应的操作。

3. 对输出的影响

PTO/PWM生成器和输出映像寄存器共用Q0.0和Q0.1。在Q0.0或Q0.1使用PTO或PWM功能时,PTO/PWM发生器控制输出,并禁止输出点的正常使用,输出波形不受输出映像寄存器状态、输出强制、执行立即输出指令的影响;在Q0.0或Q0.1位置没有使用PTO或PWM功能时,输出映像寄存器控制输出,所以输出映像寄存器决定输出波形的初始和结束状态,即决定脉冲输出波形从高电平或低电平开始和结束,使输出波形有短暂的不连续,为了减小这种不连续有害影响,应注意:

(1)可在起用PTO或PWM操作之前,将用于Q0.0和Q0.1的输出映像寄存器设为0。 (2)PTO/PWM输出必须至少有10%的额定负载,才能完成从关闭至打开以及从打开至关闭的顺利转换,即提供陡直的上升沿和下降沿。

4. PTO的使用

PTO是可以指定脉冲数和周期的占空比为50%的高速脉冲串的输出。状态字节中的最高位(空闲位)用来指示脉冲串输出是否完成。可在脉冲串完成时起动中断程序,若使用多段操作,则在包络表完成时起动中断程序。

(1)周期和脉冲数

周期范围从50微秒至65,535微秒或从2毫秒至65,535毫秒,为16位无符号数,时基有μs和ms两

种,通过控制字节的第三位选择。注意:

? ? 如果周期< 2个时间单位,则周期的默认值为2个时间单位。 ? ? 周期设定奇数微秒或毫秒(例如75毫秒),会引起波形失真。

脉冲计数范围从1至4,294,967,295,为32位无符号数,如设定脉冲计数为0,则系统默认脉冲计数值为1。

(2)PTO的种类及特点

PTO功能可输出多个脉冲串,现用脉冲串输出完成时,新的脉冲串输出立即开始。这样就保证了输出脉冲串的连续性。PTO功能允许多个脉冲串排队,从而形成流水线。流水线分为两种:单段流水线和多段流水线。

单段流水线是指:流水线中每次只能存储一个脉冲串的控制参数,初始PTO段一旦起动,必须按照对第二个波形的要求立即刷新SM,并再次执行PLS指令,第一个脉冲串完成,第二个波形输出立即开始,重复此这一步骤可以实现多个脉冲串的输出。

单段流水线中的各段脉冲串可以采用不同的时间基准,但有可能造脉冲串之间的不平稳过渡。输出多个高速脉冲时,编程复杂。

多段流水线是指在变量存储区V建立一个包络表。包络表存放每个脉冲串的参数,执行PLS指令时,S7 –200 PLC自动按包络表中的顺序及参数进行脉冲串输出。包络表中每段脉冲串的参数占用8个字节,由一个16位周期值(2字节)、一个16位周期增量值Δ(2字节)和一个32位脉冲计数值(4字节)组成。包络表的格式如表6-13所示。

表6-13 包络表的格式

从包络表起始地址的字节偏移 段 说明 段数(1~255);数值0产生非致命错误,无PTO输出 初始周期(2至65 535个时基单位) 段1 每个脉冲的周期增量Δ(符号整数:-32 768至32 767个时基单位) 脉冲数(1至4 294 967 295) 初始周期(2至65535个时基单位) 段2 每个脉冲的周期增量Δ(符号整数:-32 768至32 767个时基单位) 脉冲数(1至4 294 967 295) 初始周期(2至65 535个时基单位) 段3 每个脉冲的周期增量值Δ(符号整数:-32 768至32 767个时基单位) 脉冲数(1至4 294 967 295) VBn VBn+1 VBn+3 VBn+5 VBn+9 VBn+11 VBn+13 VBn+17 VBn+19 VBn+21 注意:周期增量值Δ为整数微秒或毫秒

多段流水线的特点是编程简单,能够通过指定脉冲的数量自动增加或减少周期,周期增量值Δ为正值

会增加周期,周期增量值Δ为负值会减少周期,若Δ为零,则周期不变。在包络表中的所有的脉冲串必须采用同一时基,在多段流水线执行时,包络表的各段参数不能改变。多段流水线常用于步进电机的控制。

【例6-6】根据控制要求列出PTO包络表。

步进电机的控制要求如图6-14所示。从A点到B点为加速过程,从B到C为恒速运行,从C到D为减速过程。