Presentation is loading. Please wait.

Presentation is loading. Please wait.

电气控制及PLC技术 电气工程学院 自动化系 杨霞 2018年1月.

Similar presentations


Presentation on theme: "电气控制及PLC技术 电气工程学院 自动化系 杨霞 2018年1月."— Presentation transcript:

1 电气控制及PLC技术 电气工程学院 自动化系 杨霞 2018年1月

2 S7-200系列PLC功能指令(自学) 表功能指令 数据转换指令 中断指令 高速计数器指令 高速脉冲输出指令 PID回路指令 时钟指令
传送指令 数学运算指令 逻辑运算指令 移位和循环移位指令

3 一、 表功能指令 指令 描述 ATT DATA,TABLE 填表 FND= TBL,PATRN,INDX 查表
FIFO DATA,TABLE 先入先出 LIFO DATA,TABLE 后入先出 FILL IN,OUT,N 填充

4 1.填表指令(ATT) 填表指令(Add To Table)向表(TBL)中增加一个字(DATA)表内的第一个数是表的最大长度(TL),第二个数是表内实际的项数(EC)。新数据被放入表内上一次填入的数的后面。每向表内填入一个新的数据,EC自动加1。除了TL和EC外,表最多可以装入100个数据。TBL为WORD型,DATA为INT型。

5 填表指令的举例 执行ATT指令之前 执行ATT指令之后 图 填表指令的举例

6 2.查表指令 查表指令(Table Find)从指针INDX所指的地址开始查表TBL,搜索与数据PTN的关系满足CMD定义的条件的数据。 命令参数CMD=1~4,分别代表“=”、“<>”、“<”、和“>”。如果发现了一个符合条件的数据,则INDX指向该数据。要查找下一个符合条件的数据,再次启动查表之前,应先将INDX加1。如果没有找到,INDX的数值等于EC。一个表最多有100个填表数据,数据的 编号为0~99。 TBL和INDX为WORD型,PTN为INT型,CMD为字节型。

7 查表指令操作举例 LD I2.1 FND-VW202,16#3130,AC1 图 查表指令操作举例

8 3.先入先出(FIFO)指令 先入先出(First In First Out)指令从表(TBL)中移走最先放进的第一个数据(数据0),并将它送入DATA指定的地址,表中剩下的各项依次向上移动一个位置。每次执行此指令,表中的项数EC减1。TABLE为INT型,DATA为WORD型。

9 先入先出指令的应用 执行前  LIFO执行后 图 先入先出指令举例

10 4.后入先出(LIFO)指令 后入先出(Last In First Out)指令从表(TBL)中移走最后放进的数据,并将它送入DATA指定的位置,剩下的各项依次向上移动一个位置。每次执行此指令 ,表中的项数EC减1。TABLE为INT型,DATA为WORD型。

11 后入先出指令的应用 LIFO执行前 LIFO执行后 图 后入先出指令的应用举例

12 5.存储器填充指令 存储器填充指令FILL(Memory Fill)用输入值(IN)填充从输出OUT开始的N个字,字节型整数N=1~255。图7-26中的FILL指令将0填入VW200~VW219,IN和OUT为WORD型。 图 填充指令

13 6.读写实时时钟指令 读写实时时钟指令TODR(Time of Day Read)从时钟读取当前时间和日期,并把它们装入以T为起始地址的8个字节缓冲区,依次存放年、月、日、时、分、秒、0和星期、时间和日期的数据类型为字节型 。 图 时钟指令

14 二、转换指令 转换指令是对操作数的类型进行转换,并输出到指定的目标地址中去。转换指令包括数据的类型转换、数据的编码和译码指令以及字符串类型转换指令。 1、BCD码与整数之间的转换 2.双字整数转换为实数 3.四舍五入取整指令 4.截位取整指令 5.整数与双整数的转换 6.字节与整数的转换指令

15 转换指令如图: 图 转换指令 图 转换指令

16 7.译码指令 8.段译码指令 D0 D1 D2 D5 D4 D3 D6 SEG EN IN ENO OUT 图 段译码指令

