?第 5章 应用指令
第 5章 应用指令
5.1 程序控制类指令
5.2 特殊指令
?第 5章 应用指令
5.1 程序控制类指令
5.1.1 空操作
5.1.2 结束及暂停
5.1.3 看门狗
5.1.4 跳转
5.1.5 子程序指令
5.1.6 程序循环
5.1.7 顺序控制继电器
5.1.8 与 ENO指令
返回本章首页
?第 5章 应用指令
5.1.1 空操作
NOP,空操作指令 。 使能输入有效时, 执行空操作指
令 。 空操作指令不影响用户程序的执行, 操作数 N是标
号, 是一个 0~255的常数 。
指令格式,NOP N
例,NOP 30
程序如下图 5.1所示 。
LD I0, 0 // 使能输入
NOP 30 // 空操作指令
// 标号为 30
返回本节
?第 5章 应用指令
5.1.2 结束及暂停
1,结束指令
结束指令有两条,END和 MEND。两条指令在
梯形图中以线圈形式编程。
END,条件结束指令。使能输入有效时,终
止用户主程序。
MEND无条件结束指令 。 无条件终止用户程序
的执行, 返回主程序的第一条指令 。
用 Micro/Win32编程时, 编程人员不需手工输
入 MEND指令, 而是由软件自动加在主程序结
尾 。 指令格式,END ( 无操作数 )
?第 5章 应用指令
2,暂停指令
STOP,暂停指令 。 使能输入有效时, 该
指令使主机 CPU的工作方式由 RUN切换
到 STOP方式, 从而立即终止用户程序的
执行 。
STOP指令在梯形图中以线圈形式编程 。
指令不含操作数 。 指令的执行不考虑对特
殊标志寄存器位和能流的影响 。
指令格式,STOP ( 无操作数 )
返回本节
?第 5章 应用指令
5.1.3 看门狗
WDR,看门狗复位指令 。 当使能输入有效时,
执行 WDR指令, 每执行一次, 看门狗定时器就
被复位一次 。 用本指令可用以延长扫描周期,
从而可以有效避免看门狗超时错误 。
指令格式,WDR ( 无操作数 )
程序实例:指令 STOP,END,WDR的应用如
图 5.2所示 。
?第 5章 应用指令
LD SM5, 0 // 检查 I/O 错误
O SM4, 3 // 运行时刻检查编程
O I0,3 // 外部切换开关
ST O P // 条件满足,由 RUN
// 切换到 ST O P 方式
//
//
LD I0,5 // 外部停止控制
EN D // 停止程序执行
//
//
LD M0, 4 // 用触点重新触发
W D R // 看门狗定时器
A I 0,2 //?图 5.2 停止、结束、看门狗指令
返回本节
?第 5章 应用指令
5.1.4 跳转
1,跳转指令
与跳转相关的指令有下面两条:
( 1) 跳转指令
JMP,跳转指令 。 使能输入有效时, 使程序流程跳到
同一程序中的指定标号 n处执行 。 执行跳转指令时, 逻
辑堆栈的栈顶值总是 1。
( 2) 标号指令
LBL,标号指令 。 标记程序段, 作为跳转指令执行时跳
转到的目的位置 。 操作数 n为 0~255的字型数据 。
?第 5章 应用指令
程序实例:
如右图 5.3所示 。 用增减计数器进行计数,
如果当前值小于 500,则程序按原顺序执
行, 若当前值超过 500,则跳转到从标号
10开始的程序执行 。
返回本节
?第 5章 应用指令
LD I0, 0 // 增计数输入端
LD I0, 1 // 减计数输入端
LD I0, 2 // 复位输入端
CT U D C3 0,V W 1 0 0 // 增减计数
// 设定脉冲数
// 存于 V W 1 0 0
L D I> = C3 0,+ 5 0 0 // 判断计数器
// 当前值是否
// 大于 500
J M P 10 // 条件满足,跳转
// 到标号 10 开始
// 的程序段
L BL 10 // 标志程序段
LD I0, 3 //
S Q 1, 0,3 // 把从 Q 1, 0 开始的
//3 个输出点置 1
?

5.
3






