Download presentation
Presentation is loading. Please wait.
Published byElisabeth van de Veen Modified 5年之前
1
6.1 立即类指令 6.2 中断指令 6.3 高速计数器与高速脉冲输出 6.4 PID控制 6.5 时钟指令
第6章 特殊功能指令 6.1 立即类指令 6.2 中断指令 6.3 高速计数器与高速脉冲输出 6.4 PID控制 6.5 时钟指令
2
6.1 立即类指令 立即读 \立即输出 立即读指令用于输入I接点,立即读指令读取实际输入点的状态时,并不更新该输入点对应的输入映像寄存器的值。如:当实际输入点(位)是1时,其对应的立即触点立即接通;当实际输入点(位)是0时,其对应的立即触点立即断开。 立即输出指令用于输出Q线圈,执行指令时,立即将新值写入实际输出点和对应的输出映像寄存器。 立即类指令与非立即类指令不同,非立即指令仅将新值读或写入输入/输出映像寄存器。
3
表6-1 立即类指令的格式及说明
4
6.2 中断指令
5
6.2.1 中断源 1. 中断源的类型 中断源即发出中断请求的事件,又叫中断事件。为了便于识别,系统给每个中断源都分配一个编号,称为中断事件号。S7-200系列可编程控制器最多有34个中断源,分为三大类:通信中断、输入/输出中断和时基中断。
6
(1)通信中断 在自由口通信模式下,用户可通过编程来设置波特率、奇偶校验和通信协议等参数。用户通过编程控制通讯端口的事件为通信中断。
7
(2)I/O中断 I/O中断包括外部输入上升/下降沿中断、高速计数器中断和高速脉冲输出中断。S7-200用输入(I0.0、I0.1、I0.2或I0.3)上升/下降沿产生中断。这些输入点用于捕获在发生时必须立即处理的事件。高速计数器中断指对高速计数器运行时产生的事件实时响应,包括当前值等于预设值时产生的中断,计数方向的改变时产生的中断或计数器外部复位产生的中断。脉冲输出中断是指预定数目脉冲输出完成而产生的中断。
8
(3)时基中断 定时中断用于支持一个周期性的活动。周期时间从1毫秒至255毫秒,时基是1毫秒。使用定时中断0,必须在SMB34中写入周期时间;使用定时中断1,必须在SMB35中写入周期时间。 定时中断可以用来对模拟量输入进行采样或定期执行PID回路。定时器T32/T96中断指允许对定时间间隔产生中断。这类中断只能用时基为1ms的定时器T32/T96构成。当中断被启用后,当前值等于预置值时,在S7-200执行的正常1毫秒定时器更新的过程中,执行连接的中断程序。
9
2. 中断优先级和排对等候 优先级是指多个中断事件同时发出中断请求时,CPU对中断事件响应的优先次序。S7-200规定的中断优先由高到低依次是:通信中断、I/O中断和定时中断。每类中断中不同的中断事件又有不同的优先权,如表6-2所示。 一个程序中总共可有128个中断。S7-200在中断各自的优先级组内按照先来先服务的原则为中断提供服务。在任何时刻,只能执行一个中断程序。一旦一个中断程序开始执行,则一直执行至完成。不能被另一个中断程序打断,即使是更高优先级的中断程序。中断程序执行中,新的中断请求按优先级排队等候。中断队列能保存的中断个数有限,若超出,则会产生溢出。中断队列的最多中断个数和溢出标志位如表6-3所示
10
6.2.2 中断指令 中断指令有4条,包括开、关中断指令,中断连接、分离指令。指令格式如下表所示。 LAD STL ENI DISI
ATCH INT,EVNT DTCH EVNT 操作数及数据类型 无 INT:常量 EVNT:常量,CPU 224: 0-23; 27-33 INT/EVNT数据类型:字节 数据类型:字节
11
1. 开、关中断指令 开中断(ENI)指令全局性允许所有中断事件。关中断(DISI)指令全局性禁止所有中断事件,中断事件的每次出现均被排队等候,直至使用全局开中断指令重新启用中断。 PLC转换到RUN(运行)模式时,中断开始时被禁用,可以通过执行开中断指令,允许所有中断事件。执行关中断指令会禁止处理中断,但是现用中断事件将继续排队等候。
12
2. 中断连接、分离指令 中断连接指令(ATCH)指令将中断事件(EVNT)与中断程序号码(INT)相连接,并启用中断事件。
分离中断(DTCH)指令取消某中断事件(EVNT)与所有中断程序之间的连接,并禁用该中断事件。 注意:一个中断事件只能连接一个中断程序,但多个中断事件可以调用一个中断程序。
13
6.2.3 中断程序 1. 中断程序的概念 中断程序是为处理中断事件而事先编好的程序。中断程序不是由程序调用,而是在中断事件发生时由操作系统调用。在中断程序中不能改写其他程序使用的存储器,最好使用局部变量。中断程序应实现特定的任务,应“越短越好”,中断程序由中断程序号开始,以无条件返回指令(CRETI)结束。在中断程序中禁止使用DISI、ENI、HDEF、LSCR和END指令
14
2. 建立中断程序的方法 方法一:从“编辑”菜单→选择插入(Insert)→ 中断(Interrupt)。
程序编辑器从先前的POU显示更改为新中断程序,在程序编辑器的底部会出现一个新标记,代表新的中断程序。
15
6.2.4 程序举例 【例6-1】编写由I0.1的上升沿产生的中断事件的初始化程序。
分析:查表6-2可知,I0.1上升沿产生的中断事件号为2。所以在主程序中用ATCH指令将事件号2和中断程序0连接起来,并全局开中断。程序如下图所示
16
主程序 LD SM0.1 //首次扫描时, ATCH INT_0 2 //将INT_0 和EVNT2连接 ENI //并全局启用中断
LD SM //如果检测到I/O错误, DTCH //禁用用于I0.1的上升沿中断 (本网络为选项) LD M // 当M5.0=1时 DISI //禁用所有的中断
17
【例6-2】编程完成采样工作,要求每10ms采样一次。
分析:完成每10ms采样一次,需用定时中断,查表6-2可知,定时中断0的中断事件号为10。因此在主程序中将采样周期(10ms)即定时中断的时间间隔写入定时中断0的特殊存储器SMB34,并将中断事件10和INT-0连接,全局开中断。在中断程序0中,将模拟量输入信号读入,程序如下图所示。
18
主程序 中断程序 LD I0.0 MOVB 10, SMB34 // 将采样周期 设为100毫秒
ATCH INT_0, 10 // 将事件10连接 INT_0 ENI // 全局开中断 中断程序 LD SM0.0 MOVW AIW0, VW100 //读入模拟量AIW0
19
【例6-3】利用定时中断功能编制一个程序,实现如下功能:当I0. 0由OFF→ON,Q0. 0亮1s,灭1s,如此循环反复直至I0
【例6-3】利用定时中断功能编制一个程序,实现如下功能:当I0.0由OFF→ON,Q0.0亮1s,灭1s,如此循环反复直至I0.0由ON→OFF,Q0.0变为OFF。
20
主程序 INT-0 LD I0.0 EU ATCH INT_0, 21 ENI LDN M0.0 A I0.0 TON T32, +1000
LD T32 = M0.0 ED DTCH 21 DISI INT-0 LDN Q0.0 = Q0.0
21
6.2.5 中断程序编程实训 1. 实训目的 (1)熟悉中断指令的使用方法。 (2)掌握定时中断设计程序的方法。
22
2. 实训内容 (1)利用T32定时中断编写程序,要求产生占空比为50%,周期为4s的的方波信号。
(2)用定时中断实现喷泉的模拟控制,控制要求。
23
3. 参考程序 产生占空比为50%,周期为4s的的方波信号,主程序和中断程序如下: 主程序 INT-0
24
4. 输入并调试程序 用状态图监视程序的运行,并记录观察到的现象。
25
6.3 高速计数器与高速脉冲输出
26
6.3 高速计数器与高速脉冲输出 前面讲的计数器指令的计数速度受扫描周期的影响,对比CPU扫描频率高的脉冲输入,就不能满足控制要求了。为此,SIMATIC S7-200系列PLC设计了高速计数功能(HSC),其计数自动进行不受扫描周期的影响,最高计数频率取决于CPU的类型,CPU22x系列最高计数频率为30KHz,用于捕捉比CPU扫描速更快的事件,并产生中断,执行中断程序,完成预定的操作。高速计数器最多可设置12种不同的操作模式。用高速计数器可实现高速运动的精确控制。SIMATIC S7-200 CPU22x系列PLC还设有高速脉冲输出,输出频率可达20KHz,用于PTO(输出一个频率可调,占空比为50%的脉冲)和PWM(输出占空比可调的脉冲),高速脉冲输出的功能可用于对电动机进行速度控制及位置控制和控制变频器使电机调速
27
6.3.1 占用输入/输出端子
28
6.3.1 占用输入/输出端子 1. 高速计数器占用输入端子 CPU224有六个高速计数器,其占用的输入端子如表6-5所示。 高速计数器
使用的输入端子 HSC0 I0.0, I0.1, I0.2 HSC1 I0.6, I0.7, I1.0, I1.1 HSC2 I1.2, I1.3, I1.4, I1.5 HSC3 I0.1 HSC4 I0.3, I0.4, I0.5 HSC5 I0.4
29
1. 高速计数器占用输入端子 各高速计数器不同的输入端有专用的功能,如:时钟脉冲端、方向控制端、复位端、起动端。
注意:同一个输入端不能用于两种不同的功能。但是高速计数器当前模式未使用的输入端均可用于其他用途,如作为中断输入端或作为数字量输入端。例如,如果在模式2中使用高速计数器HSC0,模式2使用I0.0和I0.2,则I0.1可用于边缘中断或用于HSC3。
30
2. 高速脉冲输出占用的输出端子 S7-200有PTO、PWM两台高速脉冲发生器。 PTO脉冲串功能可输出指定个数、指定周期的方波脉冲(占空比50%);PWM功能可输出脉宽变化的脉冲信号,用户可以指定脉冲的周期和脉冲的宽度。若一台发生器指定给数字输出点Q0.0,另一台发生器则指定给数字输出点Q0.1。当PTO、PWM发生器控制输出时,将禁止输出点Q0.0、Q0.1的正常使用;当不使用PTO、PWM高速脉冲发生器时,输出点Q0.0、Q0.1恢复正常的使用,即由输出映像寄存器决定其输出状态。
31
6.3.2 高速计数器的工作模式
32
1. 高速计数器的计数方式 (1)单路脉冲输入的内部方向控制加/减计数。即只有一个脉冲输入端,通过高速计数器的控制字节的第3位来控制作加计数或者减计数。该位=1,加计数;该位=0,减计数。如图6-6所示内部方向控制的单路加/减计数 。 (2)单路脉冲输入的外部方向控制加/减计数。即有一个脉冲输入端,有一个方向控制端,方向输入信号等于1时,加计数;方向输入信号等于0时,减计数。如图6-7所示外部方向控制的单路加/减计数.
33
(1)内部方向控制的单路加/减计数
34
(2)外部方向控制的单路加/减计数
35
(3)两路脉冲输入的单相加/减计数。 即有两个脉冲输入端,一个是加计数脉冲,一个是减计数脉冲,计数值为两个输入端脉冲的代数和。
36
(4)两路脉冲输入的双相正交计数。 即有两个脉冲输入端,输入的两路脉冲A 相、B相,相位互差90°(正交),A 相超前B相90°时,加计数;A 相滞后B相90°时,减计数。在这种计数方式下,可选择1x 模式(单倍频,一个时钟脉冲计一个数)和4x 模式(四倍频,一个时钟脉冲计四个数)。
39
2. 高速计数器的工作模式 高速计数器有12种工作模式,模式0~模式2采用单路脉冲输入的内部方向控制加/减计数;模式3~模式5采用单路脉冲输入的外部方向控制加/减计数;模式6~模式8采用两路脉冲输入的加/减计数;模式9~模式11采用两路脉冲输入的双相正交计数。 S7-200 CPU224有 HSC0-HSC5六个高速计数器,每个高速计数器有多种不同的工作模式。HSC0选用某个高速计数器在某种工作方式下工作后,高速计数器所使用的输入不是任意选择的,必须按系统指定的输入点输入信号。如HSC1
40
高速计数器的工作模式和输入端子的关系及说明
6.3.3 高速计数器的控制字和状态字
41
6.3.3 高速计数器的控制字和状态字
42
1. 控制字节 定义了计数器和工作模式之后,还要设置高速计数器的有关控制字节。每个高速计数器均有一个控制字节,它决定了计数器的计数允许或禁用,方向控制(仅限模式0、1和2)或对所有其他模式的初始化计数方向,装入当前值和预置值。控制字节每个控制位的说明如下表所示。
43
HSC的控制字节 HSC0 HSC1 HSC2 HSC3 HSC4 HSC5 说明 SM37.0 SM47.0 SM57.0 SM147.0
复位有效电平控制: 0=复位信号高电平有效;1=低电平有效 SM47.1 SM57.1 起动有效电平控制: 0=起动信号高电平有效;1=低电平有效 SM37.2. SM47.2 SM57.2 SM147.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 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
44
2. 状态字节 每个高速计数器都有一个状态字节,状态位表示当前计数方向以及当前值是否大于或等于预置值。每个高速计数器状态字节的状态位如下表所示: HSC0 HSC1 HSC2 HSC3 HSC4 HSC5 说明 SM36.5 SM46.5 SM56.5 SM136.5 SM146.5 SM156.5 当前计数方向状态位: 0 = 减计数;1 = 加计数 SM36.6 SM46.6 SM56.6 SM136.6 SM146.6 SM156.6 当前值等于预设值状态位: 0 = 不相等;1 = 等于 SM36.7 SM46.7 SM56.7 SM136.7 SM146.7 SM156.7 当前值大于预设值状态位: 0 = 小于或等于;1 = 大于
45
6.3.4 高速计数器指令及举例
46
1. 高速计数器指令 高速计数器指令有两条:高速计数器定义指令HDEF如下表所示: LAD STL HDEF HSC,MODE HSC N
功能说明 高速计数器定义指令HDEF 高速计数器指令HSC 操作数 HSC:高速计数器的编号,为常量(0~5)数据类型:字节 MODE工作模式,为常量(0~11) 数据类型:字节 N:高速计数器的编号,为常量(0~5)数据类型:字 ENO=0的出错条件 SM4.3(运行时间),0003(输入点冲突), 0004(中断中的非法指令),000A(HSC重复定义) SM4.3 (运行时间),0001(HSC在HDEF之前),0005(HSC/PLS同时操作)
47
1. 高速计数器指令 (1)高速计数器定义指令HDEF。指令指定高速计数器(HSCx)的工作模式。工作模式的选择即选择了高速计数器的输入脉冲、计数方向、复位和起动功能。每个高速计数器只能用一条“高速计数器定义”指令。 (2)高速计数器指令HSC。根据高速计数器控制位的状态和按照HDEF指令指定的工作模式,控制高速计数器。参数N指定高速计数器的号码。
48
2. 高速计数器指令的使用 (1)每个高速计数器都有一个32位当前值和一个32位预置值,当前值和预设值均为带符号的整数值。要设置高速计数器的新当前值和新预置值,必须设置控制字节,令其第五位和第六位为1,允许更新预置值和当前值,新当前值和新预置值写入特殊内部标志位存储区。然后执行HSC指令,将新数值传输到高速计数器。当前值和预置值占用的特殊内部标志位存储区如表6-10所示。除控制字节以及新预设值和当前值保持字节外,还可以使用数据类型HC 要装入的数值 HSC0 HSC1 HSC2 HSC3 HSC4 HSC5 新的当前值 SMD38 SMD48 SMD58 SMD138 SMD148 SMD158 新的预置值 SMD42 SMD52 SMD62 SMD142 SMD152 SMD162
49
2. 高速计数器指令的使用 (2)执行HDEF指令之前,必须将高速计数器控制字节的位设置成需要的状态,否则将采用默认设置。默认设置为:复位和起动输入高电平有效,正交计数速率选择4×模式。执行HDEF指令后,就不能再改变计数器的设置,除非CPU进入停止模式。 (3)执行HSC指令时,CPU检查控制字节和有关的当前值和预置值。
50
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实现。
51
高速计数器指令的初始化的步骤: (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)结束子程序。
52
6.3.5 高速脉冲输出
53
1、脉冲输出(PLS)指令 脉冲输出(PLS)指令功能:使能有效时,检查用于脉冲输出(Q0.0或Q0.1)的特殊存储器位(SM),然后执行特殊存储器位定义的脉冲操作。指令格式如下: PLS Q
54
2. 用于脉冲输出(Q0.0或Q0.1)的特殊存储器 (1)控制字节和参数的特殊存储器
每个PTO/PWM发生器都有一个控制字节(8位)、一个脉冲计数值(无符号的32位数值)和一个周期时间和脉宽值(无符号的16位数值)。这些值都放在特定的特殊存储区(SM),如表6-12所示。执行PLS指令时,S7-200读这些特殊存储器位(SM),然后执行特殊存储器位定义的脉冲操作,即对相应的PTO/PWM发生器进行编程。
55
(2)状态字节的特殊存储器 除了控制信息外,还有用于PTO功能的状态位,如下表所示。程序运行时,根据运行状态使某些位自动置位。可以通过程序来读取相关位的状态,用此状态作为判断条件,实现相应的操作。
56
脉冲输出(Q0.0或Q0.1)的特殊存储器 Q0.0和Q0.1对PTO/PWM输出的控制字节 Q0.0 Q0.1 说明 SM67.0
PTO/PWM时基选择 :1 µs; 1:1ms SM67.4 SM77.4 PWM更新方法 :异步更新;1:同步更新 SM67.5 SM77.5 PTO操作 :单段操作;1:多段操作 SM67.6 SM77.6 PTO/PWM模式选择 :选择PTO 1 : 选择PWM SM67.7 SM77.7 PTO/PWM允许 :禁止; :允许 Q0.0和Q0.1对PTO/PWM输出的周期值 SMW68 SMW78 PTO/PWM周期时间值(范围:2至 ) Q0.0和Q0.1对PTO/PWM输出的脉宽值 SMW70 SMW80 PWM脉冲宽度值(范围:0至65 535)
57
脉冲输出(Q0.0或Q0.1)的特殊存储器 Q0.0和Q0.1对PTO脉冲输出的计数值 Q0.0 Q0.1 说明 SMD72 SMD82
SMB166 SMB176 段号(仅用于多段PTO操作),多段流水线PTO运行中的段的编号 SMW168 SMW178 包络表起始位置,用距离V0的字节偏移量表示(仅用于多段PTO操作) Q0.0和Q0.1的状态位 SM66.4 SM76.4 PTO包络由于增量计算错误异常终止 0 :无错;1 : 异常终止 SM66.5 SM76.5 PTO包络由于用户命令异常终止 0 : 无错; 1 :异常终止 SM66.6 SM76.6 PTO流水线溢出 :无溢出; 1 : 溢出 SM66.7 SM76.7 PTO空闲 :运行中; : PTO空闲
58
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%的额定负载,才能完成从关闭至打开以及从打开至关闭的顺利转换,即提供陡直的上升沿和下降沿
59
4. PTO的使用 PTO是可以指定脉冲数和周期的占空比为50%的高速脉冲串的输出。状态字节中的最高位(空闲位)用来指示脉冲串输出是否完成。可在脉冲串完成时起动中断程序,若使用多段操作,则在包络表完成时起动中断程序。
60
(1)周期和脉冲数 周期范围从50微秒至65,535微秒或从2毫秒至65,535毫秒,为16位无符号数,时基有µs和ms两种,通过控制字节的第三位选择。注意: 如果周期< 2个时间单位,则周期的默认值为2个时间单位。 周期设定奇数微秒或毫秒(例如75毫秒),会引起波形失真。 脉冲计数范围从1至4,294,967,295,为32位无符号数,如设定脉冲计数为0,则系统默认脉冲计数值为1。
61
(2)PTO的种类及特点 PTO功能可输出多个脉冲串,现用脉冲串输出完成时,新的脉冲串输出立即开始。这样就保证了输出脉冲串的连续性。PTO功能允许多个脉冲串排队,从而形成流水线。流水线分为两种:单段流水线和多段流水线。
62
单段流水线 单段流水线是指:流水线中每次只能存储一个脉冲串的控制参数,初始PTO段一旦起动,必须按照对第二个波形的要求立即刷新SM,并再次执行PLS指令,第一个脉冲串完成,第二个波形输出立即开始,重复此这一步骤可以实现多个脉冲串的输出。 单段流水线中的各段脉冲串可以采用不同的时间基准,但有可能造脉冲串之间的不平稳过渡。输出多个高速脉冲时,编程复杂。
63
多段流水线 多段流水线是指在变量存储区V建立一个包络表。包络表存放每个脉冲串的参数,执行PLS指令时,S7 –200 PLC自动按包络表中的顺序及参数进行输出脉冲串。包络表中每段脉冲串的参数占用8个字节,由一个16位周期值(2字节)、一个16位周期增量值Δ(2字节)和一个32位脉冲计数值(4字节)组成。包络表的格式如表6-13所示。 多段流水线的特点是编程简单,能够通过指定脉冲的数量自动增加或减少周期,周期增量值Δ为正值会增加周期,周期增量值Δ为负值会减少周期,若Δ为零,则周期不变。在包络表中的所有的脉冲串必须采用同一时基,在多段流水线执行时,包络表的各段参数不能改变。多段流水线常用于步进电机的控制。
64
(3)多段流水线PTO初始化和操作步骤 用一个子程序实现PTO初始化,首次扫描(SM0.1)时从主程序调用初始化子程序,执行初始化操作。以后的扫描不再调用该子程序,这样减少扫描时间,程序结构更好。
65
多段流水线PTO的操作步骤 1、首次扫描(SM0.1)时将输出Q0.0或Q0.1复位(置0),并调用完成初始化操作的子程序。
2、在初始化子程序中,根据控制要求设置控制字并写入SMB67或SMB77特殊存储器。如写入16#A0(选择微秒递增)或16#A8(选择毫秒递增),两个数值表示允许PTO功能、选择PTO操作、选择多段操作、以及选择时基(微秒或毫秒)。 3、将包络表的首地址(16位)写入在SMW168(或SMW178)。 4、在变量存储器V中,写入包络表的各参数值。一定要在包络表的起始字节中写入段数。在变量存储器V中建立包络表的过程也可以在一个子程序中完成,在此只须调用设置包络表的子程序。 5、设置中断事件并全局开中断。如果想在PTO完成后,立即执行相关功能,则须设置中断,将脉冲串完成事件(中断事件号19)连接一中断程序。 6、执行PLS指令,使S7-200为PTO/PWM发生器编程,高速脉冲串由Q0.0或Q0.1输出。 7、退出子程序。
66
5. PWM的使用 PWM是脉宽可调的高速脉冲,通过控制脉宽和脉冲的周期,实现控制任务。
67
(1)周期和脉宽 周期和脉宽时基为:微秒或毫秒,均为16位无符号数。
周期的范围从50微秒至65,535微秒,或从2毫秒至65,535毫秒。若周期 < 2个时基,则系统默认为两个时基。 脉宽范围从0微秒至65,535微秒或从0毫秒至65,535毫秒。若脉宽>= 周期,占空比=100%,输出连续接通。若脉宽= 0 ,占空比为0%,则输出断开。
68
(2)更新方式 有两种改变PWM波形的方法:同步更新和异步更新。
同步更新:不需改变时基时,可以用同步更新。执行同步更新时,波形的变化发生在周期的边缘,形成平滑转换。 异步更新:需要改变PWM的时基时,则应使用异步更新。异步更新使高速脉冲输出功能被瞬时禁用,与PWM波形不同步。这样可能造成控制设备震动。 常见的PWM操作是脉冲宽度不同,但周期保持不变,即不要求时基改变。因此先选择适合于所有周期的时基,尽量使用同步更新。
69
(3)PWM初始化和操作步骤 用首次扫描位(SM0.1)使输出位复位为0,并调用初始化子程序。这样可减少扫描时间,程序结构更合理。
在初始化子程序中设置控制字节。如将16#D3(时基微秒)或16#DB(时基毫秒)写入SMB67 或SMB77,控制功能为:允许PTO/PWM功能、选择PWM操作、设置更新脉冲宽度和周期数值、以及选择时基(微秒或毫秒)。 在SMW68或SMW78中写入一个字长的周期值。 在SMW70或SMW80中写入一个字长的脉宽值。 执行PLS指令,使S7-200为PWM发生器编程,并由Q0.0或Q0.1输出。 6可为下一输出脉冲预设控制字。在SMB67或SMB77中写入16#D2(微秒)或16#DA(毫秒)控制字节中将禁止改变周期值,允许改变脉宽。以后只要装入一个新的脉宽值,不用改变控制字节,直接执行PLS指令就可改变脉宽值。 退出子程序。
70
6.3.6 高速输入、高速输出指令编程实训
71
1. 实训目的 (1)掌握高速处理类指令的组成、相关特殊存储器的设置、指令的输入及指令执行后的结果,进一步熟悉指令的作用和使用方法。
(2)通过实训的编程、调试练习观察程序执行的过程,分析指令的工作原理,熟悉指令的具体应用,掌握编程技巧和能力。
72
2. 实训内容 用脉冲输出指令PLS和高速输出端子Q0.0给高速计数器HSC提供高速计数脉冲信号,因为要使用高速脉冲输出功能,必须选用直流电源型的CPU模块。输入侧的公共端与输出侧的公共端相连,高速输出端Q0.0接到高速输入端I0.0,24V电源正端与输出侧的1L+端子相连。有脉冲输出时Q0.0与I0.0对应的LED亮。在子程序0中,把中断程序0与中断事件12(CV=PV时产生中断)连接起来。
73
外部接线图如下图 S7-200CPU I Q0.0 M L+ 1L 1M M DC24V
74
3. 读懂程序并输入程序 给程序加注释,给网络加注释,在注释中说明程序的功能和指令的功能。
75
4. 编译运行和调试程序 观察Q0.1和Q0.2对应的LED的状态,并记录。用状态表监视HSC0的当前值变化情况。
根据观察结果画出HSC0,Q0.0,Q0.1之间对应的波形图。
76
6.4 PID控制
77
6.4.1 PID指令 1. PID算法 在工业生产过程控制中,模拟信号PID(由比例、积分、微分构成的闭合回路)调节是常见的一种控制方法。运行PID控制指令,S7-200将根据参数表中的输入测量值、控制设定值及PID参数,进行PID运算,求得输出控制值。参数表中有9个参数,全部为32位的实数,共占用36个字节。PID控制回路的参数表如下表所示。
78
地址偏移量 参数 数据格式 参数类型 说明 过程变量当前值PVn 双字 ,实数 输入 必须在0.0至1.0范围内。 4 给定值SPn 必须在0.0至1.0范围内 8 输出值Mn 输入/输出 在0.0至1.0范围内 12 增益Kc 比例常量,可为正数或负数 16 采样时间Ts 以秒为单位,必须为正数 20 积分时间Ti 以分钟为单位,必须为正数。 24 微分时间Td 28 上一次的积分值Mx 0.0和1.0之间(根据PID运算结果更新) 32 上一次过程变量PVn-1 最近一次PID运算值
79
水位检测计提供的模拟量经A/D转换后的标准化数值
PID回路参数表 地址 参数 数值 VB0 过程变量当前值PVn 水位检测计提供的模拟量经A/D转换后的标准化数值 VB4 给定值SPn 0.7 VB8 输出值Mn PID回路的输出值(标准化数值) VB12 增益Kc 0.3 VB16 采样时间Ts 0.1 VB20 积分时间Ti 30 VB24 微分时间Td 0(关闭微分作用) VB28 上一次积分值Mx 根据PID运算结果更新 VB32 上一次过程变量PVn-1 最近一次PID的变量值
80
2. PID控制回路选项 在很多控制系统中,有时只采用一种或两种控制回路。例如,可能只要求比例控制回路或比例和积分控制回路。通过设置常量参数值选择所需的控制回路。 (1)如果不需要积分回路(即在PID计算中无“I”),则应将积分时间Ti设为无限大。由于积分项Mx的初始值,虽然没有积分运算,积分项的数值也可能不为零。 (2)如果不需要微分运算(即在PID计算中无“D”),则应将微分时间Td设定为0.0。 (3)如果不需要比例运算(即在PID计算中无“P”),但需要I或ID控制,则应将增益值Kc指定为0.0。因为Kc是计算积分和微分项公式中的系数,将循环增益设为0.0会导致在积分和微分项计算中使用的循环增益值为1.0。
81
3. 回路输入量的转换和标准化 每个回路的给定值和过程变量都是实际数值,其大小、范围和工程单位可能不同。在PLC进行PID控制之前,必须将其转换成标准化浮点表示法。步骤如下: (1)将实际从16位整数转换成32位浮点数或实数。 (2)将实数转换成0.0至1.0之间的标准化数值。
82
4. PID回路输出转换为成比例的整数 程序执行后,PID回路输出0.0和1.0之间的标准化实数数值,必须被转换成16位成比例整数数值,才能驱动模拟输出。 PID回路输出成比例实数数值=(PID回路输出标准化实数值-偏移量)*取值范围 程序如下: MOVR VD108, AC0 //将PID回路输出送入AC0。 -R 0.5, AC //双极数值减偏移量0.5 R , AC0 //AC0的值*取值范围,变为成比例实数数值 ROUND AC0,AC0 //将实数四舍五入取整,变为32位整数 DTI AC0, AC0 //32位整数转换成16位整数 MOVW AC0, AQW0 //16位整数写入AQW0
83
5. PID指令 PID指令:使能有效时,根据回路参数表 (TBL)中的输入测量值、控制设定值及PID参数进行PID计算。格式如下表所示。
LAD STL 说明 PID TBL,LOOP TBL:参数表起始地址VB, 数据类型:字节 LOOP:回路号,常量(0-7),
84
说明: (1)程序中可使用八条PID指令,分别编号0-7,不能重复使用。
(2)使ENO = 0的错误条件:0006(间接地址),SM1.1(溢出,参数表起始地址或指令中指定的PID回路指令号码操作数超出范围)。 (3)PID指令不对参数表输入值进行范围检查。必须保证过程变量和给定值积分项前值和过程变量前值在0.0和1.0之间。
85
6.4.2 PID控制功能的应用
86
1. 控制任务 一恒压供水水箱,通过变频器驱动的水泵供水,维持水位在满水位的70%。过程变量PVn为水箱的水位(由水位检测计提供),设定值为70%,PID输出控制变频器,即控制水箱注水调速电机的转速。要求开机后,先手动控制电机,水位上升到70%时,转换到PID自动调节。
87
2. 程序分析 (1)I/O分配 手动/自动切换开关I0.0 模拟量输入AIW0 模拟量输出AQW0 (2)程序结构
由主程序,子程序,中断程序构成。主程序用来调用初始化子程序,子程序用来建立PID回路初始参数表和设置中断,由于定时采样,所以采用定时中断(中断事件号为10),设置周期时间和采样时间相同(0.1s),并写入SMB34。中断程序用于执行PID运算,I0.0=1时,执行PID运算,本例标准化时采用单极性(取值范围32000)。
88
3. 语句表程序 主程序 LD SM0.1 CALL SBR_0 子程序(建立PID回路参数表,设置中断以执行PID指令) LD SM0.0
MOVR 0.7, VD // 写入给定值(注满70%) MOVR 0.3, VD // 写入回路增益(0.25) MOVR 0.1, VD // 写入采样时间(0.1秒) MOVR , VD // 写入积分时间(30分钟) MOVR 0.0, VD // 设置无微分运算 MOVB 100, SMB34 // 写入定时中断的周期100ms ATCH INT_0, // 将INT-0(执行PID)和定时中断连接 ENI // 全局开中断
89
中断程序(执行PID指令) LD SM0.0 ITD AIW0, AC0 // 将整数转换为双整数 DTR AC0, AC0 // 将双整数转换为实数 /R , AC0 // 标准化数值 MOVR AC0, VD100 // 将标准化PV写入回路参数表 LD I0.0 PID VB100, //PID指令设置参数表起始地址为VB100, MOVR VD108, AC0 // 将PID回路输出移至累加器 *R , AC0 // 实际化数值 ROUND AC0, AC0 // 将实际化后的数值取整 DTI AC0, AC0 // 将双整数转换为整数 MOVW AC0, AQW0 // 将数值写入模拟输出
90
4. 梯形图程序 梯形图主程序见下图,子程序和INT0见下页
91
子程序 INT0
92
6.5 时钟指令
93
6.5 时钟指令 利用时钟指令可以实现调用系统实时时钟或根据需要设定时钟,这对控制系统运行的监视、运行记录及和实时时间有关的控制等十分方便。时钟指令有两条:读实时时钟和设定实时时钟。指令格式如下表所示: LAD STL 功能说明 TODR T 读取实时时钟指令:系统读取实时时钟当前时间和日期,并将其载入以地址T起始的8个字节的缓冲区。 TODW T 设定实时时钟指令:系统将包含当前时间和日期以地址T起始的8个字节的缓冲区装入PLC的时钟。 输入/输出T的操作数: VB, IB, QB, MB, SMB, SB, LB, *VD, *AC, *LD;数据类型:字节。
94
指令使用说明: (1)8个字节缓冲区(T)的格式如下表所示。所有日期和时间值必须采用BCD码表示,例如:对于年仅使用年份最低的两个数字,16#05代表2005年;对于星期,1代表星期日,2代表星期一,7代表星期六,0表示禁用星期。 地址 T T+1 T+2 T+3 T+4 T+5 T+6 T+7 含义 年 月 日 小时 分钟 秒 星期 范围 00~99 01~12 01~31 00~23 00~59 0~7
95
指令使用说明(接上页): (2)S7-200 CPU不根据日期核实星期是否正确,不检查无效日期,例如2月31日为无效日期,但可以被系统接受。所以必须确保输入正确的日期。 (3)不能同时在在主程序和中断程序中使用TODR/TODW指令,否则,将产生非致命错误(0007),SM4.3置1。 (4)对于没有使用过时钟指令或长时间断电或内存丢失后的PLC,在使用钟指令前,要通过STEP-7软件“PLC”菜单对PLC时钟进行设定,然后才能开始使用时钟指令。时钟可以设定成与PC系统时间一致,也可用TODW指令自由设定。
Similar presentations