17 三、中断指令 (一)中断源 S7-200系列可编程控制器最多有34个中断源, 1.中断源 (1)通信中断
PLC的自由通信模式下,通信口的状态可由程序来控制 (2)I/O中断 I/O中断包括外部输入中断、高速计数器中断和脉冲 串输出中断。 (3)时间中断 时间中断包括定时中断和定时器中断。

18 2.中断优先级 中断优先级由高到低依次是:通信中断、输入输出中断、时基中断。 在PLC应用系统中通常有多个中断源。当多个中断源同时向CPU申请中断时,要求CPU能将全部中断源按中断性质和处理的轻重缓急进行排队,并给予优先权。 3.CPU响应中断的顺序 PLC中,CPU响应中断的顺序可以分以下三种情况: (1)当不同的优先级的中断源同时申请中断时,CPU响应中断请求的顺序为从优先级高的中断源到优先级低的中断源。 (2)当相同优先级的中断源申请中断时,CPU按先来先服务的原则响应中断请求。

19 (3)当CPU正在处理某中断,又有中断源提出中断请求时,新出现的中断请求按优先级排队等候处理,当前中断服务程序不会被其他甚至更优先级的中断程序打断。任何时刻CPU只执行一个中断程序。
(二)中断控制 经过中断判优后,将优先级最高的中断请求送给CPU,CPU响应中断后自动保存逻辑堆栈、累加器和某些特殊标志寄存器位,即保护现场。中断处理完成后,又自动恢复这些单元保存起来的数据,即恢复现场。

20 中断指令如图 图 中断指令

21 三、中断程序(中断服务程序 ) 中段程序是为处理中断事件而事先编好的程序。中断程序不是由程序调用,而是在中断事件发生时由操作系统调用。 注意: (1)在中断程序中禁止使用DISI、ENI、HDEF、LSCR、END指令。 (2)中断程序最后一条指令一定是无条件返回指令RETI(省略),也可以是有条件返回指令CRETI结束中断程序。

22 查表8-2可知,I0.1上升沿产生的中断事件号为2。 所以在主程序中用ATCH指令将事件号2和中断程序0连接起来,并全局开中断。
分析: 查表8-2可知,I0.1上升沿产生的中断事件号为2。 所以在主程序中用ATCH指令将事件号2和中断程序0连接起来,并全局开中断。

23

24 【例】编程完成采样工作,要求每10ms采样一次
分析: 完成每10ms采样一次,需用定时中断,查表8-2可知,定时中断0的中断事件号为10。 因此在主程序中将采样周期(10ms)即定时中断的时间间隔写入定时中断0的特殊存储器SMB34,并将中断事件10和INT-0连接,全局开中断。 在中断程序0中,将模拟量输入信号读入。

25

26 【例】利用定时中断功能编制 一个程序,实现如下功能:
当I0.0由OFF→ON,Q0.0亮1s,灭1s,如此循环反复直至I0.0由ON→OFF,Q0.0变为OFF。

27 五、高速处理指令* 一) 高速计数器 1. 高速计数器介绍
高速计数器在程序中使用时的地址编号用HCn来表示(在非程序中有时用HSCn),HC表编程元件名称为高速计数器,n为编号。

28 1)高速计数器输入端的连接 高速计数器中断事件大致分为3类:当前值等于预设值中断、输入方向改变中断和外部复位中断。所有高速计数器都支持当前值等于预设值中断。 31 22

29 2) 高速计数器的工作模式

30 高速计数器有6种编号,12种工作模式. HSC0和HSC4有模式0、1、3、4、6、7、8、9、10;

31 3)高速计数器的控制字和状态字

32

33 2.高速计数器的使用 每个高速计数器都有固定的特殊功能存储器与之相配合,完成高速计数功能。

34 3.高速计数指令 (1)HDEF指令 HDEF,定义高速计数器指令。使能输入有效时,为指定的高速计数器分配一种工作模式,即用来建立高速计数器与工作模式之间的联系。 梯形图指令盒中有两个数据输入端: HSC,高速计数器编号,为0~5的常数,字节型; MODE,工作模式,为0~11的常数,字节型。