?第 5章 应用指令
5.1.5 子程序指令
1,建立子程序
2,子程序调用
3,带参数的子程序调用
?第 5章 应用指令
1,建立子程序
可用编程软件 Edit菜单中的 Insert选项, 选择
Subroutine,以建立或插入一个新的子程序,
同时在指令树窗口可以看到新建的子程序图标,
默认的程序名是 SBR_n,编号 n从 0开始按递增
顺序生成, 可以在图标上直接更改子程序的程
序名 。 在指令树窗口双击子程序的图标就可对
它进行编辑 。
?第 5章 应用指令
2,子程序调用
( 1) 子程序调用和返回指令
?子程序调用
?子程序条件返回
( 2)注意事项
( 3)应用实例
?第 5章 应用指令
图 5.4所示的程序实现用外部控制条件分别调用
两个子程序 。
LD I0, 0 // 使能输入
C A L L S2 // 调用子程序 S2
//
LD I0, 0 // 使能输入
C A L L S B R _ 1 // 调用子程序
/ / S B R _ 1
?图 5.4 子程序调用举例
?第 5章 应用指令
( 1)子程序参数
?变量名
?变量类型
?数据类型
( 2)参数子程序调用的规则
( 3)变量表使用
( 4)程序实例
3,带参数的子程序调用
?第 5章 应用指令
以上面指令为例, 局部变量表分配如表 5.1所示,
程序段如图 5.5所示 。
?表 5.1 局部变量表例
?第 5章 应用指令
LD I 0, 0 // 装入常开触点
C A L L S B R _ 0,I 0, 2,V B 2 0,V D 3 0 / /
// 调用子程序 S B R _ 0
// 含有 3 个参数,
// 分别为布尔、字节
// 和双字型
?图 5.5 带参数的子程序调用
返回本节
?第 5章 应用指令
5.1.6 程序循环
1,循环开始
2,循环结束
3,程序实例
?第 5章 应用指令
LD M 0, 0 // 使能输入
F O R V W 1 0,+ 1,+ 2 0 // 循环开始
// 与第 2 个 N E X T
// 之间为一级循环体
LD M 0, 1 // 使能输入
F O R V W 2 0,+ 1,+ 5 // 循环开始
// 与第 1 个 N E X T
// 之间为二级循环体
?图 5.6 程序循环 (1)
?第 5章 应用指令
返回本节
LD I0, 0 // 使能输入
CALL S BR_ 0 // 调用子程序 0
// 本梯级为二级
// 循环体的功能段
NEX T // 循环结束指令
LD S M 0, 0 // 使能输入
INCW V W 1 0 0 // 字增指令
// 每执行一次一级
// 循环体,V W 1 0 0
// 的 值增 1
NEX T // 循环结束指令
?图 5.6 程序循环 (2)
?第 5章 应用指令
5.1.7 顺序控制继电器
1,顺序继电器指令
( 1) 定义顺序段 ( 2) 段开始
( 3) 段结束 ( 4) 段转移
2,注意事项
3,顺序结构
4,程序实例
?第 5章 应用指令
本例是用顺序
继电器实现的
顺序控制中的
一个步的程序
段, 这一步实
现的功能是使
两个电机 M1和
M2起动运行 20
秒后停止, 切
换到下一步 。
程序如图 5.7所
示 。
L S CR S 0, 5 // 由 S 0, 5 控制的
// 顺序步的开始
//
LD S M 0, 0 // 装入常开触点
S Q1, 2,2 // 将 Q1, 2 和 Q1, 3
// 置 1
T ON T 5 0,+2 0 0 // 通电延时
// 本步的持续时间
// 为 2 0 s
LD T 5 0 // 延时时间到
// 作为切换条件
S CR T S 0, 6 // 步转移
// 切换到下一步
// 同时关本步
//
S CRE // 本 步 结束标志
返回本节
?第 5章 应用指令
5.1.8 与 ENO指令
AENO,与 ENO指令。 ENO是梯形图和功能框
图编程时指令盒的布尔能流输出端。如果指令
盒的能流输入有效,同时执行没有错误,ENO
就置位,将能流向下传递。当用梯形图编程时,
且指令盒后串联一个指令盒或线圈,语句表语
言中用 AENO指令描述。
指令格式,AENO( 无操作数 )
?第 5章 应用指令
LD I0,0 // 使能输入
+I V W 2 0 0,V W 2 0 4 // 整数加法指令,V W 2 0 0 + V W 2 0 4 = V W 2 0 4
A EN O // 与 EN O 指令,判断整数加法指令执行是否出错
A T C H IN T _ 0,1 0 // 如果加法指令执行正确,则调用中断程序 IN T _ 0
// 中断事件号为 10
?图 5.8 与 ENO指令
?AENO指令只能在语句表中使用,将栈顶值和
ENO位的逻辑与运算,运算结果保存到栈顶。程
序如图 5.8所示。
返回本节
?第 5章 应用指令
5.2 特殊指令
5.2.1 时钟指令
5.2.2 中断
5.2.3 通信
5.2.4 高速计数
5.2.5 高速脉冲输出
5.2.6 PID回路指令
返回本章首页
?第 5章 应用指令
5.2.1 时钟指令
1,读实时时钟
TODR,读实时时钟指令。当使能输入有效时,
系统读当前时间和日期,并把它装入一个 8字节
的缓冲区。
2,写实时时钟
TODW,写实时时钟指令。用来设定实时时钟。
当使能输入有效时,系统将包含当前时间和日
期,一个 8字节的缓冲区将装入时钟。
?第 5章 应用指令
时钟缓冲区的格式如表 5.2所示。
?表 5.2 时钟缓冲区
?第 5章 应用指令
程序实例
控制要求:
编写一段程序, 可实现读, 写实时时钟, 并以 BCD码显示分钟 。 时
钟缓冲区从 VB100开始 。
程序中的子程序 SBR_0为写时钟子程序, 将当前时间写入从 VB100
开始的 8字节时间缓冲区, 时间设置如下表 5.3所示 。 程序实现:读
写时钟程序如图 5.9所示 。
?第 5章 应用指令
LD I0, 4 // 装入触点
EU // 上跳沿触发
C A L L S B R _ 0 // 调用子程序
// 子程序 S B R _ 0
// 作用为写时钟
LD S M 0, 0 // 运行有效
T O D R V B 1 0 0 // 从 V B 1 0 0
// 读时钟值
//
//
M O V B V B 1 0 4,Q B 0 // 传送指令
// 将分钟值
// 从 Q B 0 输出
?图 5.9 读写时钟
返回本节
?第 5章 应用指令
5.2.2 中断
1,中断源
( 1) 中断源及种类
中断源, 即中断事件发出中断请求的来源 。 S7-
200可编程序控制器具有最多可达 34个中断源,
每个中断源都分配一个编号用以识别, 称为中
断事件号 。 这些中断源大致分为三大类:通信
中断, 输入输出中断和时基中断 。
?第 5章 应用指令
( 2)中断优先级
中断优先级由高到低依次是:通信中断, 输入
输出中断, 时基中断 。 每种中断中的不同中断
事件又有不同的优先权 。
主机中的所有中断事件及优先级如表 5.4所示 。
?第 5章 应用指令
?表 5.4 中断事件及优先级
?第 5章 应用指令
?第 5章 应用指令
2,中断调用
即调用中断程序, 使系统对特殊的内部或外部
事件作出响应 。 系统响应中断时自动保存逻辑
堆栈, 累加器和某些特殊标志存储器位, 即保
护现场 。 中断处理完成时, 又自动恢复这些单
元原来的状态, 即恢复现场 。
( 1) 中断调用指令
( 2) 注意事项
( 3) 程序实例
?第 5章 应用指令
( 3) 程序实例
控制要求:
程序实现的功能是调
用 I0.1输入点的上升
沿中断, 若发现 I/O错
误, 则禁止本中断,
用外部条件可以禁止
全局中断 。
程序实现:本程序如
图 5.10所示 。
LD I0, 4 // 使能输入
A T CH IN T _ 1,2 // 中断调用
// 中断程序
// 为 IN T _ 1
// 事件号为 2
ENI // 全局开中断
//
LD SM 5, 0 // 检查 I/O 错
DT CH 2 // 若 I/O 有错
// 断开本中
// 断连接
LD I0, 5 // 外部条件
DI SI // 全局中断
// 禁止
?图 5.10 中断调用程序
?第 5章 应用指令
3,中断程序
( 1) 构成
中断程序必须由三部分构成:中断程序标号,
中断程序指令和无条件返回指令 。
( 2) 要求
( 3) 编制方法
( 4) 注意事项
返回本节
?第 5章 应用指令
5.2.3 通信
通信指令包括:
XMT,自由口发送指令
RCV,自由口接收指令
NETR,网络读指令
NETW,网络写指令
GPA,获取口地址指令
?第 5章 应用指令
5.2.4 高速计数
1,高速计数器介绍
2,高速计数指令
3,高速计数器的使用方法
4,应用实例
?第 5章 应用指令
1,高速计数器介绍
( 1) 数量及编号
( 2)中断事件类型
( 3)工作模式及输入点
?第 5章 应用指令
( 1) 数量及编号
高速计数器在程序中使用时的地址编号用 HCn来表示 ( 在非程序
中有时用 HSCn), HC表编程元件名称为高速计数器, n为编号 。
HCn除了表示高速计数器的编号之外, 还代表两方面的含义:高
速计数器位和高速计数器当前值 。 编程时, 从所用的指令可以看
出是位还是当前值 。
不同型号的 PLC主机, 高速计数器的数量对应如表 5.7所示 。
?第 5章 应用指令
( 2) 中断事件类型
高速计数器的计数和动作可采用中断方式进行控制, 与 CPU的扫
描周期关系不大, 各种型号的 PLC可用的高速计数器的中断事件
大致分为 3类:当前值等于预设值中断, 输入方向改变中断和外部
复位中断 。 所有高速计数器都支持当前值等于预设值中断 。
每个高速计数器的 3种中断的优先级由高到低, 不同高速计数器之
间的优先级又按编号顺序由高到低 。 具体对应关系如表 5.8所示 。
?第 5章 应用指令
( 3) 工作模式及输入点
工作模式
输入端连接
高速计数器的工作模式共有 12种 。
以模式 4为例, 时序如图 5.11所示 。
?第 5章 应用指令
A B C D E F G H I
时钟
方向
当前值
0
1
2
3
4
5
6
5
4
?图 5.11 模式 4操作时序
?第 5章 应用指令
?选用某个高速计数器在某种工作模式下工作,
高速计数器的输入端不是任意选择,必须按系
统指定的输入点。如表 5.9所示。
?第 5章 应用指令
2,高速计数指令
高速计数器指令有两条,HDEF和
HSC。
( 1) HDEF指令
HDEF,定义高速计数器指令 。 使能
输入有效时, 为指定的高速计数器分
配一种工作模式, 即用来建立高速计
数器与工作模式之间的联系 。 梯形图
指令盒中有两个数据输入端,HSC,
高速计数器编号, 为 0~5的常数, 字
节型; MODE,工作模式, 为 0~11
的常数, 字节型 。
?第 5章 应用指令
( 2) HSC指令
HSC,高速计数器指令 。 使能输
入有效时, 根据高速计数器特殊
存储器位的状态, 并按照 HDEF
指令指定的工作模式, 设置高速
计数器并控制其工作 。 梯形图指
令盒数据输入端 N:高速计数器
编号, 为 0~5的常数, 字型 。
?第 5章 应用指令
每个高速计数器都有固定的特殊功能存储器与
之相配合, 完成高速计数功能 。 具体对应关系
如表 5.11所示 。
3,高速计数器的使用方法
?第 5章 应用指令
每个高速计数器都有一个状态字节, 程序运行
时根据运行状况自动使某些位置位, 可以通过
程序来读相关位的状态, 用以作为判断条件实
现相应的操作 。 状态字节中各状态位的功能如
表 5.12所示 。
?第 5章 应用指令
( 1)选择计数器及工作模式
( 2)设置控制字节
( 3)执行 HDEF指令
( 4)设定当前值和预设值
( 5)设置中断事件并全局开中断
( 6)执行 HSC指令
使用高速计数器时,要按以下步骤进行:
?第 5章 应用指令
?表 5.13 控制位含义
?第 5章 应用指令
4,应用实例
要对一高速事件精确控制, 通过对脉冲信号进行增计数,
计数当前值达到 24产生中断, 重新从 0计数, 对中断次
数进行累计 。 计数方向用一个外部信号控制, 并能实现
外部复位 。 所用的主机型号为 CPU221。
设计步骤:
① 选择高速计数器 HSC0,并确定工作方式 4。 ② 令
SM37=16#F8 ③ 执行 HDEF指令,输入端 HSC为 0,
MODE为 4。 ④ 装入当前值,令 SMD38=0。 ⑤ 装入设定
值,令 SMD42=24。 ⑥ 执行中断连接 ATCH指令,输入
端 INT为 INT0,EVNT为 10。
?第 5章 应用指令
主程序, 初始化子程序和中断程序分别如图
5.12,图 5.13和图 5.14所示 。
LD S M 0, 1 // 初次扫描脉冲
C A L L S B R _ 1 // 调用初始化
// 子程序 S B R _ 1
//
?图 5.12 主程序
?第 5章 应用指令
LD S M 0, 0 // 运行脉冲
M O V B 1 6 # F 8,S M B3 7 //
// 设置控制字节
//
//
//
H D E F 0,4 // 定义高速
// 计数器
// 选用 H S C0
// 工作模式 4
M O V D + 0,S M D 3 8 //
// 当前值清 0
//
M O V D + 2 4,S M D 4 2 //
// 将预设值 24
// 入装 S M D 4 2
//
A T CH IN T _ 0,1 0 //
// 中断连接指令
// 中断程序为
/ / IN T _ 0
// 事件号为 10
E N I // 开全局中断
//
H S C 0 // 编程计数
// 器 H S C0
// 使设置生效
?图 5.13 初始化子程序
?第 5章 应用指令
LD S M 0, 0 // 运行
// 脉冲
IN CD V D 1 0 0 //
// 双字增指令
// 对中断次数
// 进行累计
// 存于 V D 1 0 0
M O V D + 0,S M D 3 8 //
// 将 H S C0 当
// 前值清 0
//
M O V B 1 6 # C8,S M B3 7
// 重设控制字
// 节 S M B3 7
// 不重装设
// 定值
H S C 0 // 编程 H S C0
// 使设置重新
// 生效
?图 5.14 中断程序
返回本节
?第 5章 应用指令
5.2.5 高速脉冲输出
1,高速脉冲输出介绍
( 1)高速脉冲输出的形式
( 2)输出端子的确定
( 3)相关寄存器
( 4)脉冲输出指令
?第 5章 应用指令
每个高速脉冲发生器对应一定数量特殊标志寄存器, 这
些寄存器包括控制字节寄存器, 状态字节寄存器和参数
数值寄存器, 用以控制高速脉冲的输出形式, 反映输出
状态和参数值 。 各寄存器分配如表 5.14所示 。
?第 5章 应用指令
l 状态字节
每个高速脉冲输出都有一个状态字节, 程序运行时根据
运行状况自动使某些位置位, 可以通过程序来读相关位
的状态, 用以作为判断条件实现相应的操作 。 状态字节
中各状态位的功能如表 5.15所示 。
?第 5章 应用指令
控制字节
每个高速脉冲输出都对应一个控制字节, 通过对控制字
节中指定位的编程, 可以根据操作要求设置字节中各控
制位, 如脉冲输出允许, PTO/PWM模式选择, 单段 /多
段选择, 更新方式, 时间基准, 允许更新等 。 控制字节
中各控制位的功能如表 5.16所示 。
?第 5章 应用指令
2,高速脉冲串输出 PTO
( 1) 周期和脉冲数
( 2) PTO的种类
( 3) 中断事件类型
( 4) PTO的使用
?第 5章 应用指令
( 1)周期和脉冲数
周期:单位可以是微秒 μs或毫秒 ms;为 16位
无符号数据, 周期变化范围是 50~65535μs或
2~65535ms,通常应设定周期值为偶数, 若设
置为奇数, 则会引起输出波形占空比的轻微失
真 。 如果编程时设定周期单位小于 2,系统默认
按 2进行设置 。
脉冲数:用双字长无符号数表示, 脉冲数取值
范围是 1~4294967295之间 。 如果编程时指定
脉冲数为 0,则系统默认脉冲数为 1个 。
?第 5章 应用指令
( 2) PTO的种类
PTO方式中, 如果要输出多个脉冲串, 允许脉
冲串进行排队, 形成管线, 当前输出的脉冲串
完成之后, 立即输出新脉冲串, 这保证了脉冲
串顺序输出的连续性 。
?单段管线
?多段管线
?第 5章 应用指令
包络表由包络段数和各段构成 。 每段长度为 8个
字节, 包括:脉冲周期值 ( 16位 ), 周期增量
值 ( 16位 ) 和脉冲计数值 ( 32位 ) 。 以包络 3
段的包络表为例, 包络表的结构如表 5.17所示 。
?第 5章 应用指令
( 3)中断事件类型
高速脉冲串输出可以采用中断方式进行控制,
各种型号的 PLC可用的高速脉冲串输出的中断
事件有两个, 如表 5.18所示 。
?第 5章 应用指令
( 4) PTO的使用
使用高速脉冲串输出时, 要按以下步骤进行:
? 确定脉冲发生器及工作模式
?设置控制字节
?写入周期值、周期增量值和脉冲数
?装入包络的首地址
?设置中断事件并全局开中断
?执行 PLS指令
?第 5章 应用指令
3,应用实例
( 1) 控制要求
步进电机转动过程中, 要从 A点加速到 B点
后恒速运行, 又从 C点开始减速到 D点, 完
成这一过程时用指示灯显示 。 电机的转动
受脉冲控制, A点和 D点的脉冲频率为 2kHz,
B点和 C点的频率为 10kHz,加速过程的脉
冲数为 400个, 恒速转动的脉冲数为 4000个,
减速过程脉冲数为 200个 。
工作过程如图 5.15所示 。
?第 5章 应用指令
频率 ( K H z )
10
2
时间
A
B C
D
?图 5.15 步进电机工作过程
?第 5章 应用指令
( 2) 分析
?确定脉冲发生器及工作模式
?设置控制字节
?写入周期值、周期增量值和脉冲数
?装入包络表首地址
?中断调用
?执行 PLS指令
?第 5章 应用指令
( 3) 程序实现
本控制系统主程序如下图 5.16所示 。 初始化子程序
SBR_1如图 5.17所示 。 包络表子程序如图 5.18所示 。
中断程序如图 5.19所示 。
LD S M 0, 1 // 初次扫描
R Q 0, 0,1 // 复位高速
// 脉冲,使初值
// 为低电位
C A L L S B R _ 1 // 调用初始
// 化子程序 S B R _ 1
?图 5.16 主程序
?第 5章 应用指令
LD SM 0, 0 // 运行脉冲
MOV B 1 6 # A 0,SM B6 7 //
// 设置控制字节
// 多段 P T O
// 增量单位 ms
// 允许 P T O
MOV W + 4 0 0,SM W 1 6 8 //
// 装入包络表
// 的首地址
CA LL SBR_ 0 // 调用子程
// 建立包络表
// 子程序 SBR_ 0
A T CH IN T _ 0,1 9 //
// 中断连接
// 事件号 19
//
ENI // 开全局中断
//
P L S 0 // 启动 P T O 脉冲
// 由 Q0, 0 输出
//
?图 5.17 初始化子程序 SBR_1
?第 5章 应用指令
M O V W + 1 0 0,V W 4 0 9 //
// 第 2 段周期初
// 值为 1 00 ms
//
//
M O V W 0,V W 4 1 1 //
// 第 2 段周期
// 增量为 0
M O V D + 4 0 0 0,V D 4 1 3 //
// 第 2 段脉冲数
// 为 4 0 00 个
LD S M 0, 0 // 运行脉冲
M OV B 3,V B4 0 0 //
// 定义开始字节
// 为 V B 4 0 0
// 装入段数 3
M OV W + 5 0 0,V W 4 0 1 //
// 第 1 段周期初
// 值为 5 0 0 ms
//
//
M OV W - 1,V W 4 0 3 //
// 第 1 段周期
// 增量为- 1
M OV D + 4 0 0,V D4 0 5 //
// 第 1 段脉冲数
// 为 4 0 0 个
?