35 (2)HSC指令 HSC,使用高速计数器指令。 使能输入有效时,根据高速计数器特殊存储器位的状态,并按照HDEF指令指定的工作模式,设置高速计数器并控制其工作。 梯形图指令盒数据输入端N:高速计数器编号,为0~5的常数,字型。

36 4.高速计数器使用原理 原理: 每个高速计数器都有一个32位当前值和一个32位预置值,当前值和预设值均为带符号的整数值。要设置高速计数器的新当前值和新预置值,必须设置控制字节令其第五位和第六位为1,允许更新预置值和当前值,新当前值和新预置值写入特殊内部标志位存储区。然后执行HSC指令,将新数值传输到高速计数器。

37 5.高速计数器指令初始化 (1)用首次扫描时接通一个扫描周期的特殊内部存储器SM0.1去调用一个子程序,完成初始化操作。
(2) 在初始化的子程序中,根据希望的控制设置控制字(SMB37、SMB47、SMB137、SMB147、SMB157) (3)执行HDEF指令,设置HSC的编号(0-5),设置工作模式(0-11)。 (4) 用新的当前值写入32位当前值寄存器(SMD38,SMD48,SMD58 ,SMD138, SMD148, SMD158)。 (5)用新的预置值写入32位预置值寄存器(SMD42 ,SMD52, SMD62, SMD142 ,SMD152, SMD162) (6)、 (7) 、(8)中断事件(事件13、14、15)与一个中断程序相联系。 (9)执行全局中断允许指令(ENI)允许HSC中断 (10)执行HSC指令使S7-200对高速计数器进行编程。 (11)结束子程序。

38 例 高速计数器的应用举例 (1)主程序 (2)初始化的子程序
用首次扫描时接通一个扫描周期的特殊内部存储器SM0.1去调用一个子程序,完成初始化操作。 (2)初始化的子程序 定义HSC1的工作模式为模式11(两路脉冲输入的双相正交计数,具有复位和起动输入功能),设置SMB47=16#F8(允许计数,更新新当前值,更新新预置值,更新计数方向为加计数,若为正交计数设为4×,复位和起动设置为高电平有效)。HSC1的当前值SMD48清零,预置值SMD52=50,当前值 = 预设值,产生中断(中断事件13),中断事件13连接中断程序INT-0。

39 (2)初始化的子程序

40 (3)中断程序INT_0

41 二)高速脉冲输出 1.高速脉冲输出介绍

42 2.高速脉冲串输出PTO (1)周期和脉冲数 (2)PTO的种类 (3)中断事件类型 (4)PTO的使用

43 3.应用实例 (1)控制要求 步进电机转动过程中,要从A点加速到B点后恒速运行,又从C点开始减速到D点,完成这一过程时用指示灯显示。电机的转动受脉冲控制,A点和D点的脉冲频率为2kHz,B点和C点的频率为10kHz,加速过程的脉冲数为400个,恒速转动的脉冲数为4000个,减速过程脉冲数为200个。

44 (2)程序实现 确定脉冲发生器及工作模式 设置控制字节 写入周期值、周期增量值和脉冲数 装入包络表首地址 中断调用 执行PLS指令 (3)分析 本控制系统主程序、初始化子程序SBR_1、包络表子程序、中断程序组成。

45 例 设置控制字节 用Q0.0作为高速脉冲输出,对应的控制字节为SMB67,如果希望定义的输出脉冲操作为PTO操作,允许脉冲输出,多段PTO脉冲串输出,时基为ms,设定周期值和脉冲数,则应向SMB67写入2# ,即16#AD。 通过修改脉冲输出(Q0.0或Q0.1)的特殊存储器SM区(包括控制字节),既更改PTO或PWM的输出波形,然后再执行PLS指令。 注意:所有控制位、周期、脉冲宽度和脉冲计数值的默认值均为零。向控制字节(SM67.7或SM77.7)的PTO/PWM允许位写入零,然后执行PLS指令,将禁止PTO或PWM波形的生成。

46 对输出的影响 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%的额定负载,才能完成从关闭至打开以及从打开至关闭的顺利转换,即提供陡直的上升沿和下降沿。

47 PTO的使用 PTO是可以指定脉冲数和周期的占空比为50%的高速脉冲串的输出。状态字节中的最高位(空闲位)用来指示脉冲串输出是否完成。可在脉冲串完成时起动中断程序,若使用多段操作,则在包络表完成时起动中断程序。 (1)周期和脉冲数 周期范围从50微秒至65,535微秒或从2毫秒至65,535毫秒,为16位无符号数,时基有µs和ms两种,通过控制字节的第三位选择。注意: 如果周期< 2个时间单位,则周期的默认值为2个时间单位。 周期设定奇数微秒或毫秒(例如75毫秒),会引起波形失真。 脉冲计数范围从1至4,294,967,295,为32位无符号数,如设定脉冲计数为0,则系统默认脉冲计数值为1。

48 (2)PTO的种类及特点 PTO功能可输出多个脉冲串,现用脉冲串输出完成时,新的脉冲串输出立即开始。这样就保证了输出脉冲串的连续性。PTO功能允许多个脉冲串排队,从而形成流水线。流水线分为两种:单段流水线和多段流水线。 单段流水线是指:流水线中每次只能存储一个脉冲串的控制参数,初始PTO段一旦起动,必须按照对第二个波形的要求立即刷新SM,并再次执行PLS指令,第一个脉冲串完成,第二个波形输出立即开始,重复此这一步骤可以实现多个脉冲串的输出。 单段流水线中的各段脉冲串可以采用不同的时间基准,但有可能造脉冲串之间的不平稳过渡。输出多个高速脉冲时,编程复杂。

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

50 多段流水线的特点是编程简单,能够通过指定脉冲的数量自动增加或减少周期,周期增量值Δ为正值会增加周期,周期增量值Δ为负值会减少周期,若Δ为零,则周期不变。在包络表中的所有的脉冲串必须采用同一时基,在多段流水线执行时,包络表的各段参数不能改变。多段流水线常用于步进电机的控制。

51 步进电机的控制要求如图所示。从A点到B点为加速过程,从B到C为恒速运行,从C到D为减速过程。
例 根据控制要求列出PTO包络表 步进电机的控制要求如图所示。从A点到B点为加速过程,从B到C为恒速运行,从C到D为减速过程。 图 步进电机的控制要求

52 在本例中:流水线可以分为3段,需建立3段脉冲的包络表。起始和终止脉冲频率为2 kHz,最大脉冲频率为10 kHz ,所以起始和终止周期为500 µs,与最大频率的周期为100 µs。1段:加速运行,应在约200个脉冲时达到最大脉冲频率;2段:恒速运行,约( )=3600个脉冲;3段:减速运行,应在约200个脉冲时完成。 某一段每个脉冲周期增量值Δ用以下式确定: 周期增量值Δ=(该段结束时的周期时间-该段初始的周期时间)/该段的脉冲数 用该式,计算出1段的周期增量值Δ为-2 µs,2段的周期增量值Δ为0,3段的周期增量值Δ为2 µs。假设包络表位于从VB200开始的V存储区中,包络表如下表所示。

53 表 包络表 在程序中的用指令可将表中的数据送入V变量存储区中。 V变量存储器地址 段号 参数值 说明 VB200 3 段数 VB201 段1
表 包络表 V变量存储器地址 段号 参数值 说明 VB200 3 段数 VB201 段1 500 µs 初始周期 VB203 -2 µs 每个脉冲的周期增量Δ VB205 200 脉冲数 VB209 段2 100µs VB211 VB213 3600 VB217 段3 VB219 2 µs VB221 在程序中的用指令可将表中的数据送入V变量存储区中。