5.
18





序SB
R_
0

1

?第 5章 应用指令
MOV W + 1 0 0,V W 4 1 7 //
// 第 3 段周期初
// 值为 1 00 ms
//
//
MOV W + 2,V W 4 1 9 //
// 第 3 段周期
// 增量为 + 2 m s
MOV D + 2 0 0,V D4 2 1 //
// 第 3 段脉冲数
// 为 2 00 个
?图 5.18 包络表子程序 SBR_0( 2)
LD S M 0, 0 // 运行脉冲
= Q 0,6 // 脉冲串全部输出
// 完成后将 Q 0, 6 置 1
?图 5.19 中断程序
?第 5章 应用指令
4,宽度可调脉冲输出 PWM
( 1)周期和脉冲宽度
( 2)更新方式
( 3) PWM的使用
返回本节
?第 5章 应用指令
5.2.6 PID回路指令
1,PID算法
2,PID指令
3,应用实例
?第 5章 应用指令
1,PID算法
1,PID算法
如果一个 PID回路的输出 M(t)是时间的函数, 则可以看
作是比例项, 积分项和微分项三部分之和 。 即:
?用数字计算机处理这样的控制算式,连续的算式必须周
期采样进行离散化,同时各信号也要离散化,公式如下:
?MPn=Kc*(SPn-PVn)+Kc*Ts/Ti*(SPn-PVn)+MX+Kc*Td/Ts*(PVn-1-PVn)
?第 5章 应用指令
回路表初始化
程序实例:
如果 Kc为 0.4,
Ts为 0.2秒,
Ti为 30分钟,
Td为 15分钟,
则可以建立一
个子程序
SBR0用来对
回路表进行初
始化 。 程序如
图 5.20所示 。
LD S M 0, 0 // 运行脉冲
M OV R 0, 5,V D2 0 4 //
// 开始位置
// 为 V D 2 0 0
// 在 V D 2 0 4 装
// 入设定值
M OV R 0, 4,V D2 1 2 //
// 装入回路增益
// 值为 0, 4
//
//
M OV R 0, 2,V D2 1 6 //
// 装入采样时间
// 为 0, 2 秒
M OV R 3 0, 0,V D2 2 0 //
// 装入积分时间
// 为 30 分钟
//
M OV R 1 5, 0,V D2 2 4 //
// 装入微分时间
// 为 15 分钟
?图 5.20 回路表初始化子程序 SBR0
?第 5章 应用指令
PID,PID回路指令 。 使能输入有效时, 该
指令利用回路表中的输入信息和组态信息,
进行 PID运算 。 梯形图的指令盒中有 2个数
据输入端,TBL,回路表的起始地址, 是
由 VB指定的字节型数据; LOOP,回路号,
是 0~7的常数 。
指令影响的特殊标志存储器位,SM1.1
( 溢出 ) 。
使能流输出 ENO断开的出错条件,SM1.1
( 溢出 ) ; SM4.3( 运行时间 ) ; 0006
( 间接寻址 ) 。
指令格式,PID TBL,LOOP
2,PID指令
?第 5章 应用指令
3,应用实例
( 1) 控制要求
有一水箱有一条进水管和一条出水管, 进水管的水流量随时间不
断变化, 要求控制出水管阀门的开度, 使水箱内的液位始终保持
在水满时液位的一半 。 系统使用比例积分微分控制, 假设采用下
列控制参数值,Kc为 0.4,Ts为 0.2秒, Ti为 30分钟, Td为 15分钟 。
( 2) 分析
本系统标准化时可采用单极性方案, 系统的输入来自液位计的液
位测量采样;设定值是液位的 50%,输出是单极性模拟量用以控
制阀门的开度, 可以在 0%~100%之间变化 。
( 3) 程序实现
本程序的主程序如图 5.21所示, 回路表初始化子程序 SBR0如图
5.22所示, 中断程序 INT0如图 5.23所示 。
?第 5章 应用指令
LD S M 0, 1 // 初次扫描
CA L L S BR_ 0 // 调用建立
// 回路表子程序
CA L L S BR_ 1 // 调用初始
// 化子程序
?图 5.21 主程序
LD S M 0, 0 // 运行脉冲
M O V B 2 0 0,S M B3 4 //
// 设置定时
// 中断 0 发生的
// 时间间隔为
// 2 0 0 m s
A T CH IN T _ 0,1 0 //
// 中断连接
// 事件为定时
// 中断 0
E N I // 开全局中断
?

5.
22





序SB
R
1
?第 5章 应用指令
?

5.
23




序INT
0

1

?第 5章 应用指令
?图 5.23 中断子程序 INT0( 2)
返回本节
?第 5章 应用指令
THANK YOU VERY MUCH !
本章到此结束,
谢谢您的光临!
返回本章首页结 束