54 (3)多段流水线PTO初始化和操作步骤 用一个子程序实现PTO初始化,首次扫描(SM0.1)时从主程序调用初始化子程序,执行初始化操作。以后的扫描不再调用该子程序,这样减少扫描时间,程序结构更好。 初始化操作步骤如下: ①首次扫描(SM0.1)时将输出Q0.0或Q0.1复位(置0),并调用完成初始化操作的子程序。 ②在初始化子程序中,根据控制要求设置控制字并写入SMB67或SMB77特殊存储器。如写入16#A0(选择微秒递增)或16#A8(选择毫秒递增),两个数值表示允许PTO功能、选择PTO操作、选择多段操作、以及选择时基(微秒或毫秒)。 ③将包络表的首地址(16位)写入在SMW168(或SMW178)。

55 ④在变量存储器V中,写入包络表的各参数值。一定要在包络表的起始字节中写入段数。在在变量存储器V中建立包络表的过程也可以在一个子程序中完成,在此只须调用设置包络表的子程序。
⑤设置中断事件并全局开中断。如果想在PTO完成后,立即执行相关功能,则须设置中断,将脉冲串完成事件(中断事件号19)连接一中断程序。 ⑥执行PLS指令,使S7-200为PTO/PWM发生器编程,高速脉冲串由Q0.0或Q0.1输出。 ⑦退出子程序。

56 例 PTO指令应用实例 编程实现例8-6中的步进电机的控制
分析: 编程前首先选择高速脉冲发生器为Q0.0,并确定PTO为3段流水线。 设置控制字节SMB67为16#A0表示允许PTO功能、选择PTO操作、选择多段操作、以及选择时基为微秒,不允许更新周期和脉冲数。 建立3段的包络表(上例),并将包络表的首地址装入SMW168。 PTO完成调用中断程序,使Q1.0接通。PTO完成的中断事件号为19。 用中断调用指令ATCH将中断事件19与中断程序INT-0连接,并全局开中断。 执行PLS指令,退出子程序。 本例题的主程序,初始化子程序,和中断程序如下图所示。

57 主程序 LD SM0.1// 首次扫描时,将Q0.0复位 R Q0.0 1 CALL SBR_0//调用子程序0

58 子程序0 // 写入PTO包络表 LD SM0.0 MOVB 3 VB200 // 将包络表段数设为3 // 段1: MOVW +500 VW201 //段1的初始循环时间设为500ms MOVW -2 VW203 //段1的Δ设为-2 ms MOVD +200 VD205 //段1的脉冲数设为200 // 段2: MOVW +100 VW209 //段2的初始周期设为100 ms MOVW +0 VW211 //段2的Δ设为0 ms MOVD VD213 //段2中的脉冲数设为3600 // 段3: MOVW +100 VW217 //段3的初始周期设为100ms MOVW +1 VW219 //段3的Δ设为1ms MOVD +200 VD221 //段3中的脉冲数设为200 LD SM0.0 MOVB 16#A0, SMB67 // 设置控制字节 MOVW , SMW168 // 将包络表起始地址指定为V200 ATCH INT_0, // 设置中断 ENI // 全局开中断 PLS // 起动PTO,由Q0.0输出

59 中断程序0 LD SM // PTO完成时,输出Q1.0 = Q1.0 图 主程序,初始化子程序,中断程序

60 六、PWM的使用* PWM是脉宽可调的高速脉冲输出,通过控制脉宽和脉冲的周期,实现控制任务。 (1)周期和脉宽
周期和脉宽时基为:微秒或毫秒,均为16位无符号数。 周期的范围从50微秒至65,535微秒,或从2毫秒至65,535毫秒。若周期 < 2个时基,则系统默认为两个时基。 脉宽范围从0微秒至65,535微秒或从0毫秒至65,535毫秒。若脉宽>= 周期,占空比=100%,输出连续接通。若脉宽= 0,占空比为0%,则输出断开。 (2)更新方式 有两种改变PWM波形的方法:同步更新和异步更新。 同步更新:不需改变时基时,可以用同步更新。执行同步更新时,波形的变化发生在周期的边缘,形成平滑转换。

61 异步更新:需要改变PWM的时基时,则应使用异步更新。异步更新使高速脉冲输出功能被瞬时禁用,与PWM波形不同步。这样可能造成控制设备震动。
①用首次扫描位(SM0.1)使输出位复位为0,并调用初始化子程序。这样可减少扫描时间,程序结构更合理。 ②在初始化子程序中设置控制字节。如将16#D3(时基微秒)或16#DB(时基毫秒)写入SMB67 或SMB77,控制功能为:允许PTO/PWM功能、选择PWM操作、设置更新脉冲宽度和周期数值、以及选择时基(微秒或毫秒)。

62 ③在SMW68或SMW78中写入一个字长的周期值。
⑤执行PLS指令,使S7-200为PWM发生器编程,并由Q0.0或Q0.1输出。 ⑥可为下一输出脉冲预设控制字。在SMB67或SMB77中写入16#D2(微秒)或16#DA(毫秒)控制字节中将禁止改变周期值,允许改变脉宽。以后只要装入一个新的脉宽值,不用改变控制字节,直接执行PLS指令就可改变脉宽值。 (4)退出子程序。

63 【例】PWM应用举例 设计程序,从PLC的Q0.0输出高速脉冲。该串脉冲脉宽的初始值为0.1s,周期固定为1s,其脉宽每周期递增0.1s,当脉宽达到设定的0.9s时,脉宽改为每周期递减0.1s,直到脉宽减为0。以上过程重复执行。 分析:因为每个周期都有操作,所以须把Q0.0接到I0.0,采用输入中断的方法完成控制任务,并且编写两个中断程序,一个中断程序实现脉宽递增,一个中断程序实现脉宽递减,并设置标志位,在初始化操作时使其置位,执行脉宽递增中断程序,当脉宽达到0.9s时,使其复位,执行脉宽递减中断程序。在子程序中完成PWM的初始化操作,选用输出端为Q0.0,控制字节为SMB67,控制字节设定为16#DA(允许PWM输出,Q0.0为PWM方式,同步更新,时基为ms,允许更新脉宽,不允许更新周期)。程序如图8-16所示。

64 (a)主程序

65

66 (b)子程序

67 (c)中断程序

68 七、PID控制* 一、PID指令 1. PID算法
运行PID控制指令,S7-200将根据参数表中的输入测量值、控制设定值及PID参数,进行PID运算,求得输出控制值。 参数表中有9个参数,全部为32位的实数,共占用36个字节。PID控制回路的参数表如下表所示。

69 表 PID控制回路的参数表 地址偏移量 参数 数据格式 参数类型 说明 过程变量当前值PVn 双字 ,实数 输入
过程变量当前值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运算值

70 典型的PID算法包括三项:比例项、积分项和微分项。即:输出=比例项+积分项+微分项。计算机在周期性地采样并离散化后进行PID运算,算法如下:
Mn=Kc*(SPn-PVn)+Kc*(Ts/Ti)*(SPn-PVn)+Mx+Kc*(Td/Ts)*(PVn-1-PVn) 其中各参数的含义已在表8-15中描述。 比例项Kc*(SPn-PVn):能及时地产生与偏差(SPn-PVn)成正比的调节作用,比例系数Kc越大,比例调节作用越强,系统的稳态精度越高,但Kc过大会使系统的输出量振荡加剧,稳定性降低。 积分项Kc*(Ts/Ti)*(SPn-PVn)+Mx:与偏差有关,只要偏差不为0,PID控制的输出就会因积分作用而不断变化,直到偏差消失,系统处于稳定状态,所以积分的作用是消除稳态误差,提高控制精度,但积分的动作缓慢,给系统的动态稳定带来不良影响,很少单独使用。从式中可以看出:积分时间常数增大,积分作用减弱,消除稳态误差的速度减慢。 微分项Kc*(Td/Ts)*(PVn-1-PVn):根据误差变化的速度(既误差的微分)进行调节具有超前和预测的特点。微分时间常数Td增大时,超调量减少,动态性能得到改善,如Td过大,系统输出量在接近稳态时可能上升缓慢。

71 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。

72 3. 回路输入量的转换和标准化 每个回路的给定值和过程变量都是实际数值,其大小、范围和工程单位可能不同。在PLC进行PID控制之前,必须将其转换成标准化浮点表示法。步骤如下: (1)将实际从16位整数转换成32位浮点数或实数。下列指令说明如何将整数数值转换成实数。 XORD AC0,AC0 //将AC0清0 ITD AIW0, AC0 //将输入数值转换成双字 DTR AC0, AC0 //将32位整数转换成实数

73 2)将实数转换成0.0至1.0之间的标准化数值。用下式:
实际数值的标准化数值=实际数值的非标准化数值或原始实数/取值范围 +偏移量 其中:取值范围=最大可能数值-最小可能数值=32 000(单极数值)或64 000(双极数值) 偏移量:对单极数值取0.0,对双极数值取0.5 单极(0~32000),双极(-32000~32000) 如将上述AC0中的双极数值(间距为64,000)标准化: /R , AC0 //使累加器中的数值标准化 +R 0.5, AC //加偏移量0.5 MOVR AC0, VD100 //将标准化数值写入PID回路参数表中。

74 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

75 5. PID指令 PID指令:使能有效时,根据回路参数表(TBL)中的输入测量值、控制设定值及PID参数进行PID计算。格式如表8-16所示。 说明: (1)程序中可使用八条PID指令,分别编号0-7,不能重复使用。 (2)使ENO = 0的错误条件:0006(间接地址),SM1.1(溢出,参数表起始地址或指令中指定的PID回路指令号码操作数超出范围)。 (3)PID指令不对参数表输入值进行范围检查。必须保证过程变量和给定值积分项前值和过程变量前值在0.0和1.0之间。

76 表 PID指令格式 LAD STL 说明 PID TBL,LOOP TBL:参数表起始地址VB, 数据类型:字节

77 二、PID控制功能的应用 1. 控制任务 一恒压供水水箱,通过变频器驱动的水泵供水,维持水位在满水位的70%。过程变量PVn为水箱的水位(由水位检测计提供),设定值为70%,PID输出控制变频器,即控制水箱注水调速电机的转速。要求开机后,先手动控制电机,水位上升到70%时,转换到PID自动调节。 2. PID回路参数表,如下表所示。

78 表 恒压供水 PID控制参数表 地址 参数 数值 VB100 过程变量当前值PVn 水位检测计提供的模拟量经A/D转换后的标准化数值
给定值SPn 0.7 VB108 输出值Mn PID回路的输出值(标准化数值) VB112 增益Kc 0.3 VB116 采样时间Ts 0.1 VB120 积分时间Ti 30 VB124 微分时间Td 0(关闭微分作用) VB128 上一次积分值Mx 根据PID运算结果更新 VB132 上一次过程变量PVn-1 最近一次PID的变量值

79 2. 程序分析 (1)I/O分配 手动/自动切换开关I 模拟量输入AIW 模拟量输出AQW0 (2)程序结构 由主程序,子程序,中断程序构成。主程序用来调用初始化子程序,子程序用来建立PID回路初始参数表和设置中断,由于定时采样,所以采用定时中断(中断事件号为10),设置周期时间和采样时间相同(0.1s),并写入SMB34。中断程序用于执行PID运算,I0.0=1时,执行PID运算,本例标准化时采用单极性(取值范围32000)。

80 3. 语句表程序 主程序 LD SM0.1 CALL SBR_0 子程序(建立PID回路参数表,设置中断以执行PID指令) LD SM0.0 MOVR 0.7, VD104 // 写入给定值(注满70%) MOVR 0.3, VD112 // 写入回路增益(0.25) MOVR 0.1, VD116 // 写入采样时间(0.1秒) MOVR , VD120 // 写入积分时间(30分钟) MOVR 0.0, VD124 // 设置无微分运算 MOVB 100, SMB34 // 写入定时中断的周期100ms ATCH INT_0, // 将INT-0(执行PID)和定时中断连接 ENI // 全局开中断

81 中断程序(执行PID指令) LD SM0.0 ITD AIW0, AC // 将整数转换为双整数 DTR AC0, AC // 将双整数转换为实数 /R , AC0 // 标准化数值 MOVR AC0, VD100 // 将标准化PV写入回路参数表 LD I0.0 PID VB100, //PID指令设置参数表起始地址为VB100, MOVR VD108, AC0 // 将PID回路输出移至累加器 *R , AC0 // 实际化数值 ROUND AC0, AC0 // 将实际化后的数值取整 DTI AC0, AC // 将双整数转换为整数 MOVW AC0, AQW0 // 将数值写入模拟输出

82 4. 梯形图程序 图 恒压供水 PID控制

83 八、时钟指令* 利用时钟指令可以实现调用系统实时时钟或根据需要设定时钟,这对控制系统运行的监视、运行记录及和实时时间有关的控制等十分方便。时钟指令有两条:读实时时钟和设定实时时钟。指令格式如下表所示。

84 表 读实时时钟和设定实时时钟指令格式 LAD STL 功能说明 TODR T
表 读实时时钟和设定实时时钟指令格式 LAD STL 功能说明 TODR T 读取实时时钟指令:系统读取实时时钟当前时间和日期,并将其载入以地址T起始的8个字节的缓冲区 TODW T 设定实时时钟指令:系统将包含当前时间和日期以地址T起始的8个字节的缓冲区装入PLC的时钟 输入/输出T的操作数: VB, IB, QB, MB, SMB, SB, LB, *VD, *AC, *LD;数据类型:字节

85 指令使用说明: (1)8个字节缓冲区(T)的格式如下表所示。所有日期和时间值必须采用BCD码表示,例如:对于年仅使用年份最低的两个数字,16#05代表2005年;对于星期,1代表星期日,2代表星期一,7代表星期六,0表示禁用星期。

86 (3)不能同时在主程序和中断程序中使用TODR/TODW指令,否则,将产生非致命错误(0007),SM4.3置1。
表 8字节缓冲区的格式 地址 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 (2)S7-200 CPU不根据日期核实星期是否正确,不检查无效日期,例如2月31日为无效日期,但可以被系统接受。所以必须确保输入正确的日期。 (3)不能同时在主程序和中断程序中使用TODR/TODW指令,否则,将产生非致命错误(0007),SM4.3置1。 (4)对于没有使用过时钟指令或长时间断电或内存丢失后的PLC,在使用时钟指令前,要通过STEP-7软件“PLC”菜单对PLC时钟进行设定,然后才能开始使用时钟指令。时钟可以设定成与PC系统时间一致,也可用TODW指令自由设定。

87 【例】编写程序,要求读时钟并以BCD码显示秒钟。
说明: 时钟缓冲区从VB0开始,VB5中存放着秒钟,第一次用SEG指令将字节VB100的秒钟低四位转换成七段显示码由QB0输出,接着用右移位指令将VB100右移四位,将其高四位变为低四位,再次使用SEG指令,将秒钟的高四位转换成七段显示码由QB1输出。

88 LD SM0.1 TODR VB0 MOVB VB5, VB100 SEG VB100, QB0 SRB VB100, 4 SEG VB100, QB1 图 读时钟并以BCD码显示秒钟

89 【例】编写程序,要求控制灯的定时接通和断开。
要求18:00时开灯,06:00时关灯。时钟缓冲区从VB0开始。程序如下图所示。 网络1 读实时时钟,“小时”在VB3 LD SM0.0 TODR VB0 网络2 18点之后,6点之前开灯,时间 用BCD码 LDB>= VB3, 16#18 OB<= VB3, 16#06 = Q0.0 图 控制灯的定时接通和断开程序

90 学习要求 小结:通过本讲的学习,重点掌握PLC的特殊功能类指令。 作业:用所学指令系统设计个简单控制。


Download ppt "电气控制及PLC技术 电气工程学院 自动化系 杨霞 2018年1月."

Similar presentations


Ads by Google