S7 300 教程
S7-300/400 的基本结构
S7-300/400 属于模块式 PLC,主要由机架,CPU 模块、信号模块、
功能模块、接口模块、通信处理器,电源模块和编程设备组成。
输出模块
CPU模块输入模块通信接口按 钮选择开关限位开关电 源通信网络
接触器电磁阀指示灯电 源
~
接口模块
扩展机架
计算机
其他设备
电源模块
其他PLC
图 1-1 PLC 控制系统示意图
PLC 的主要生产厂家,德国的西门子 (Siemens)公司,美国 Rockwell
公司所属的 AB 公司,GE-Fanuc 公司,法国的施耐德 (Schneider)公司,
日本的三菱和欧姆龙 (OMRON)公司。
西门子自动化与驱动集团的中文网站,www.ad.siemens.com.cn。
在该网站主页点击“中文下载目录”,,英文下载资料”或“软件下载目录”,进入“下载中心”后,可以下载各种工控产品的中英文说明书、使用手册、产品介绍和一些软件。
如果需要更多的资料和软件,可 以访问西门子在德国的网站,网址为 http://www.ad.siemens.de/。点击,English”将语言由德文改为英文,点击,Service & Support”,在,Document type” 下面点击,Manual”,
在,Please Type Your Question”下面的方框内输入要搜索的手册的关键字,例如,CP 5511”,按,GO”按钮,就会列出与 CP 5511 有关的手册。点击感兴趣的手册,在出现的画面中点击,Download”,可以下载该手册。
PLC 的工作过程
图1-2 基本逻辑运算与或非
&
( b )
( c )
( a )
I0.0 I0.1
I0.2
I0.3
I0.4
Q4.0
Q4.1 Q4.2
Q4.2Q4.1Q4.0
I0.0
I0.1
I0.2
I0.3
I0.4
>=1
表 1-1 逻辑运算关系表
与 或 非
Q4.0=I0.0*
I0.1
Q4.1 =
I0.2+I0.3
Q4.2
=/I0.4
I0.
0
I0.
1
Q4.
0
I0.
2
I0.
3
Q4.
1
I0.
4
Q4.
2
0 0 0 0 0 0 0 1
0 1 0 0 1 1 1 0
1 0 0 1 0 1
1 1 1 1 1 1
PLC 采用循环执行用户程序的方式。 OB1 是用于循环处理的组织块(主程序),它可以调用别的逻辑块,或被中断程序(组织块)中断。
在起动完成后,不断地循环调用 OB1,在 OB1 中可以调用其它逻辑块 (FB,SFB,FC 或 SFC)。
循环程序处理过程可以被某些事件中断。
在循环程序处理过程中,CPU 并不直接访问 I/O 模块中的输入地址区和输出地址区,而是访问 CPU 内部的输入 /输出过程映像区。批量输入、批量输出。
图1-4 扫描过程
数据写入输出模块读取输入模块状态执行其他任务执行用户程序起动循环时间监控
执行 OB100
梯形图中 Q4.0 的线圈“通电”时,对应的输出过程映像位为 1 状态。信号经输出模块隔离和功率放大 后,继电器型输出模块中对应的硬件继电器的线圈通电,其常开触点 闭合,使外部负载通电工作。
外部输入电路接通时,对应的输入过程映像位 (例如 I0.0)为 1状态,
梯形图中对应的输入位的常开触点接通,常闭触点断开。
某一编程元件对应的过程映像位为 1 状态时,称该编程元件为
ON,过程映像位为 0 状态时,称该编程元件为 OFF。
循环时间( Cycle time)是指操作系统执行一次图 1-4 所示的循环操作所需的时间,又称为扫描循环时间( Scan Cycle Time)或扫描周期。
KM
KM SB1
SB2
KM
~380V
SB1
SB2
KM
~
380V
M
图1-3 异步电动机控制电路
FR
FR
输入映像寄存器输出映像寄存器图1-5 PLC外部接线图与梯形图
停止起动
SB1
SB2
I0.1
I0.2
1L
Q4.0
KM
AC 220V I0.1
I0.2
Q4.0
I0.2
I0.1
Q4.0
t1
I0.1 I0.2
Q4.0
Q4.0
FR
M
DC 24V
A(
O I0.1 // 接在左侧母线上的 I0.1 的常开触点
O Q4.0 // 与 I0.1的常开触点并联的 Q4.0的常开触点
)
AN I0.2 // 与并联电路串联的 I0.2 的常闭触点
= Q4.0 // Q4.0 的线圈
梯形图对应的逻辑表达式,Q4.0 = (I0.1+Q4.0)
2.0I?
西门子 PLC 的分类
1,S7 系列:传统意义的 PLC 产品,S7-200 是针对低性能要求的小型 PLC。 S7-300 是模块式中小型 PLC,最多可以扩展 32 个模块。
S7-400 是大型 PLC,可以扩展 300 多个模块。 S7-300/400 可以组成
MPI,PROFIBUS 和工业以太网等。
2,M7-300/400:采用与 S7-300/400 相同的结构,它可以作为 CPU
或功能模块使用。具有 AT 兼容计算机的功能,可以用 C,C++或
CFC 等语言来编程。
3,C7 由 S7-300 PLC,HMI(人机接口)操作面板,I/O、通信和过程监控系统组成。
4,WinAC 基于 Windows 和标准的接口 (ActiveX,OPC),提供软件 PLC 或插槽 PLC。
S7-300 系列 PLC 简介
S7-300 的 CPU 模块(简称为 CPU)都有一个编程用的 RS-485 接口,有的有 PROFIBUS-DP 接口或 PtP 串行通信接口,可以建立一个
MPI(多点接口)网络或 DP 网络。
32 4 7 8 9
156
1.电源模块 2.后备电池 3,24V DC 连接器 4.模式开关 5.状态和故障指示灯
6.存储器卡 (CPU 313 以上 ) 7,MPI多点接口 8.前连接器
9.前盖
图 2-2 S7-300 PLC
功能最强的 CPU 的 RAM 为 512KB,最大 8192 个存储器位,512
个定时器和 512 个计数器,数字量最大 65536,模拟量通道最大为
4096。有 350 多条指令。
计数器的计数范围为 1~ 999,定时器的定时范围为 10ms~ 9990s。
图 2-3 S7-300 的安装
电源模块 CPU 模块
IM
IM
IM
槽号
1
2
345
1
67 8
1
910
机架 0
机架 1
机架 2
34 5 6 7 8 9 10
345678910
槽号槽号电源模块电源模块中央机架扩展机架扩展机架
11
11
11
图 2-4 多机架的 S7-300 PLC
只需要扩展一个机架,可以使用价格便宜的 IM 365 接口模块对。
数字量模块从 0 号机架的 4 号槽开始,每个槽位分配 4 个字节的地址,32 个 I/O 点。
模拟量模块一个通道占一个字地址。从 IB256 开始,给每一个模拟量模块分配 8 个字。
1.模块诊断功能
可以诊断出以下故障:失压,熔断器熔断,看门狗故障,EPROM、
RAM 故障。
模拟量模块共模故障、组态 /参数错误、断线、上下溢出。
2.过程中断
数字量输入信号上升沿、下降沿中断,模拟量输入超限,CPU 暂停当前程序,处理 OB40。
1.状态与故障显示 LED
SF(系统出错 /故障显示,红色),CPU 硬件故障或软件错误时亮。
BATF(电池故障,红色):电池电压低或没有电池时亮。
DC 5V(+ 5V 电源指示,绿色),5V 电源正常时亮。
FRCE(强制,黄色):至少有一个 I/O 被强制时亮。
RUN(运行方式,绿色),CPU 处于 RUN 状态时亮;重新启动时以 2 Hz 的频率闪亮; HOLD(单步、断点)状态时以 0.5Hz 的频率闪亮。
STOP(停止方式,黄色),CPU 处于 STOP,HOLD 状态或重新启动时常亮。
BUSF(总线错误,红色)。
SF
BATF
DC 5V
FRCE
RAN
STOP
SF DP
BASF
RAN-P
RAN
STOP
MRES
存储器卡插槽多点接口
(MPI)
PROFIBUS-DP
接口状态与故障 LED
模式选择器后备电池电源与系统接地端子
图 2-5 CPU 318-2 的面板
2.模式选择开关
( 1) RUN-P(运行 -编程 )位置,运行时还可以读出和修改用户程序,
改变运行方式。
( 2) RUN (运行 )位置,CPU 执行、读出用户程序,但是不能修改用户程序。
( 3) STOP(停止)位置:不执行用户程序,可以读出和修改用户程序。
( 4) MRES(清除存储器):不能保持。将钥匙开关从 STOP 状态搬到 MRES 位置,可复位存储器,使 CPU 回到初始状态。
复位存储器操作:通电后从 STOP 位置扳到 MRES 位置,,STOP”
LED 熄灭 1s,亮 1s,再熄灭 1s 后保持亮。放开开关,使它回到 STOP
位置,然后又回到 MRES,,STOP” LED 以 2Hz 的频率至少闪动 3s,
表示正在执行复位,最后,STOP” LED 一直亮。
某些 CPU 模块上有集成 I/O。
PLC 使用的物理存储器,RAM,ROM,快闪存储器( Flash EPROM)
和 EEPROM。
S7-300 CPU 的分类
1,紧凑型 CPU,CPU 312C,313C,313C-PtP,313C-2DP,314C-PtP
和 314C-2DP。各 CPU 均有计数、频率测量和脉冲宽度调制功能。有的有定位功能,有的带有 I/O。
2,标准型 CPU,CPU 312,CPU 313,314,315,315-2DP 和 316-2DP。
3.户外型 CPU,CPU 312 IFM,314 IFM,314 户外型和 315-2DP。
在恶劣的环境下使用。
4.高端 CPU,317-2DP 和 CPU 318-2DP。
5.故障安全型 CPU,CPU 315F。
S7-300 的输入 /输出模块
输入 /输出模块统称为信号模块 (SM)。
前连接器插在前盖后面的凹槽内。一 个编码元件与之啮合,该连接器只能插入同类模块。
图2-7 数字量输入模块
背板总线接口
M
M
24V
null
背板总线接口
N
null
~
图2-8 数字量输入模块
null
null
null
两线式接近开关的漏电流小于输入模块允许的静态电流,汇点输入的电流流进输入模块,反之为源输入电路。
~
负载
PLC
1L
M
背板总线接口图2-10 数字量输出模块
~
负载
L+
M
背板总线接口图2-9 数字量输出模块
M
null
null
null
null
null
null
null
null
负载
1L+
背板总线接口图2-11 数字量输出模块
DC 24V
1M
null
M
null
null
SM323 是 S7-300 的数字量输入输出模块,8DI/8DO,16DI/16DO。
ADC 逻辑光电隔离内部电源多路开关背板总
null
CH0
CH1
CH6
CH7
图2-12 模拟量输入模块
线接口
L+
M
24V
M
ANA
表 2-13 SM331 模拟量输入模块的模拟值
双极性 范围
百分比 十进制 十六进制 ± 5V ± 10 V ± 20 mA
上溢出 118.515% 32767 7FFFH 5.926 V 11.851V 23.70 mA
超出范围
117.589% 32511 7EFFH 5.879 V 11.759V 23.52 mA
100.000% 27648 6C00H 5V 10 V 20 mA
0 % 0 0H 0V 0 V 0mA
正常范围
-100.000% - 27648 9400H -5V - 10 V -20 mA
低于范围 -117.593% - 32512 8100H -5.879 V - 11.759 V -23.52 mA
下溢出 -118.519% - 32768 8000H -5.926 V - 11.851 V -23.70 mA
单极性
范围 百分比 十进制 十六进制 0~10 V 0~20 mA 4~20 mA
上溢出 118.515% 32767 7FFFH 11.852 V 23.70 mA 22.96mA
超出范围
117.589% 32511 7EFFH 11.759 V 23.52 mA 22.81mA
100.000% 27648 6C00H 10 V 20 mA 20 mA 正常范围
0 % 0 0H 0 V 0 mA 4 mA
低于范围 - 17.593 % - 4864 ED00H - 3.52 mA 1.185mA
模拟值的精度小于 15 位,则模拟值左移,左对齐。
【例 2-2】 压力变送器的量程为 0~ 10MPa,输出信号为 4~ 20mA,
模拟量输入模块的量程为 4~ 20mA,转换后的数字量为 0~ 27 648,
设转换后得到的数字为 N,试求以 kPa 为单位的压力值。
解,0~ 10MPa(0~ 10 000kPa)对应于转换后的数字 0~ 27 648,转换公式为
P = 10 000 × N / 27 648 ( kPa)
注意在运算时一定要先乘后除,否则 可能会损失原始数据的精度。
图 2-13 量程卡
【例 2-3】 某发电机的电压互感器的变比为 10kV/100V(线电压),
电流互感器的变比为 1000A/5A,功率变送器的额定输入电压和额定输入电流分别为 AC 100V 和 5A,额定输出电压为 DC ±10V,模拟量输入模块将 DC ±10V 输入信号转换为数字 +27648 和 -27649。设转换后得到的数字为 N,求以 kW 为单位的有功功率值。
解:根据互感器额定值计算的原边有功功率额定值为
)kW(17321)W(173210001000100003 ==××
由以上关系不难推算出互感器原 边的有功功率与转换后的数字之间的关系为 17321/ 27648 = 0.62648 kW / 字。转换后的数字为 N 时,
对应的有功功率为 0.6265 N (kW),如果以 kW 为单位显示功率 P,使用定点数运算时的计算公式为
P = N × 6 265 / 10 000 ( kW)
【例 2-4】用于测量锅炉炉膛压力(?60 Pa~ 60 Pa)的变送器的输出信号为 4~ 20mA,模拟量输入模块将 0~ 20mA 转换为数字 0~ 27
648,设转换后得到的数字为 N,试求以 0.1Pa 为单位的压力值。
解,4~ 20mA 的模拟量对应于数字量 5 530~ 2 7648,即?600~ 600
( 0.1Pa)对应于数字量 5 530~ 27 648,压力的计算公式应为
DAC
光电隔离内部电源背板总
L+
M
24V
CH0
图2-14 模拟量输出模块
CH1
线接口
QI
M
ANA
0+
0-
S
S
0
QV
0
M
ANA
QI
M
ANA
1+
1-
S
S
1
QV
1
M
ANA
电流输出 电压输出
1,EX 系列数字量模拟量输入 /输出模块
EX 模块在化工等行业使用。将外部的本质 -安全设备(用于有爆炸危险区域的传感器和执行器)与 PLC 非本质 -安全内部回路隔离。
2,F 系列数字量模拟量输入 /输出模块
这些模块具有故障安全运行的集成安全功能,在 ET 200M 分布式
I/O 或 S7-300F 中使用。用于连接有爆炸危险区域的设备。
S7-300 的功能模块
1.计数器模块
)Pa1.0(600)5530(
22118
1200
600)5530(
)553027648(
1200
=
= NNP
模块的计数器均为 0~ 32 位或 ±31 位加减计数器,可以判断脉冲的方向,模块给编码器供电。达到比较值时发出中断。可以 2 倍频和
4 倍频计数。有集成的 DI/DO。
FM 350-1 是单通道计数器模块,可以检测最高达 500kHz 的脉冲,
有连续计数,单向计数,循环计数 3 种工作模式。 FM 350-2 和 CM 35
都是 8 通道智能型计数器模块。
2.位置控制与位置检测模块
FM 351 双通道定位模块用于控制变级调速电动机或变频器。 FM
353 是步进电机定位模块。 FM 354 伺服电机定位模块。 FM 357 可以用于最多 4 个插补轴的协同定位。 FM 352 高速电子凸轮控制器,它有 32 个凸轮轨迹,13 个集成的 DO,采用增量式编码器或绝对式编码器。
SM 338 超声波传感器检测位置,无磨损、保护等级高、精度稳定不变。
3.闭环控制模块
FM 355 闭环控制模块有 4 个闭环控制通道,有自优化温度控制算法和 PID 算法。
4.称重模块
SIWAREX U 称重模块是紧凑型电子称,测定料仓和贮斗的料位,
对吊车载荷进行监控,对传送带载荷 进行测量或对工业提升机、轧机超载进行安全防护等。
SIWAREX M 称重模块是有校验能力的电子称重和配料单元,可以组成多料称系统,安装在易爆区域。
5.电源模块
PS 307 电源模块将 120/230 伏交流电压转换为 24V 直流电压,为
S7-300/400、传感器和执行器供电。输出电流有 2A,5A 或 10A 3 种。
电源模块安装在 DIN 导轨上的插槽 1。
接地母线
RUN
RUN-P
STOP
MRES
M
L+
M
M
L+
M
1M <100nF
参考电位
图 2-17 S7-300 的浮动参考电位
某些大型工厂(例如化工厂和发电厂)为了监视对地的短路电流,
可能采用浮动参考电位,可以将 M 点与接地点之间的短接片去掉。
2.5 S7-400 系列 PLC 的硬件组成
模块的尺寸为 25(宽 )× 290(高 )× 210(深 )mm。
I/O模块CPU电源 机架图 2-18 S7-400模块式 PLC
图 2-15 S7-400 PLC
I
M
6
I
M
5
I
M
4
I
M
3
I
M
2
I
M
1
P
S
C
P
U
I
M
I/O
I
M
I/O
I
M
I/O
I
M
I/O
I
M
I/O
I
M
I/O
CP,FM
CP,FM
… …

图2-16 S7-400的多机架连接
CC
EU
EU
集中式扩展方式适用于小型配置或一个控制柜中的系统。 CC 和
EU 的最大距离为 1.5m(带 5V 电源)或 3m(不带 5V 电源)。
分布式扩展适用于分布范围广的场合,CC 与最后一个 EU 的最大距离为 100m( S7 EU)或 600m( S5 EU)。
用 ET 200 分布式 I/O 可以进行远程扩展,用于分布范围很广的系统。通过 CPU 中的 PROFIBUS-DP 接口,最多连接 125 个总线节点。
使用光缆时 CC 和最后一个节点的距离为 23km。
2,S7-400 的特点
( 1)运行速度高,S7 416 执行一条二进制指令只要 0.08μs。
( 2)存储器容量大,例如 CPU 417-4 的 RAM 可以扩展到 16MB,
装载存储器( FEPROM 或 RAM)可以扩展到 64MB。
( 3) I/O 扩展功能强,可以扩展 21 个机架,S7 417-4 最多可以扩展 262144 个数字量 I/O 点和 16384 个模拟量 I/O。
( 4)有极强的通信能力,集成的 MPI 能建立最多 32 个站的简单网络。大多数 CPU 集成有 PROFIBUS-DP 主站接口,用来建立高速的分布式系统,通信速率最高 12M bit/s。
( 7)集成的 HMI 服务,只需要为 HMI 服务定义源和目的地址,
自动传送信息。
2.5.2 机架与接口模块
( 1)通用机架 UR1/UR2
( 2)中央机架,CR2 是 18 槽,一个电源模块和两个 CPU 模块。
CR3 是 4 槽的中央机架,有 I/O 总线和通信总线。
K bus K bus
P bus P busP bus 1 P bus 2
UR1/UR2 CR2 ER1/ER2
图 2-17 机架与总线
( 3)扩展机架 ER1/ER2
ER1 和 ER2 是扩展机架,分别有 18 槽和 9 槽,只有 I/O 总线。
( 4) UR2-H 机架
UR2-H 机架用于在一个机架上配置一个完整的 S7-400H 冗余系统,每个均有自己的 I/O。两个电源模块和两个冗余 CPU 模块。
2.5.3 S7-400 的通信功能
MPI,PROFIBUS-DP、工业以太网或 AS-i 现场总线,周期性自动交换 I/O 模块的数据。或基于事件驱动,由用户程序块调用。
2.5.4 冗余设计的容错自动化系统 S7-400H
ET 200M
PROFIBUS-DP
Rack 0 Rack 1
图 2-21 冗余控制系统
S7 Software Redundancy(软件冗余性)可选软件在 S7-300 和
S7-400 标准系统上运行。生产过程出现故障时,在几秒内切换到替代系统。
S7-400H 主要器件都是双重的,CPU,电源模块以及连接两个 CPU
的硬件……
使用分为两个区(每个区 9 个槽)的机架 UR2H,或两个独立的
UR1/UR2。 CPU 414-4H 或 CPU 417-4H,一块 PS 407 电源模块。同步子模块用于连接两个 CPU,由光缆互连。
每个 CC 上有 S7 I/O 模块,也可以有扩展机架或 ET 200M 分布式
I/O。中央功能总是冗余配置的,I/O 模块可以是常规配置、切换型配置或冗余配置。可以采用冗余供电的方式。
S7-400H 可以使用系统总线或点对点通信,支持 PROFIBUS 或工业以太网的容错通信。
3,S7-400H 冗余控制 PLC 的工作原理
S7-400H 采用“热备用”模式的主动冗余原理,在发生故障时,
无扰动地自动切换。
两个控制器使用相同的用户程序,接收相同的数据,两个控制器同步地更新内容,任意一个子系统有故障时,另一个承担全部控制任务。
2.5.5 安全型自动化系统 S7-400F/FH
( 1) S7-400F:安全型自动化系统,出现故障时转为安全状态,
并执行中断。
( 2) S7-400FH:安全及容错自动化系统,如果系统出现故障,生产过程能继续执行。
S7-400F/FH 使用标准模块和安全型模块,整个工厂用相同的标准工具软件来配置和编程。
PRFISafe PROFIBUS 规范允许安全型功能的数据和标准报文帧一起传送。
2.5.6 多 CPU 处理
S7-400 中央机架上最多 4 个具有多 CPU 处理能力的 CPU 同时运行。这些 CPU 自动地、同步地变换其运行模式。
适用场合:程序太长,存储空间不够,系统可以分。通过通信总线,CPU 彼此互连。
2.5.9 输入 /输出模块
S7-400 的信号模块地址是在 STEP 7 中自动生成的。用户可以修改。
S7-400 的模拟量模块起始地址从 512 开始,同类模块的地址按顺序连续排列。
表 2-5 模块地址举例
0 号机架 1号机架
槽号
模块种类 地址 槽号
模块种类
地址
1 1 32 点 DI IB4~ IB7
2
PS 417 10A 电源模块
2 16点 DO QB2,QB3
3 CPU 412-2DP 3 16点 DO QB4,QB5
4 16 点 DO QB0,QB1 4 8 点 AO QW528 ~
QW542
5 16 点 DI IB0,IB1 5 8 点 AI IW544 ~
IW558
6 8 点 AO QW512 ~
QW526
6 16点 DO QB6,QB7
7 16 点 AI IW512 ~
IW542
7 8 点 AI IW560 ~
IW574
8 16 点 DI IB2,IB3 8 32 点 DI IB8~ IB11
9 IM460-1 4093 9 IM461-0 4092
表 2-6 S7-300 与 S7-400 性能比较接近的功能模块
功能模块 S7-300 系列 S7-400 系列
计数器模块 FM 350-1 FM 450-1
定位模块 FM 351,双通道 FM 451,3 通道
定位模块 FM 353,双通道 FM 453,3 通道
电子凸轮控制器
FM 352,13 个数字量输出
FM 452,16 个数字量输出
闭环控制模块 FM 355,4 通道 FM 455,16 通道
2.6 ET 200 分布式 I/O
基于 PROFIBUS-DP 现场总线的分布式 I/O。 I/O 传送信号到 CPU
只需 ms 级。
只需要很小的空间,能在非常严酷的环境(例如酷热、严寒、强压、潮湿或多粉尘)中使用。
( 1)电机启动器:异步电机的单向或可逆启动,7.5kW,最大电流 40A,一个站可以带 6 个电机启动器。
( 2)气动系统,ET 200X 用于阀门控制。
( 3)变频器
( 4)智能传感器:光电式编码器或光电开关等与使用 ET 200S 进行通信。
( 5)安全技术:在冗余设计 的容错控制系统或安全自动化系统中使用。 包括紧急断开开关,安全门的监控以及众多与安全有关的电路。
有 ET 200S 故障防止模块、故障防止 CPU 和 PROFISafe 协议。
2.6.2 ET 200 的分类
(1) ET 200S 是分布式 I/O 系统。
(2) ET 200M 是模块化的分布式 I/O,采用 S7-300 全系列模块,
最多 8 个模块。
ET 200M 户外型温度范围 -25°C 到 +60°C。
(3) ET 200is 是本质安全系统,适用于有爆炸危险的区域。
(4) ET 200X,IP65/67 的分布式 I/O,相当于 CPU 314,可用于有粉末和水流喷溅的场合。
(5) ET 200eco 是经济实用的 I/O,IP67。
(6) ET 200R 适用于机器人,能抗焊接火花的飞溅。
(7) ET 200L 是小巧经济的分布式 I/O,像明信片大小的 I/O 模块。
(8) ET 200B:整体式的一体化分布式 I/O。
3 S7-300/400 的编程语言与指令系统
3.1 S7-300/400 的编程语言
3.1.1 PLC 编程语言的国际标准
IEC 61131 是 PLC 的国际标准,1992~ 1995 年发布了 IEC 61131
标准中的 1 ~ 4 部分,我国在 1995 年 11 月发布了 GB/T
15969-1/2/3/4(等同于 IEC 61131-1/2/3/4)。
IEC 61131-3 广泛地应用 PLC,DCS 和工控机,“软件 PLC”,
数控系统,RTU 等产品。
定义了 5 种编程语言
1) 指令表 IL(Instruction list):西门子称为语句表 STL。
2) 结构文本 ST(Structured text):西门子称为结构化控制语言
( SCL) 。
3) 梯形图 LD(Ladder diagram):西门子简称为 LAD。
4) 功能块图 FBD (Function block diagram):标准中称为功能方框图语言。
5) 顺序功能图 SFC(Sequential function chart):对应于西门子的 S7
Graph。
图3-1 PLC的编程语言顺序功能图梯形图 功能块图 指令表 结构文本
3.1.2 STEP 7 中的编程语言
梯形图、语句表和功能块图是 3 种基本编程语言,可以相互转换。
1.顺序功能图 (SFC),STEP 7 中的 S7 Graph
2.梯形图 (LAD)
直观易懂,适合于数字量逻辑控制。,能流” (Power flow)与程序执行的方向。
3,语句表 (STL),功能比梯形图或功能块图强。
4.功能块图 (FBD):,LOGO!,系列微型 PLC 使用功能块图编程。
5.结构文本 (ST),STEP 7 的 S7 SCL(结构化控制语言)符合 EN
61131-3 标准。
SCL 适合于复杂的公式计算、复杂的计算任务和最优化算法,或管理大量的数据等。
6,S7 HiGraph 编程语言
图形编程语言 S7 HiGraph 属于可选软件包,它用状态图( state
graphs)来描述异步、非顺序过程的编程语言。
7,S7 CFC 编程语言
可选软件包 CFC( Continuous Function Chart,连续功能图)用图形方式连接程序库中以块的形式提供的各种功能。
8.编程语言的相互转换与选用
在 STEP 7 编程软件中,如果程序块没有错误,并且被正确地划分为网络,在梯形图、功能块图和语句表之间可以转换。如果部分网络不能转换,则用语句表表示。
语句表可供喜欢用汇编语言编程的用户使用。语句表的输入快,
可以在每条语句后面加上注释。设计高级应用程序时建议使用语句表。
梯形图适合于熟悉继电器电路的 人员使用。设计复杂的触点电路时最好用梯形图。
功能块图适合于熟悉数字电路的人使用。
S7 SCL 编程语言适合于熟悉高级编程语言(例如 PASCAL 或 C
语言)的人使用。
S7 Graph,HiGraph 和 CFC 可供有技术背景,但是没有 PLC 编程经验的用户使用。 S7 Graph 对顺序控制过程的编程非常方便,HiGraph
适合于异步非顺序过程的编程,CFC 适合于连续过程控制的编程。
3.2 S7-300/400 CPU 的存储区
3.2.1 数制
1.二进制数
二进制数的 1 位( bit)只能取 0 和 1 这两个不同的值,用来表示开关量的两种不同的状态。该位的值与线圈、触点的关系。 ON/OFF,
TURE/FALSE。二进制常数,2#1111_0110_1001_0001。
2.十六进制数
十六进制的 16 个数字是 0~ 9 和 A~ F,每个占二进制数的 4 位。
B#16#,W#16#,DW#16#,W#16#13AF( 13AFH) 。逢 16 进 1,例如 B#16#3C= 3× 16+ 12= 60。
3,BCD 码
BCD 码用 4 位二进制数表示一位十进制数,十进制数 9 对应的二进制数为 1001。
最高 4 位用来表示符号,16/32 位 BCD 码的范围。 BCD 码实际上是十六进制数,但是各位之间逢十进一。 296 对应的 BCD 码为
W#16#296,或 2#0000 0010 1001 0110。
2#0000 0001 0010 1000 对应的十进制数也是 296,对应的十进制数为
296832562222
358
=++=++ 。
3.2.2 基本数据类型
图3-5 位数据的存放
01234567
IB1
IB2
IB3
IB4
IB5
IB0
LSBMSB
1.位( bit),位数据的数据类型为 BOOL(布尔)型。 I3.2 的意义。
2.字节( Byte)
3,字 (Word)表示无符号数。 取值范围为 W#16#0000~ W#16#FFFF。
4,双字 ( Double Word) 表示无符号数。 范围 DW#16#0000_0000~
DW#16#FFFF_FFFF。
5,16 位整数( INT,Integer)是有符号数,补码。最高位为符号位,为 0 时为正数,取值范围为?32 768~ 32 767。
6,32 位整数( DINT,Double Integer)最高位为符号位,取值范围为
2 147 483 648~ 2 147 483 647。
低有效字节最高有效字节最低有效字节高有效字节
MB100 MB100 MB101
MB100 MB101 MB102 MB103
LSBLSB
LSB
MSBMSB
MSB
0
0
015
31
7
( c ) MD100
( b ) MW100( a ) MB100
图 3-6 字节、字和双字
7,32 位浮点数
浮点数又称实数( REAL),表示为 1.m ×
E
2,例如 123.4 可表示为
1.234 ×
2
10 。根据 ANSI/IEEE 标准
浮点数= 1.m ×
e
2
式中指数 e = E +127( 1 ≤?e ≤?254),为 8 位正整数。
ANSI/IEEE 标准浮点数占用一个双字( 32 位) 。
因为规定尾数的整数部分总是为 1,只保留尾数的小数部分 m( 0~
22 位) 。浮点数的表示范围为± 1.175495 ×
38
10
~± 3.402 823 × 10
38

012345678910111213141516171819202122232425262728293031
指数e 尾数的小数部分符号位
m
图 3-7 浮点数的结构
用很小的存储空间( 4 个字节)可以表示非常大和非常小的数。
PLC 输入和输出的数值大多是整数,浮点数的运算速度比整数运算的慢。
L#为 32 位双整数常数,例如 L# +5。
P#为地址指针常数,例如 P#M2.0 是 M2.0 的地址。
S5T#是 16 位 S5 时间常数,格式为 S5T#aD_bH_cM_dS_eMS。
S5T#4S30MS = 4s30ms,取值范围为 S5T#0~ S5T#2H_46M_30S_0MS
( 9990s),时间增量为 10ms。
C#为计数器常数( BCD 码),例如 C#250。 8 位 ASCII 字符用单引号表示,例如 ‘ABC’。
T# 为带符号的 32 位 IEC 时间常数,例如
T#1D_12H_30M_0S_250MS,时间增量为 1ms。
DATE 是 IEC 日期常数,例如 D#2004-1-15。取值范围为
D#1990-1-1~ D#2168-12-31。
TOD#是 32 位实时时间( Time of day)常数,时间增量为 1ms,
例如 TOD#23:50:45.300。
B( b1,b2) B( b1,b2,b3,b4)用来表示 2 个字节或 4 个字节常数。
3.2.3 复合数据类型与参数类型
1.复合数据类型
通过组合基本数据类型和复合数据类型可以生成下面的数据类型,
(1) 数组( ARRAY)将一组同一类型的数据组合在一起,形成一个单元。
(2) 结构( STRUCT)将一组不同类型的数据组合在一起,形成一个单元。
(3) 字符串( STRING)是最多有 254 个字符( CHAR)的一维数组。
(4) 日期和时间( DATE_AND_TIME)用于存储年、月、日、时、
分、秒、毫秒和星期,占用 8 个字节,用 BCD 格式保存。星期天的代码为 1,星期一~星期六的代码为 2~ 7。
例如 DT#2004-07-15-12:30:15.200 为 2004 年 7 月 15 日 12 时 30
分 15.2 秒。
(5) 用户定义的数据类型 UDT (user-defined data types)。
在数据块 DB 和逻辑块的变量声明表中定义复合数据类型。
2.参数类型
为在逻辑块之间传递参数的形参( formal parameter,形式参数)
定义的数据类型,
(1) TIMER(定时器)和 COUNTER(计数器),对应的实参( actual
parameter,实际参数)应为定时器或计数器的编号,例如 T3,C21。
(2) BLOCK(块),指定一个块用作输入和输出,实参应为同类型的块。
(3) POINTER(指针),指针用地址作为实参。例如 P#M50.0。
(3) ANY,用于实参的数据类型未知或实 参可以使用任意数据类型的情况,占 10 个字节。
3.2.5 系统存储器
1.过程映像输入 /输出( I/Q)
在扫描循环开始时,CPU 读取数字量输入模块的输入信号的状态,
并将它们存入过程映像输入( process image input,PII)中。
在扫描循环中,用户程序计算输 出值,并将它们存入过程映像输出表( process image output,PIQ)。在循环扫描结束时将过程映像输出表的内容写入数字量输出模块。
I 和 Q 均以按位、字节、字和双字来存取,例如 I0.0,IB0,IW0 和
ID0。
与直接访问 I/O 模块相比的优缺点。
2.内部存储器标志位( M)存储器区
3.定时器( T)存储器区
时间值可以用二进制或 BCD 码方式读取。
4.计数器( C)存储器区
计数值( 0~ 999)可以用二进制或 BCD 码方式读取。
5.共享数据块( DB)与背景数据块( DI)
DB 为共享数据块,DBX2.3,DBB5,DBW10 和 DBD12。
DI 为背景数据块,DIX,DIB,DIW 和 DID。
6.外设 I/O 区( PI/PO)
外设输入( PI)和外设输出( PQ)区允许直接访问本地的和分布式的输入模块和输出模块。可以按字节( PIB 或 PQB),字( PIW 或
PQW)或双字( PID 或 PQD)存取,不能以位为单位存取 PI 和 PO。
3.2.6 CPU 中的寄存器
1.累加器( ACCUx)
累加器用于处理字节、字或双字的寄存器。 S7-300 有两个 32 位累加器 ( ACCU1 和 ACCU2),S7-400 有 4 个累加器 ( ACCU1~ ACCU4) 。
数据放在累加器的低端(右对齐) 。
2.状态字寄存器( 16 位)
首次检测位 /FC,逻辑运算结果( RLO) ;
状态位 STA 不能用指令检测;
OR 位暂存逻辑“与”的操作结果(先与后或) ;
算术运算或比较指令执行时出现错误,溢出位 OV 被置 1。
OV 位被置 1 时溢出状态保持位 OS 位也被置 1,OV 位被清 0 时
OS 仍保持为 1,用于指明前面的指令执行过程中是否产生过错误。
条件码 1( CC1)和条件码 0( CCO)综合起来用于表示在累加器
1 中产生的算术运算或逻辑运算的结果与 0 的大小关系、比较指令的执行结果或移位指令的移出位状态。
二进制结果位( BR)在一段既有位操作又有字操作的程序中,用于表示字操作结果是否正确。在梯形图的方框指令中,BR 位与 ENO
有对应关系,用于表明方框指令是否 被正确执行:如果执行出现了错误,BR 位为 0,ENO 也为 0;如果功能被正确执行,BR 位为 1,
ENO 也为 1。
FCRLOSTAOROVOSCC0CC1BR
未用
012345678915
图 3-9 状态字的结构
Q4.1
EN
IN
ENO
MOVE
OUT
MW4MW2
I0.1
图3-50 传送指令
EN
IN
ENO
MOVE
OUT
MB8IB2
能流
3.数据块寄存器,DB 和 DI 寄存器分别用来保存打开的共享数据块和背景数据块的编号。
3.3 位逻辑指令
位逻辑指令用于二进制数的逻辑运算。位逻辑运算的结果简称为
RLO。
3.3.1 触点指令
1,触点与线圈
A( And,与)指令来表示串联的常开触点。
O (Or,或 )指令来表示并联的常开触点。
AN (And Not,与非 )来表示串联的常闭触点,
ON (Or Not)来表示并联的常闭触点。
输出指令,=”将 RLO 写入地址位,与线圈相对应。 L20.0 是局域变量。将梯形图转换为语句表时,局域变量 L20.0 是自动分配的。
A(
A I 0.0
AN I 0.1
O I 0.2
)
A I 0.3
ON C 5
= L 20.0
A L 20.0
= Q 4.3
A L 20.0
= Q 4.4
A L 20.0
AN I 3.4
= Q 4.6
图3-10 触点与输出指令
I0.0 I0.1
I0.2
I0.3 Q4.3
C5 I3.4 Q4.6
Q4.4
2,取反触点
图3-11 取反触点
I0.6
I0.3 Q4.5
NOT
3.电路块的串联和并联
图3-12 电路块的并联
I0.0 M0.3
I0.2
Q4.3
I0.5
M9.1ON
=Q4.3
M9.1
I0.5
I0.2
A
A
I0.0
M0.3
A
AN
O
图3-13 电路块的串联
I0.0 M0.0
I0.2
Q4.4
M3.3
M0.0
O
=Q4.
I0.2
A(
O
I0.0
M3.3
A(
O
O
)
)
4.中线输出指令 下面是图 3-14(b)中第一行对应的语句表。
A I0.0
AN I0.1
= M0.1
A M0.1
A I0.3
= Q4.3
I0.0 I0.1 I0.3 Q4.3M0.1
图3-14 中线输出指令
#
I0.0 I0.1 I0.3 Q4.3
I0.4 Q4.2 M0.1 I0.4
Q4.2
(a) (b)
图3-15 异或
I0.0 I0.2
I0.2
Q4.3
I0.0
图3-16 同或
I0.0 I0.2
I0.2
Q4.4
I0.0
I0.0 I0.0
I0.2 I0.2
X
X
X
XN
==Q4.3 Q4.4
图3-17 置位与复位
Q4.3
Q4.3
A
S
A
R
I0.1
Q4.3
I0.3
Q4.3
I0.1
I0.3
Q4.3
I0.1
I0.3
R
S
图3-18 RS触发器与SR触发器
RS
R
S
Q
I0.4
I0.6
Q4.1
M0.0
SR
S
R
Q
I0.2
I0.5
Q4.3
M0.1
图3-19 上升沿与下降沿检测
I0.3
I0.3
P
N
Q4.5
Q4.3
Q4.3
Q4.5
I0.3 I0.0
M0.1
M0.0 I0.0
I0.0
.
Network 1,
A I0.3
A I0.0
FP M0.0
= Q4.5
Network 2,
A I0.3
A I0.0
FN M0.1
= Q4.3
图3-20 上升沿检测与下降沿检测
I0.1 Q4.3
I0.2
M0.0
NEG
I0.3 Q4.5
I0.4
M0.1
POS
M_BIT
Q
M_BIT
Q
A I0.3
A(
A I0.4
BLD 100
FN M0.1
)
= Q4.5
【例 3-1】设计故障信息显示电路,故障信号 I0.0 为 1 使 Q4.0 控制的指示灯以 1Hz 的频率闪烁。操作人员按复位按钮 I0.1 后,如果故障已经消失,指示灯熄灭。如果没有消失,指示灯转为常亮,直至故障消失。
故障信号复位信号锁存信号显示输出图3-21 故障信息显示
POS
M_BIT
Q
Q4.0
I0.0
M0.0
M0.1
M0.1
I0.1 M0.1
M1.5
M0.1
I0.0
I0.0
I0.1
M0.1
Q4.0
设置 CPU 的属性时,在,Cycle/Clock Memory”标签页令 M1 为时钟存储器字节,其中的 M1.5 提供周期为 1s 的时钟脉冲。
SET 与 CLR( Clear)指令将 RLO(逻辑运算结果)置位或复位,
紧接在它们后面的赋值语句中的地址将变为 1 状态或 0 状态。
SET //将 RLO 置位
= M0.2 //M0.2 的线圈“通电”
CLR //将 RLO 复位
= Q4.7 //Q4.7 的线圈“断电”
3.4.1 定时器指令
图3-23 定时器功能
t
t
t
t
t
输入信号的输出信号的输出信号的输出信号定时器的输出信号的输出信号脉冲定时器扩展脉冲定时器接通延时定时器保持型接通延时断开延时定时器
I0.0
Q4.0
Q4.3
Q4.5
Q4.2
Q4.1
图3-24 定时器字
xx
10 00 01
815
0 010 01 11
07
127
以BCD码表示的时间值(0~999)
时基1秒未用
在 CPU 内部,时间值以二进制格式存放,占定时器字的 0~ 9 位。
可以按下列的形式将时间预置值装入累加器的低位字,
(1) 十六进制数 W#16#wxyz,其中的 w 是时间基准,xyz 是 BCD
码形式的时间值。
(2) S5T#aH_bM_cS_Dms,例如 S5T#18S。
时基代码为二进制数 00,01,10 和 11 时,对应的时基分别为 10ms,
100ms,1s 和 10s。
6.脉冲定时器
图3-26 脉冲定时器时序图
t
I0.0
I0.1
t
Q4.0
当前值图3-25 脉冲定时器
T0
Q4.0
I0.0
T0
SP
T0
I0.1
R
S5T#2S
类似于上升沿触发的单稳态电路。
S5 脉冲定时器 (Pulse S5 Timer),S 为设置输入端,TV 为预置值输入端,R 为复位输入端; Q 为定时器位输出端,BI 输出不带时基的十六进制格式,BCD 输出 BCD 格式的当前时间值和时基。
定时器中的 S,R,Q 为 BOOL(位)变量,BI 和 BCD 为 WORD
(字)变量,TV 为 S5TIME 量。各变量均可以使用 I,Q,M,L,D 存储区,TV 也可以使用定时时间常数 S5T#。
图3-28 脉冲定时器的再起动时序图
t t
再起动输入I1.2
起动输入I0.0
复位输入I0.1
T0的响应(当前值)
T0的输出触点图3-27 S5脉冲定时器
S
TV
R
Q
S_PULSE
BI
BCD
I0.0
I0.1
S5T#2S
Q4.0
T0
MW10
MW12
A I 1.2
FR T0 //允许定时器 T1 再起动
A I 0.0
L S5T#2s //预置值 2s 送入累加器 1
SP T0 //启动 T0
A I 0.1
R T0 //复位 T0
L T0 //将 T0 的十六进制时间当前值装入累加器 1
T MW10 //将累加器 1 的 内容传送到 MW10
LC T0 //将 T0 的 BCD 时间当前值装入累加器 1,
T MW12 //将累加器 1 的内容传送到 MW12
A T0 //检查 T0 的信号状态
= Q 4.0 //T0 的定时器位为 1 时,Q4.0 的线圈通电
仅在语句表中使用的 FR 指令允许定时器再起动,即控制 FR 的
RLO( I1.2)由 0 变为 1 状态时,重新装入定时时间,定时器又从预置值开始定时。再起动只是在定时器的起动条件满足 (图 3-28 中的
I0.1=1)时起作用。该指令可以用于所有的定时器,但是它不是起动定时器定时的必要条件。
8.扩展的脉冲定时器
图3-29 扩展的脉冲定时器
T1
Q4.1
I0.2
T1
SE
T1
I0.3
R
S5T#3S
图3-30 时序图
t
I0.2
I0.3
Q4.1
t
当前值
图3-31 S5扩展脉冲定时器
S
TV
R
Q
S_PEXT
BI
BCD
I0.2
I0.3
S5T#3S
Q4.1
T1
MW14
10.接通延时定时器
图3-33 时序图
t
I0.4
I0.5
Q4.2
当前值
tt
图3-32 接通延时定时器
T2
Q4.2
I0.4
T2
SD
T2
I0.5
R
S5T#2S
S
TV
R
Q
S_ODT
BI
BCD
I0.4
I0.5
S5T#2S
Q4.2
T2
图3-34 S5接通延时定时器
MW10
MW12
图3-35 延时接通/断开电路的常开触点
I0.0
Q4.6
4s 3s
T6
T7 Q4.6
T6
I0.0
T6
SD
S5T#4S
T7
SF
S5T#3S
图3-36 振荡电路
I0.0 T9 T8
SD
S5T#2S
T8
T9
SD
S5T#3S
Q4.7
12.保持型接通延时定时器
t
I0.6
I0.7
Q4.3
t t
当前值图3-38 时序图
T3
Q4.3
I0.6
T3
SS
T3
I0.7
R
S5T#6S
图3-37 保持型接通延时
S
TV
R
Q
S_ODTS
BI
BCD
I0.6
I0.7
S5T#6S
Q4.3
T3
图3-39 S5保持型接通延时
14.断开延时定时器线圈
图3-41 时序图
t
I1.0
I1.1
Q4.5
当前值
tt
图3-40 断开延时定时器
T5
Q4.5
I1.0
T5
SF
T5
I1.1
R
S5T#7S
S
TV
R
Q
S_OFFDT
BI
BCD
I1.0
I1.1
S5T#7S
Q4.5
T5
图3-42 S5断开延时定时器
MW2
3.4.2 计数器指令
1.计数器的存储器区
每个计数器有一个 16 位的字和一个二进制位。
图3-43 计数器字
00 01
815
0 010 01 11
07
127
BCD码格式的计数值(0~999)
未用
00
915
0 111 11 11
010
二进制数计数值未用
计数器字的 0~ 11位是计数值的 BCD码,计数值的范围为 0~ 999。
二进制格式的计数值只占用计数器字的 0~ 9 位。
图3-44 加计数器
CU
PV
R
Q
S_CU
CV
CV_BCD
I0.0
I0.3
C#6
Q5.0
C10
SI0.2
C10
C10
I0.2
I0.0
SC
C10
I0.3
R
C#6
CU
C11
C11
I0.5
I0.4
SC
C11
I0.6
R
C#5
CD
图3-45 减计数器
CD
PV
R
Q
S_CD
CV
CV_BCD
I0.6
C#5
Q5.1
C11
SI0.5
I0.4
MW0
MW8
下面是图 3-44 中左边的电路对应的语句表,
A I0.0 //在 I0.0 的上升沿
CU C10 //加计数器 C10 的当前值加 1
BLD 101
A I0.2 //在 I0.2 的上升沿
L C#6 //计数器的预置值 6 被装入累加器的低字
S C10 //将预置值装入计数器 C10
A I0.3 //如果 I0.3 为 1
R C10 //复位 C10
L C10 //将 C10 的二进制计数当前值装入累加器 1
T MW0 //将累加器 1 的内容传送到 MW0
LC C10 //将 C10的 BCD计数当前值装入累加器 1
T MW8 //将累加器 1 的内容传送到 MW8
A C10 //如果 C10 的当前值非 0
= Q 5.0 //Q 5.0 为 1 状态
设置计数值线圈 SC(Set Counter Value)用来设置计数值,在 RLO
的上升沿预置值被送入指定的计数器。 CU 的线圈为加计数器线圈。
在 I0.0 的上升沿,如果计数值小于 999,计数值加 1。复位输入 I0.3
为 1 时,计数器被复位,计数值被清 0。
计数值大于 0 时计数器位(即输出 Q)为 1;计数值为 0 时,计数器位亦为 0。
在减计数输入信号 CD 的上升沿,如果计数值大于 0,计数值减 1。
图3-46 定时范围的扩展
3996h
I0.0
Q5.4
C0 Q5.4
I0.0 T12 T11
SD
S5T#7200S
C0
C0
I0.0
T11
SC
C0
I0.0
R
C#999
CD
T11 T12
SD
S5T#7200S
N
M0.1
I0.0
M0.0
P
图3-47 加减计数器
CD
PV
R
Q
S_CUD
CV
CV_BCD
I0.0
I0.3
MW20
Q5.2
C12
SI0.2
I0.1
CU
3.5.1 装入指令与传送指令
1.装入指令与传送指令
装入( L,Load)指令将源操作数装入累加器 1,而累加器 1 原有的数据移入累加器 2。
装入指令可以对字节( 8 位),字( 16 位),双字( 32 位)数据迸行操作。
传送( T,Transfer)指令将累加器 1 中的内容写入目的存储区中,
累加器 1 的内容不变。
2.立即寻址的装入与传送指令
立即寻址的操作数直接在指令中,下 面是使用立即寻址的例子。
L?35 //将 16 位十进制常数?35 装入累加器 1 的低字 ACCU1-L
L L#5 //将 32 位常数 5 装入累加器 1
L B#16#5A //将 8 位十六进制常数装入累加器 1
最低字节 ACCU1-LL
L W#16#3E4F //将 16 位十六进制常数装入累加器 1
的低字 ACCU1-L
L DW#16#567A3DC8 //将 32 位十六进制常数装入累加器 1
L 2#0001_1001_1110_0010 //将 16 位二进制常数装入累加器 1
的低字 ACCU1-L
L 25.38 //将 32 位浮点数常数 (25.38)装入累加器 1
L ‘ABCD’ //将 4 个字符装入累加器 1
L TOD#12:30:3.0 //将 32 位实时时间常数装入累加器 1
L D#2004-2-3 //将 16 位日期常数装入累加器 1 的低字 ACCU1-L
L C#50 //将 16位计数器常数装入累加器 1的低字
ACCU1-L
L T#1M20S //将 16位定时器常数装入累加器 1的低字
ACCU1-L
L S5T#2S //将 16 位定时器常数装入累加器 1 的低字 ACCU1-L
L P#M5.6 //将指向 M5.6 的指针装入累加器 1
AW W#16#3A12 //常数与累加器 1 的低字相“与”,运算结果在累加器 1 的低字中
L B#(100,12,50,8) //装入 4 字节无符号常数
3.直接寻址的装入与传送指令
直接寻址在指令中直接给出存储器或寄存器的区域,长度和位置,
例如用 MW200 指定位存储区中的字,地址为 200;下面是直接寻址的程序实例,
A I0.0 //输入位 I0.0 的“与”( AND)操作
L MB10 //将 8位存储器字节装入累加器 1最低的字节 ACCU1-LL
L DIW15 //将 16 位背景数据字装入累加器 1 的低字 ACCU1-L
L LD22 //将 32 位局域数据双字装入累加器 1
T QB10 //将 ACCU1-LL中的数据传送到过程映像输出字节 QB10
T MW14 //将 ACCU1-L 中的数据传送到存储器字 MW14
T DBD2 //将 ACCU1中的数据传送到数据双字
DBD2
3.存储器间接寻址
在存储器间接寻址指令中,给出一个作地址指针的存储器,该存储器的内容是操作数所在存储单元的地址。 在循环程序中经常使用存储器间接寻址。
地址指针可以是字或双字,定时器 ( T),计数器 ( C),数据块 ( DB),
功能块( FB)和功能( FC)的编号范围小于 65 535,使用字指针就够了。
其它地址则要使用双字指针,如果要用双字格式的指针访问一个字、宇节或双字存储器,必须保证指针的位编号为 0,例如 P#Q20.0。
L QB[DBD 10] //将输出字节装入累加器 1,输出字节的地址指针在数据双字 DBD10 中
//如果 DBD10 的值为 2# 0000 0000 0000 0000 0000 0000 0010
0000,装入的是 QB4
A M[LD 4] //对存储器位作“与”运算,地址指针在数据双字 LD4 中
//如果 LD4 的值为 2# 0000 0000 0000 0000 0000 0000 0010 0011,
则是对 M4.3 进行操作
bxxxbbbbbbbbbbbb0bbb000000000000
0781516232431
bxxxbbbbbbbbbbbb0bbb00000rrrx000
0781516232431
图3-10 存储器间接寻址的双字指针格式 图3-11 寄存器间接寻址的指针格式
4.寄存器间接寻址
地址寄存器 AR1 和 AR2,的内容加上偏移量形成地址指针,指向数值所在的存储单元。
其中第 0~ 2 位( xxx)为被寻址地址中位的编号( 0~ 7),第 3~
18 位为被寻址地址的字节的编号( 0~ 65535) 。第 24~ 26 位( rrr)
为被寻址地址的区域标识号,第 31 位 x = 0 为区域内的间接寻址,第
31 位 x = 1 为区域间的间接寻址。
第一种地址指针格式存储区的类型在指令中给出,例如 L
DBB[AR1,P#6.0]。在某一存储区内寻址。第 24~ 26 位( rrr)应为 0。
第二种地址指针格式的第 24~ 26 位还包含存储区域标识符 rrr,
区域间寄存器间接寻址。
如果要用寄存器指针访问一个字节、字或双字,必须保证指针中的位地址编号为 0。
指针常数# P5.0 对应的二进制数为 2# 0000 0000 0000 0000 0000
0000 0010 1000。下面是区内间接寻址的例子,
L P#5.0 //将间接寻址的指针装入累加器 1
LAR1 //将累加器 1 中的内容送到地址寄存器 1
A M[AR1,P#2.3] //AR1 中的 P#5.0 加偏移量 P#2.3,实际上是对 M7.3 进行操作
= Q[AR1,P#0.2] //逻辑运算的结果送 Q5.2
L DBW[AR1,P#18.0] //将 DBW23 装入累加器 1
下面是区域间间接寻址的例子,
L P#M6.0 //将存储器位 M6.0 的双字指针装入累加器 1
LAR1 //将累加器 1 中的内容送到地址寄存器 1
T W[AR1,P#50.0] //将累加器 1 的内容传送到存储器字
MW56
P#M6.0 对应的二进制数为 2#1000 0011 0000 0000 0000 0000 0011
0000。因为地址指针 P#M6.0 中已经包含有区域信息,使用间接寻址的指令 T W[AR1,P#50]中没有必要再用地址标识符 M。
表 3-6 寄存器间接寻址的区域标识位
区域标识符 存储区 位 26~ 24
P 外设输入输出 000
I 输入过程映像 001
Q 输出过程映像 010
M 位存储区 011
DBX 共享数据块 100
DIX 背景数据块 101
L 块的局域数据 111
5.装入时间值或计数值
L T5 //将定时器 T5 中的二进制时间值装入累加器 1 的低字中
LC T5 //将定时器 T5 中的 BCD 码格式的时间值装入累加器 1 低字中
L C3 //将计数器 C3 中的二进制计数值装入累加器 1 的低字中
LC C16 //将计数器 C16 中的 BCD 码格式的值装入累加器 1 的低字中
6.地址寄存器的装入与传送指令
可以不经过累加器 1,与地址寄存器 AR1 和 AR2 交换数据。下面是应用实例,
LAR1 DBD20 //将数据双字 DBD20 中的指针装入 AR1
LAR2 LD180 //将局域数据双字 LD180 中的指针装入 AR2
LAR1 P#M10.2 //将带存储区标识符的 32 位指针常数装入 AR1
LAR2 P#24.0 //将不带存储区标识符 32 位指针常数装入 AR2
TAR1 DBD20 //AR1 中的内容传送到数据双字
DBD20
TAR2 MD24 //AR2 中的内容传送到存储器双字
MD24
梯形图中的传送指令,
Q4.1
EN
IN
ENO
MOVE
OUT
MW4MW2
I0.1
图3-50 传送指令
EN
IN
ENO
MOVE
OUT
MB8IB2
能流
A I1.0
JNB _001 //如果 I1.0 = 0,则跳转到标号 _001 处
L MW2 //MW2的值装入累加器 1 的低字
T MW4 //累加器 1 低字的内容传送到 MW4
SET //将 RLO 置为 1
SAVE //将 RLO 保存到 BR 位
CLR //将 RLO 置为 0
_001,A BR
……
如果功能被正确执行,BR 位为 1,ENO 也为 1。
3.5.2 比较指令
比较指令用于比较累加器 1 与累加器 2 中的数据大小,被比较的两个数的数据类型应该相同。如果比较的条件满足,则 RLO 为 1,
否则为 0。状态字中的 CC0 和 CC1 位用来表示两个数的大于、小于和等于关系(见表 3-7) 。
表 3-7 指令执行后的 CC1 和 CC0
CC1 CC0
比较指令 移位和循环移位指令 字逻辑指令
0 0
累加器 2=累加器 1 移出位为 0 结果为 0
0 1
累加器 2<累加器 1 - -
1 0
累加器 2>累加器 1 - 结果不为 0
1 1
非法的浮点数 移出位为 1 -
表 3-8 比较指令
语句表
指令
梯形图中的符号
说明
I
D
R
CMP? I
CMP?
D
CMP?
R
比较累加器 2 和累加器 1 低字中的整数,如果条件满足,RLO=1
比较累加器 2 和累加器 1 中的双整数,如果条件满足,RLO=1
比较累加器 2 和累加器 1 中的浮点数,如果条件满足,RLO=1
?可以是 ==,<>,>,<,>=,<=。
下面是比较两个浮点数的例子,
L MD4 //MD4 中的浮点数装入累加器 1
L 2.345E+02 //浮点数常数装入累加器 1,MD4 装入累加器 2
>R //比较累加器 1 和累加器 2 的值
= Q4.2 //如果 MD4 > 2.345E+02,则 Q4.2 为 1
梯形图中的方框比较指令可以比较整数( I),双整数( D)和浮点数( R) 。方框比较指令在梯形图中相当于一个常开触点,可以与其他触点串连和并联。
IN1
IN2
CMP<=I
I0.6
Q4.1
MW2
MW4
图3-51 比较指令
S
I0.3
表 3-9 数据转换指令
语句表 梯形图 说明
BTI BCD_I 将累加器 1 中的 3 位 BCD 码转换成整数
ITB
BTD
DTB
DTR
ITD
RND
RND+
RND-
TRUNC
I_BCD
BCD_DI
DI_BCD
DI_R
I_DI
ROUND
CEIL
FLOOR
TRUNC
将累加器 1 中的整数转换成 3 位 BCD 码
将累加器 1 中的 7 位 BCD 码转换成双整数
将累加器 1 中的双整数转换成 7 位 BCD 码
将累加器 1 中的双整数转换成浮点数
将累加器 1 中的整数转换成双整数
将浮点数转换为四舍五入的双整数
将浮点数转换为大于等于它的最小双整数
将浮点数转换为小于等于它的最大双整数
将浮点数转换为截位取整的双整数
CAW
CAD


交换累加器 1 低字中两个字节的位置
交换累加器 1 中 4 个字节的顺序
sxxx
016 1531
图3-53 7位BCD码的格式个位十位百位千位万位十万位百万位符号位
1111
015
图3-52 3位BCD码的格式
个位十位百位符号位
1000 0110 0010
下面是双整数转换为 BCD 码的例子,
A I0.2 //如果 I0.2 为 1
L MD10 //将 MD10 中的双整数装入累加器 1
DTB //将累加器 1 中的数据转换为 BCD 码,结果仍在累加器 1 中
JO OVER //运算结果超出允许范围( OV= 1)则跳转到标号 OVER 处
T MD20 //将转换结果传送到 MD20
A M4.0
R M4.0 //复位溢出标志
JU NEXT //无条件跳转到标号 NEXT 处
OVER,AN M4.0
S M4.0 //置位溢出标志
NEXT,……
【例 3-5】 将 101 英寸转换为以厘米为单位的整数,送到 MW0
中。
L 101 //将 16 位常数 101(65H)装入累加器 1
ITD //转换为 32 位双整数
DTR //转换为浮点数 101.0
L 2.54 //浮点数常数 2.54 装入累加器 1,累加器 1 的内容装入累加器 2
*R //101.0 乘以 2.54,转换为 256.54 厘米
RND //四舍五入转换为整数 257(101H)
T MW30
7.取反与求补指令
表 3-12 取反与求补指令
语句表指令 梯形图指令 说明
INVI
INVD
NEGI
NEGD
NEGR
INV_I
INV_DI
NEG_I
NEG_DI
NEG_R
求累加器 1 低字中的 16 位整数的反码
求累加器 1 中双整数的反码
求累加器 1 低字中的 16 位整数的补码
求累加器 1 中双整数的补码
将累加器 1中的浮点数的符号位取反
图3-55 取反与求补指令
EN
IN
ENO
INV_DI
OUT
EN
IN
ENO
NEG_I
OUT
L MD20 //将 32 位双整数装入累加器 1
NEGD //求补
T MD30 //运算结果传送到 MD30
表 3-13 取反与求补
内容 累加器 1 的低字
变换前的数 0101 1101 0011 1000
取反的结果 1010 0010 1100 0111
求补的结果 1010 0010 1100 1000
3.6.1 整数数学运算指令
ACCU1ACCU2
操作数2操作数1
数学运算运算结果图3-56 数学运算中的累加器
L IW10 //IW10 的内容装入累加器 1 的低字
L MW14 //累加器 1 的内容装入累加器 2,MW14 的值装入累加器 1 的低字
/I //累加器 2 低字的值除以累加器 1 低字的值,结果在累加器 1 的低字
T DB1.DBW2 //累加器 1 低字中的运算结果传送到数据块
DB1 的 DBW2 中
表 3-16 整数数学运算指令
语句表
梯形图 描 述
+I
I
*I
/ I
+
+D
D
*D
/ D
MOD
ADD_I
SUB_I
MUL_I
DIV_I
——
ADD_DI
SUB_DI
MUL_DI
DIV_DI
MOD_DI
将累加器 1,2 低字中的整数相加,运算结果在累加器 1 的低字中
累加器 2 中的整数减去累加器 1 中的整数,运算结果在累加器 1 的低字
将累加器 1,2 低字中的整数相乘,32 位双整数运算结果在累加器 1 中
累加器 2 的整数除以累加器 1 的整数,商在累加器
1 的低字,余数在累加器 1 的高字
累加器的内容与 16 位或 32 位常数相加,运算结果在累加器 1 中
将累加器 1,2 中的双整数相加,双整数运算结果在累加器 1 中
累加器 2 中的双整数减去累加器 1 中的双整数运算结果在累加器 1 中
将累加器 1,2 中的双整数相乘,32 位双整数运算结果在累加器 1 中
累加器 2 中的双整数除以累加器 1 中的双整数,32
位商在累加器 1 中,
累加器 2 中的双整数除以累加器 1 中的双整数,32
位余数在累加器 1 中
3.6.2 浮点数数学运算指令
表 3-17 浮点数数学指令
语句表
梯形图 描述
+R
R
*R
/R
ABS
SQR
SQRT
EXP
LN
SIN
COS
TAN
ADD_R
SUB_R
MUL_R
DIV_R
ABS
SQR
SQRT
EXP
LN
SIN
COS
TAN
将累加器 1,2 中的浮点数相加,浮点数运算结果在累加器 1 中
累加器 2 中的浮点数减去累加器 1 中的浮点数,运算结果在累加器 1 中
将累加器 1,2 中的浮点数相乘,浮点数乘积在累加器 1 中
累加器 2 中的浮点数除以累加器 1 中的浮点数,商在累加器 1,余数丢掉
取累加器 1 中的浮点数的绝对值
求浮点数的平方
求浮点数的平方根
求浮点数的自然指数
ASIN
ACOS
ATAN
ASIN
ACOS
ATAN
求浮点数的自然对数
求浮点数的正弦函数
求浮点数的余弦函数
求浮点数的正切函数
求浮点数的反正弦函数
求浮点数的反余弦函数
求浮点数的反正切函数
OPN DB17 //打开数据块 DB17
L DBD0 //数据块 DB17的 DBD0中的浮点数装入累加器 1
SQR//求累加器 1 中的浮点数的平方,运算结果在累加器 1 中
AN OV //如果运算时没有出错
JC OK //跳转到标号 OK 处
BEU //如果运算时出错,功能块无条件结束
OK,T DBD4 //累加器 1 中的运算结果传送到数据块 DB17
的 DBD4 中
求以 10 为底的对数时,应将自然对数值除以 2.302585(10 的自然对数值 )。例如
lg100= ln100/2.302585= 4.605170/2.302585=2
【例 3-6】 用浮点数对数指令和指数指令求 5 的立方。 计算公式为,
125))5(LN*3(EXP5
3
==
L L#5
DTR
LN
L 3.0
*R
EXP
RND
T MW40
浮点数三角函数指令的输入值为弧度,角度值乘以 π/180,可转换为弧度值。
I0.6
Q4.1
图3-57 整数除法指令
NOT
MD2
MD6
DIV_DI
EN ENO
OUTIN1
IN2
S
MD10
【例 3-7】 压力变送器的量程为 0~ 10MPa,输出信号为 4~ 20mA,
S7-300 的模拟量输入模块的量程为 4~ 20mA,转换后的数字量为 0~
27 648,设转换后的数字为 N,试求以 kPa 为单位的压力值。
解,0~ 10MPa(0~ 10 000kPa)对应于转换后的数字 0~ 27 648,转换公式为
P =( 10 000 × N) / 27 648 ( kPa) (3-1)
值得注意的是在运算时一定要先乘后除,否则会损失原始数据的精度。假设 A/D 转换后的数据 N 在 MD6 中,以 kPa 为单位的运算结果在 MW10 中。图 3-58 是实现式( 3-1)中的运算的梯形图程序。
MUL_DI
DIV_DI
EN ENO
OUT
EN ENO
OUTIN1
IN2
IN1
IN2
MD6
L#27648
MD20 MD20
L#10000
MD20
EN
IN
ENO
MOVE
OUT
MW10MW22
I0.6
图 3-58 算术运算指令
语句表中,*I”指令的运算结果为 32 位整数,梯形图中 MUL_I
指令的运算结果为 16 位整数。 A/D 转换后的最大数字为 27 648,所以要使用 MUL_DI。双字除法指令 DIV_DI 的运算结果为双字,运算结果不会超过 16 位正整数的最大值( 32 767) 。
3.6.3 移位与循环移位指令
表 3-20 移位指令(对累加器 1 中的数操作,结果在累加器 1 中)
名称 语句表
梯形图 描述
有符号整数右移
有符号双整数右移
16 位字左移
16 位字右移
16 位双字左移
16 位双字右移
SSI
SSD
SLW
SRW
SLD
SRD
SHR_I
SHR_DI
SHL_W
SHR_W
SHL_DW
SHR_DW
整数逐位右移,空出的位添上符号位
双整数逐位右移,空出的位添上符号位字逐位左移,空出的位添 0
字逐位右移,空出的位添 0
双字逐位左移,空出的位添 0
双字逐位右移,空出的位添 0
双字循环左移
双字循环右移
双字+ CC1 循环左移
双字+ CC1 循环右移
RLD
RRD
RLDA
RRDA
ROL_DW
ROR_DW


双字循环左移
双字循环右移
双字通过 CC1(一共 33 位)循环左移双字通过 CC1(一共 33 位)循环右移
( 1)用指令中的参数 <number>来指定移位位数,16 位移位指令为 0~ 15,32 位移位指令为 0~ 32。如果 <number>等于 0,移位指令被当作 NOP(空操作)指令来处理。
( 2) 指令没有参数 <number>,移位位数放在累加器 2 的最低字节中( 0~ 255)。如果移位位数等于 0,移位指令被当作 NOP(空操作)
指令来处理。
有符号字的移位位数 >16 时,移位后被移位的数的各位全部变成了符号位。
L MW4 //将 MW4 的内容装入累加器 1 的低字
SSI 6 //累加器 1 低字中的有符号数右移 6 位,结果仍在累加器 1 的低字中
T MW8 //累加器 1 低字中的运算结果传送到 MW8 中
表 3-21 整数右移 6 位前后的数据
内容 累加器 1 的高字 累加器 1 的低字
移位前 0101 1111 0110
0100
1001 1101 0011
1011
右移 6 位后
0101 1111 0110
0100
1111 1110 0111
0100
L +3 //将+ 3 装入累加器 1
L MW20 //将累加器 1 的内容装入累加器 2,MW20 的内容装入累加器 1
SSI //累加器 1 低字中的有符号数右移 3 位
JP NEXT //如果最后移入 CC1 的位为 1,跳转到标号
NEXT 处
表 3-23 字右移 6 位移位前后的数据
内容 累加器 1 的高字 累加器 1 的低字
移位前 0101 1111 0110
0100
0101 1101 0011
1011
右移 6 位后
0101 1111 0110
0100
0000 0001 0111
0100
表 3-24 双字循环左移 4 位前后累加器中的数据
内容 累加器 1 的高字 累加器 1 的低字
移位前 0101 1111 0110
0100
0101 1101 0011
1011
右移 4 位后
1111 0110 0100
0101
1101 0011 1011
0101
表 3-25 双字通过 CC1 循环左移 1 位前后累加器中的数据
内容 CC1 累加器 1 的高字 累加器 1 的低字
移位前
X 0101 1111 0110
0100
0101 1101 0011
1011
左移后
0 1011 1110 1100
1000
1011 1010 0111
011X
1010
0
15
1111 0000 0010
1111 1010 00101111
0000
右移4位符号位
IN
OUT
丢失填符号位
SHR_I
EN
IN
N
ENO
OUT
Q4.0
S
I0.6
W#16#4
MW4 MW8
图 3-60 有符号数右移指令
3.6.4 字逻辑运算指令
表 3-26 字逻辑运算指令
语句表 梯形图 描 述
AW
OW
XOW
AD
OD
XOD
WAND_W
WOR_W
WXOR_W
WAND_DW
WOR_DW
WXOR_DW
字与
字或
字异或
双字与
双字或
双字异或表 3-27 字逻辑运算的结果
位 15 0
逻辑运算前累加器 1的低字 0101 1001 0011 1011
逻辑运算前累加器 2的低字或常数 1111 0110 1011 0101
“与”运算后累加器 1的低字 0101 0000 0011 0001
“或”运算后累加器 1的低字 1111 1111 1011 1111
“异或”运算后累加器 1低字 1010 1111 1000 1110
L QW10 //QW10 的内容装入累加器 1 的低字
L W#16#000F //累加器 1 的内容装入累加器 2,W#16#000F 装入累加器 1 的低字
OW //累加器 1 低字与 W#16#000F 逐位相或,结果在累加器 1 的低字中
T QW10 //累加器 1 低字中的运算结果传送到 QW10 中
WAND_W
EN
IN
N
ENO
OUT
Q5.0
PIW0
B#16#6
MW8
图3-62 立即读入
<>0
EN
IN
ENO
MOVE
OUT
QB5 PQB5
Q5.0I2.3
图3-63 立即写出
MB9 是 MW8 中的低字节,M9.1 和 M9.2 对应于输入信号 I0.1 和
I0.2。
3.6.5 累加器指令
表 3-28 累加器指令
语句表 描 述
TAK
PUSH
POP
ENT
LEAVE
INC
DEC
+AR1
+AR2
BLD
NOP 0
NOP 1
交换累加器 1,2 的内容
入栈
出栈
进入 ACCU 堆栈
离开 ACCU 堆栈
累加器 1 最低字节加上 8 位常数
累加器 1 最低字节减去 8 位常数
AR1 的内容加上地址偏移量
AR2 的内容加上地址偏移量
程序显示指令(空指令)
空操作指令
空操作指令
A
B
C
D
累加器1
累加器2
累加器3
累加器4
A
B
C
累加器1
累加器2
累加器3
累加器4
A
入栈前入栈后图3-64 入栈指令执行前后
A
B
C
D
累加器1
累加器2
累加器3
累加器4
D
B
C
累加器1
累加器2
累加器3
累加器4
D
出栈前出栈后图3-65 出栈指令执行前后
【例 3-9】 用语句表程序实现浮点数运算 ( DBD0+ DBD4) /( DBD8
– DBD12)。
L DBD0 //DBD0 中的浮点数装入累加器 1
L DBD4 //累加器 1 的内容装入累加器 2,DBD4 中的浮点数装入累加器 1
+R //累加器 1,2 中的浮点数相加,结果保存在累加器
1 中
L DBD8 //累加器 1 的内容装入累加器 2,DBD8 中的浮点数装入累加器 1
ENT //累加器 3 的内容装入累加器 4,累加器 2 的中间结果装入累加器 3
L DBD12 //累加器 1 的内容装入累加器 2,DBD12 中的浮点数装入累加器 1
–R //累加器 2 的内容减去累加器 1 的内容,结果保存在累加器 1 中
LEAVE //累加器 3 的内容装入累加器 2,累加器 4 的中间结果装入累加器 3
/R //累加器 2 的( DBD0+ DBD4)除以累加器 1 的
( DBD8– DBD12)
T DBD16 //累加器 1 中的运算结果传送到 DBD16
3.加、减 8 位整数指令
L MB4 //MB4 的内容装入累加器 1 的最低字节
INC 1 //累加器 1 最低字节的内容加 1,结果存放在累加器 1 的最低字节
T MB4 //运算结果传回 MB4
4.地址寄存器指令
+AR1 (Add to AR1) 指令将 AR1 的内容加上累加器 1 中低字的内容,或加上指令中的 16 位常数,结果在 AR1 中。地址寄存器中的存储区域标识符(第 24~ 26 位)保持不变。
bxxxbbbbbbbbbbbb0bbb000000000000
0781516232431
bxxxbbbbbbbbbbbb0bbb00000rrrx000
0781516232431
图3-10 存储器间接寻址的双字指针格式 图3-11 寄存器间接寻址的指针格式
3.7 逻辑控制指令
表 3-29 逻辑控制指令与状态位触点指令
语句表中的
逻辑控制指令
梯形图中的
状态位触点指令说明
JU
JL
JC
JCN
JCB
JNB
JBI
JNBI
JO
JOS
JZ
JN
JP
JM
JPZ
JMZ
JUO
LOOP






BR

OV
OS
== 0
<> 0
> 0
< 0
>= 0
<= 0
UO

无条件跳转
多分支跳转
RLO=1 时跳转
RLO=0 时跳转
RLO=1 且 BR= 1 时跳转
RLO=0 且 BR= 1 时跳转
BR=1 时跳转
BR=0 时跳转
OV=1 时跳转
OS=1 时跳转
运算结果为 0 时跳转
运算结果非 0 时跳转
运算结果为正时跳转
运算结果为负时跳转
运算结果大于等于 0 时跳转
运算结果小于等于 0 时跳转
指令出错时跳转
循环指令
只能在同一逻辑块内跳转。同一个跳 转目的地址只能出现一次。
跳转或循环指令的操作数为地址标号,标号由最多 4 个字符组成,第一个字符必须是字母,其余的可以是 字母或数字。在梯形图中,目标标号必须是一个网络的开始。
【例 3-10】 IW8 与 MW12 的异或结果如果为 0,将 M4.0 复位,
非 0 则将 M4.0 置位。
L IW8 //IW8的内容装入累加器 1 的低字
L MW12 //累加器 1 的内容装入累加器 2,MW12
的内容装入累加器 1
XOW //累加器 1,2 低字的内容逐位异或
JN NOZE //如果累加器 1 的内容非 0,则跳转到标号
NOZE 处
R M4.0
JU NEXT
NOZE,AN M4.0
S M4.0
NEXT,NOP 0
置位图3-67 循环指令
NO NOZE
M4.0
YES
异或运算结果=0?
复位 M4.0
NEXT
JMPN
I0.6
Network 1
Q4.1
S
I0.2
Network 2
图3-69 JMPN跳转指令
CAS1
Network 3
CAS1
Q4.2
S
JMP
Network 1
Q4.1
S
I0.5
Network 2
图3-68 条件跳转指令
CAS0
Network 3
CAS0
Q4.0
S
I3.0I2.0
I0.4
SUB_I
EN
IN
N
ENO
OUT
I0.6
IW0
IW2
MW6
Q4.0
S
OV
I0.2
Network 2
Network 1
图3-70 状态位触点指令
3.7.3 循环指令
循环指令 LOOP <jump label>用 ACCU 1-L 作循环计数器,每次执行 LOOP 指令时 ACCU 1-L 的值减 1,若减 1 后 ACCU 1-L 非 0,将跳转到 <jump label>指定的标号处。
【例 3-11】用循环指令求 5! (5 的阶乘 )。
L L#1 //32 位整数常数装入累加器 1,置阶乘的初值
T MD20 //累加器 1 的内容传送到 MD20,保存阶乘的初值
L 5 //循环次数装入累加器的低字
BACK,T MW10 //累加器 1 低字的内容保存到循环计数器
MW10
L MD20 //取阶乘值
*D //MD20与 MW10 的内容相乘
T MD20 //乘积送 MD20
L MW10 //循环计数器内容装入累加器 1
LOOP BACK //累加器 1 低字的内容减 1,减 1 后非 0,跳到标号 BACK
…… //循环结束后,恢复线性扫描
3.8 程序控制指令
表 3-30 程序控制指令
语句表指令 梯形图指令 描述
BE
BEU
BEC
CALL FCn
CALL SFCn
CALL FBn1,DBn2
CALL SFBn1,DBn2
CC FCn 或 SFCn
UC FCn 或 SFCn
RET
MCRA
MCRD
MCR(







CALL
CALL
RET
MCRA
MCRD
MCR<
块结束
块无条件结束
块条件结束
调用功能
调用系统功能
调用功能块
调用系统功能块
RLO= 1 时条件调用
无条件调用
条件返回
起动主控继电器功能
取消主控继电器功能
打开主控继电器区
)MCR MCR> 关闭主控继电器区
CALL
Network 1
FC10
CALL
I0.6
Network 2
FC12
EN
IN OUT
ENO
FB10
I2.1
MW100
MW 30
Network 3 DB3
图3-71 逻辑块调用
Q4.0
S
图3-72 主控继电器指令
MCRA
I0.2
MCR<
I3.1
I0.5
MCR>
Q4.0
MCRD
I1.1 Q4.1
EN
IN
ENO
MOVE
OUT
QW10MW20
临时电源线控制区
MCR
OPN DB10 //打开数据块 DB10 作为共享数据块
L DBW35 //将打开的 DB10 中的数据字 DBW35 装入累加器 1 的低字
T MW12 //累加器 1 低字的内容装入 MW12
OPN DI20 //打开作为背景数据块的数据块 DB20
L DIB35 // DB20.DIB35 装入累加器 1 的最低字节
T DBB27 //累加器 1 最低字节传送到 DB10.DBB27
表 3-31 数据块指令
指令 描述
OPN
CDB
L DBLG
L DBNO
L DILG
L DINO
打开数据块
交换共享数据块和背景数据
共享数据块的长度装入累加器 1
共享数据块的编号装入累加器 1
背景数据块的长度装入累加器 1
背景数据块的编号装入累加器 1
第 4 章 STEP 7 编程软件的使用方法
4.1.1 STEP 7 概述
STEP 7 用于 S7,M7,C7,WinAC 的编程、监控和参数设置,基于 STEP 7 V5.2 版。
STEP 7 具有以下功能:硬件配置和参数设置、通信组态、编程、
测试、启动和维护、文件建档、运行和诊断功能等。
4.1.2 STEP 7 的硬件接口
PC./MPI 适配器+ RS-232C 通信电缆。
计算机的通信卡 CP 5611( PCI 卡),CP 5511 或 CP 5512( PCMCIA
卡)将计算机连接到 MPI 或 PROFIBUS 网络。计算机的工业以太网通信卡 CP 1512( PCMCIA 卡)或 CP 1612( PCI 卡),通过工业以太网实现计算机与 PLC 的通信。
STEP 7 的授权在软盘中。 STEP 7 光盘上的程序 AuthorsW 用于显示、安装和取出授权。
4.1.4 STEP 7 的编程功能
1.编程语言
3 种基本的编程语言:梯形图 (LAD)、功能块图 (FBD) 和语句表
(STL)。
S7-SCL (结构化控制语言 ),S7-GRAPH(顺序功能图语言),S7
HiGraph 和 CFC。
2.符号表编辑器
3.增强的测试和服务功能
设置断点、强制输入和输出、多 CPU 运行 (仅限于 S7-400),重新布线、显示交叉参考表、状态功能,?直接下载和调试块,?同时监测几个块的状态等。
程序中的特殊点可以通过输入符号名或地址快速查找。
4,STEP 7 的帮助功能
按 F1 键便可以得到与它们有关的在线帮助。菜单命令,Help→
contents”进入帮助窗口。
4.1.5 STEP 7 的硬件组态与诊断功能
1.硬件组态
( 1)系统组态:选择硬件机架,模块分配给机架中希望的插槽。
( 2) CPU 的参数设置。
( 3)模块的参数设置。可以防止输入错误的数据。
2.通信组态
( 1)网络连接的组态和显示;
( 2)设置用 MPI 或 PROFIBUS-DP 连接的设备之间的周期性数据传送的参数。
( 3)设置用 MPI,PROFIBUS 或工业以太网实现的事件驱动的数据传输,用通信块编程。
3.系统诊断
( 1)快速浏览 CPU 的数据和用户程序在运行中的故障原因。
( 2)用图形方式显示硬件配置、模块故障;显示诊断缓冲区的信息等。
4.2 硬件组态与参数设置
4.2.1 项目的创建与项目的结构
插入新的对象的方法。
4.2.2 硬件组态
图 4-2 S7-300 的硬件组态窗口
4.2.3 CPU 模块的参数设置
图 4-3 CPU 属性设置对话框
表 4-1 时钟存储器各位对应的时钟脉冲周期与频率
位 7 6 5 4 3 2 1 0
周期( s) 2 1.6 1 0.8 0.5 0.4 0.2 0.1
频率( Hz) 0.5 0.625 1 1.25 2 2.5 5 10
4.2.4 数字量输入模块的参数设置
在 CPU 处于 STOP 模式下进行。 设置完后下载到 CPU 中。 当 CPU
从 STOP 模式转换为 RUN 模式时,CPU 将参数传送到每个模块。
图 4-4 数字量输入模块的参数设置
4.2.5 数字量输出模块的参数设置
图 4-5 数字量输出模块的参数设置
4.2.6 模拟量输入模块的参数设置
1.模块诊断与中断的设置
8 通道 12 位模拟量输入模块(订货号为 6ES7 331-7KF02-0AB0)
的参数设置。
图 4-6 模拟量输入模块的参数设置
2.模块测量范围的选择
,4DMU”是 4 线式传感器电流测量,,R-4L”是 4 线式热电阻,
,TC-I”是热电偶,,E”表示测量种类为电压。
未使用某一组的通道应选择测量种类中的,Deactivated”(禁止使用)。
3.模块测量精度与转换时间的设置
SM 331 采用积分式 A/D 转换器,积分时间直接影响到 A/D 转换时间、转换精度和干扰抑制频率。为了抑制工频频率,一般选用 20ms
的积分时间。
表 4-2 6ES7 331-7KF02 模拟量输入模块的参数关系
积分时间( ms) 2.5 16.7 20 100
基本转换时间( ms,包括积分时间) 3 17 22 102
附加测量电阻转换时间( ms) 1 1 1 1
附加开路监控转换时间( ms) 10 10 10 10
附加测量电阻 和 开路监控转换时间( ms) 16 16 16 16
精度(位,包括符号位) 9 12 12 14
干扰抑制频率( Hz) 400 60 50 10
模块的基本响应时间( ms,所有通道使能) 24 136 176 816
4.设置模拟值的平滑等级
在平滑参数的四个等级(无,低,平均,高)中进行选择。
4.2.7 模拟量输出模块的参数设置
CPU 进入 STOP 时的响应:不输出电流电压( 0CV)、保持最后的输出值( KLV)和采用替代值( SV)。
4.3.1 符号表
共享符号(全局符号)在符号表中定义,可供程序中所有的块使用。
在程序编辑器中用,View → Display with → Symbolic
Representation”选择显示方式。
2.生成与编辑符号表
CPU 将自动地为程序中的全局符号加 双引号,在局部变量的前面自动加,#”号。生成符号表和块的局域变量表时不用为变量添加引号和 #号。
图 4-7 符号表
数据块中的地址( DBD,DBW,DBB 和 DBX)不能在符号表中定义。应在数据块的声明表中定义。
用菜单命令,View→ Columns R,O,M,C,CC”可以选择是否显示表中的,R,O,M,C,CC”列,它们分别表示监视属性、在 WinCC 里是否被控制和监视、信息属性,通信属性和触点控制。可以用菜单命令,View→ Sort”选择符号表中变量的排序方法。
3.共享符号与局域符号,后者不能用汉字。
4.过滤器( Filter)
在符号表中执行菜单命令,View→ Filter”,,I*”表示显示所有的输入,,I*.*”表示所有的输入位,,I2.*”表示 IB2 中的位等。
4.3.2 逻辑块
逻辑块包括组织块 OB、功能块 FB 和功能 FC。
1,程序的输入方式,增量输入方式或源代码方式 (或称文本方式、
自由编辑方式)。
2.生成逻辑块
图 4-8 梯形图编辑器
6.网络
执行菜单命令,Insert→ Network”,或点击工具条中相应的图标,
在当前网络的下面生成 一个新的网络。菜单命令
,View→ Display→ Comments”用来激活或取消块注释和网络注释。
可以用剪贴板在块内部和块之间复制和粘贴网络,可用 Ctrl 键。
7.打开和编辑块的属性
菜单命令,File→ Properties”来查看和编辑块属性。
8.程序编辑器的设置
进入程序编辑器后用菜单命令,Option→ Customize”打开对话框,
可以进行下列设置,
( 1)在,General”标签页的,Font”设置编辑器使用的字体和字符的大小。
( 2)在,STL”和,LAD/FDB”标签页中选择这些程序编辑器的显示特性。
( 3)在,Block” (块)标签页中,可以选择生成功能块时是否同时生成背景数据块、功能块是否有多重背景功能。
( 4)在,View”选项卡中的,View after Open Block”区,选择在块打开时显示的方式。
9.显示方式的设置
执行 View 菜单中命令,放大,缩小梯形图或功能块图的显示比例。
菜单命令,View→ Display→ Symbolic Representation”,切换绝对地址和符号地址方式。
菜单命令,View→ Display→ Symbol information”用来打开或关闭符号信息。
图 4-9 符号信息
4.4 S7-PLCSIM 仿真软件在程序调试中的应用
4.4.1 S7-PLCSIM 的主要功能
在计算机上对 S7-300/400 PLC 的用户程序进行离线仿真与调试。
模拟 PLC 的输入 /输出存储器区,来控制程序的运行,观察有关输出变量的状态。
在运行仿真 PLC时可以使用变量表和程序状态等方法来监视和修改变量。
可以对大部分组织块 ( OB),系统功能块 ( SFB) 和系统功能 ( SFC)
仿真。
4.4.2 使用 S7-PLCSIM 仿真软件调试程序的步骤
( 1)在 STEP 7 编程软件中生成项目,编写用户程序。
( 2)打开 S7-PLCSIM 窗口,自动建立了 STEP 7 与仿真 CPU 的连接。
仿真 PLC 的电源处于接通状态,CPU 处于 STOP 模式,扫描方式为连续扫描。
( 3)在管理器中打开要仿真的项目,选中,Blocks”对象,将所有的块下载到仿真 PLC。
( 4)生成视图对象。
( 5)用视图对象来模拟实际 PLC 的输入 /输出信号,检查下载的用户程序是否正确。
4.4.3 应用举例
电动机串电阻降压起动。速度监视。
图4-10 梯形图
T1
Q4.1
1400
T5
SD
S5T#9S
I1.0 I1.1
Q4.0
Q4.0
IN1
IN2
CMP >IQ4.0
MW2
Q4.2
图 4-11 S7-PLCSIM 仿真窗口
4.4.4 视图对象与仿真软件的设置与存档
1,CPU 视图对象
2.其他视图对象
通用变量( Generic Variable)视图对象用于访问仿真 PLC 所有的存储区(包括数据块) 。垂直位( Vertical Bits)视图对象可以用绝对地址或符号地址来监视和修改 I,Q,M 等存储区。
累加器与状态字视图对象用来监视 CPU 中的累加器,状态字和地址寄存器 AR1 和 AR2。
块寄存器视图对象用来监视数据块地址寄存器的内容,当前和上一次打开的逻辑块的编号,以及块中的步地址计数器 SAC 的值。
嵌套堆栈 ( Nesting Stacks) 视图对象用来监视嵌套堆栈和 MCR(主控继电器)堆栈。
定时器视图对象标有,T=0”的按钮用来复位指定的定时器。
3.设置扫描方式
用“Execute”菜单中的命令选择单次扫描或连续扫描。
4.设置 MPI 地址
菜单命令,PLC→ MPI Address…”设置仿真 PLC 在指定的网络中的节点地址。
5,LAY 文件和 PLC 文件
LAY 文件用于保存仿真时各视图对象的信息; PLC 文件用于保存上次仿真运行时设置的数据和动作等。 退出仿真软件时将会询问是否保存 LAY 文件或 PLC 文件。一般选择不保存。
4.5 STEP 7 与 PLC 的在线连接与在线操作
4.5.1 装载存储器与工作存储器
RAM
与程序执行有关的部分装载存储器 工作存储器计算机符号表图4-12 装载存储器与工作存储器
逻辑块数据块逻辑块数据块注释
系统数据( System Data)包括硬件组态、网络组态和连接表,也应下载到 CPU。
下载的用户程序保存在装载存储器的快闪存储器( FEPROM)中。
CPU 电源掉电又重新恢复时,FEPROM 中的内容被重新复制到 CPU
存储器的 RAM 区。
4.5.2 在线连接的建立与在线操作
1.建立在线连接
通过硬件接口连接计算机和 PLC 必须,然后通过在线的项目窗口访问 PLC。
管理器中执行菜单命令,View→ Online”,,View→ Offline”进入离线状态。
在线窗口显示的是 PLC 中的内容,离线窗口显示的是计算机中的内容。
如果 PLC 与 STEP 7 中的程序和组态数据是一致的,在线窗口显示的是 PLC 与 STEP 7 中的数据的组合。
2.处理模式与测试模式
在设置 CPU 属性的对话框中的,Protection”(保护)标签页选择处理( Process)模式或测试( Test)模式。
3.在线操作
进入在线状态后,执行菜单命令,PLC → Diagnostics/Settings”中不同的子命令。
进入在线状态后,,PLC”主菜单中的命令功能。
设置了口令后,执行在线功能时,会显示出,Enter Password”对话框。若输入的口令正确,就可以访问该模块。用菜单命令
,PLC→ Access Rights→ Setup”输入口令。
4.5.3 下载与上载
1.下载的准备工作
计算机与 CPU 之间必须建立起连接,要下载的程序已编译好;在
RUN-P 模式一次只能下载一个块,建议在 STOP 模式下载。
在保存块或下载块时,STEP 7 首先进行语法检查,应改正检查出来的错误。下载前应将 CPU 中的用户存储器复位。可以用模式选择开关复位,CPU 进入 STOP 模式,再用菜单命令,PLC→ Clear/Reset”
复位存储器。
2.下载的方法
( 1)在离线模式下载
在管理器的块工作区选择块,可用 Ctrl 键和 Shift 键选择多个块,
用菜单命令,PLC→ Download”将被选择的块下载到 CPU。在管理器左边的目录窗口中选择 Blocks 对象,下载所有的块和系统数据。
对块编程或组态硬件和网络时,在当时主窗口,用菜单命令
,PLC→ Download”下载当前正在编辑的对象。
(4) 上载程序
可以用,PLC→ Upload”命令从 CPU 的 RAM 装载存储器中,把块的当前内容上载到计算机打开的项目中。
4.6 用变量表调试程序
4.6.1 系统调试的基本步骤
首先进行硬件调试,可以用变量表来测试硬件,通过观察 CPU 模块上的故障指示灯,或使用 4.8 节介绍的故障诊断工具来诊断故障。
下载程序之前应将 CPU 的存储器复位,将 CPU 切换到 STOP 模式,下载用户程序时应同时下载硬件组态数据。
起动硬件中断
OB1 FC1
FC2
FC3 FB1
DB1
(1)
(6)
(2)(3)
(4)
(5)
(7)
图4-13 程序调试的顺序
可以在 OB1 中逐一调用各程序块,一步一步地调试程序。
最先调试起动组织块 OB100,然后调试 FB 和 FC。应先调试嵌套调用最深的块,例如首先调试图 4-13 中的 FB1。调试时可以在完整的 OB1 的中间临时插入 BEU(块无条件结束)指令,只执行 BUE
指令之前的部分,调试好后将它删除掉。
最后调试不影响 OB1 的循环执行的中断处理程序,或者在调试
OB1 时调试它们。
4.6.2 变量表的基本功能
变量表可以在一个画面中同时监视,修改和强制用户感兴趣的全部变量。一个项目可以生成多个变量表。变量表的功能,
监视( Monitor)变量、修改( Modify)变量、对外设输出赋值、
强制变量、定义变量被监视或赋予新值的触发点和触发条件。
4.6.3 变量表的生成
1.生成变量表的几种方法
( 1)在管理器中用生成新的变量表。
( 3)在变量表编辑器中,可以用主菜单,Table”生成一个新的变量表。
2.在变量表中输入变量
可以从符号表中拷贝地址,将它粘贴到变量表。
IW2 用二进制数( BIN)可以同时显示和分别修改 I 2.0~ I 3.7 这十六点数字量输入变量。
监视变量修改变量刷新监视值激活修改值使修改值无效设置触发参数
图 4-14 变量表
4.6.4 变量表的使用
1.建立与 CPU 的连接
2.定义变量表的触发方式
图 4-15 定义变量表的触发方式
用菜单命令,Variable→ Trigger”打开图 4-15 中的对话框选择触发方式。
3.监视变量
用菜单命令,Variable→ Update Monitor Values”对所选变量的数值作一次立即刷新。
4.修改变量
在 STOP 模式修改变量时,各变量的状态不会互相影响,并且有保持功能。
在 RUN 模式修改变量时,各变量同时又受到用户程序的控制。
5.强制变量
强制变量操作给用户程序中的变量赋 一个固定的值,不会因为用户程序的执行而改变。
图 4-16 强制数值窗口
强制作业只能用菜单命令,Variable→ Stop Forcing” 来删除或终止。
4.7 用程序状态功能调试程序
4.7.1 程序状态功能的起动与显示
1.起动程序状态
进入程序状态的条件,经过编译的程序下载到 CPU; 打开逻辑块,
用菜单命令,Debug→ Monitor”进入在线监控状态;将 CPU 切换到
RUN 或 RUN-P 模式。
2.语句表程序状态的显示
图 4-17 用程序状态监视语句表程序
从光标选择的网络开始监视程序状态 。右边窗口显示每条指令执行后的逻辑运算结果( RLO)和状态位 STA(Status)、累加器 1
( STANDARD)、累加器 2(ACCU 2)和状态字( STATUS…)。用菜单命令,Options→ Customize”打开的对话框分 STL 标签页选择需要监视的内容,用 LAD/FBD 标签页可以设置梯形图 (LAD)和功能块图
(SFB)程序状态的显示方式。
3.梯形图程序状态的显示
LAD 和 FBD 中用绿色连续线来表示状态满足,即有“能流”流过,见图 4-18 左边较粗较浅的线;用兰色点状线细表示状态不满足,
没有能流流过;用黑色连续线表示状态未知。
图 4-18 梯形图程序状态的显示
梯形图中加粗的字体显示的参数值是当前值,细体字显示的参数值来自以前的循环。
4.使用程序状态功能监视数据块
4.7.2 单步与断点功能的使用
进入 RUN 或 RUN-P 模式后将停留在第一个断点处。单步模式一次只执行一条指令。
程序编辑器的,Debug(调试)”菜单中的命令用来设置、激活或删除断点。执行菜单命令,View> Breakpoint Bar”后,在工具条中将出现一组与断点有关的图标。
1.设置断点与进入单步模式的条件
( 1)只能在语句表中使用单步和断点功能。
( 2) 执行菜单命令,Options → Customize”,在对话框中选择
STL 标签页,激活,Activate new breakpoints immediately(立即激活新断点)”选项。
( 3)必须用菜单命令,Debug> Operation”使 CPU 工作在测试
( Test)模式。
( 4)在 SIMATIC 管理器中进入在线模式,在线打开被调试的块。
( 5)设置断点时不能起动程序状态( Monitor)功能。
( 6) STL 程序中有断点的行、调用块的参数所在的行、空的行或注释行不能设置断点。
2.设置断点与单步操作
在菜单命令,Debug → Breakpoints Active”前有一个,√”(默认的状态),表示断点的小圆是实心的。执行该菜单命令后,√”消失,
表示断点的小圆变为空心的。要使断点起作用,应执行该命令来激活断点。
图 4-19 断点与断点处 CPU 寄存器和状态字的内容
将 CPU 切换到 RUN 或 RUN-P 模式,将在第一个表示断点的紫色圆球内出现一个向右的黄色的箭头(见图 4-19),表示程序的执行在该点中断,同时小窗口中出现断点处 的状态字等。执行菜单命令
,Debug→ Execute Next Statement”,黄色箭头移动到下一条语句,
表示用单步功能执行下一条语句。执行菜单命令,Debug→ Execute
Call(执行调用)”将进入调用的块 。块结束时将返回块调用语句的下一条语句。
为使程序继续运行至下一个断点,执行菜单命令,Debug →
Resume(继续)”。
菜单命令,Debug→ Delete Breakpoint”删除一个断点,菜单命令
,Debug→ Delete All Breakpoint”删除所有的断点。执行菜单命令
,Show Next Breakpoint”,光标跳到下一个断点。
4.8 故障诊断
4.8.1 故障诊断的基本方法
模块故障 无法诊断当前组态与实际组态不匹配起动 停止 运行 保持强制与运行多机运行模式中被另一CPU触发停止
图 4-20 诊断符号
在管理器中用,View→ Online”打开在线窗口。查看是否有 CPU
显示诊断符号。
4.8.2 模块信息在故障诊断中的应用
1.打开模块信息窗口
建立在线连接后,在管理器中选择要检查的站,执行菜单命令
,PLC→ Diagnostics/ Settings→ Module Information”,显示该站中 CPU
模块的信息。诊断缓冲区( Diagnostic Buffer)标签页中,给出了 CPU
中发生的事件一览表。
图 4-21 CPU 模块的在线模块信息窗口
最上面的事件是最近发生的事件。因编程错误造成 CPU 进入
STOP 模式,选择该事件,并点击,Open Block”按钮,将在程序编辑器中打开与错误有关的块,显示出错的程序段。
4.8.3 用快速视窗和诊断视窗诊断故障
1.用快速视窗诊断故障
管理器中选择要检查的站,用命令,PLC→ Diagnostics/Settings→
Hardware Diagnose”打开 CPU 的硬件诊断快速视窗( Quick View),
显示该站中的故障模块。用命令,Option→ Customize”,在打开的对话框的,View”标签页中,应激活“诊断时显示快速视窗”。
图 4-22 快速视窗
2.打开诊断视窗
诊断视窗实际上就是在线的硬件组态窗口。在快速视窗中点击
,Open Station Online”(在线打开站)按键,打开硬件组态的在线诊断视窗。
在管理器中与 PLC 建立在线连接。打开一个站的,Hardware”对象,可以打开诊断视窗。
3.诊断视窗的信息功能
诊断视窗显示整个站在线的组态。用命令“PLC>Module
Information”查看其模块状态。
第 5 章 数字量控制系统梯形图设计方法
5.1.2 用经验法设计梯形图
1.起动、保持与停止电路
图5-1 起保停电路
I0.1
I0.0
Q4.1
Q4.1
Q4.1
I0.0 I0.1
图5-2 置位复位电路
Q4.1
Q4.1
I0.0
I0.1
R
S
经验设计法。
2.三相异步电动机的正反转控制
图5-3 异步电动机正反转控制电路图
M
KM2KM1
FU1
FU2
AC 380V
A
B
C
SB2 KM1
FR
SB1
KM2
KM1
FR
正转 反转
SB3
SB3 KM2
KM1
KM2
SB2
停车
1L
SB1
SB2
SB3
AC 220V
KM1
KM2
KM1
KM2
I0.0
I0.1
I0.2
Q4.0
Q4.1
I0.5
正转起动反转起动停车热继电器反转正转
FR
正转起动 停车 正转反转 正转反转停车 过载过载
I0.0
Q4.0
I0.2 I0.5 Q4.1 Q4.0
I0.1
Q4.1
I0.0 I0.2 I0.5 Q4.0 Q4.1
M
DC 24V
反转起动
I0.1
Network 1,
A I 1.0
= L20.0
A L20.0
A I 1.1
= Q4.3
A L20.0
A I 1.2
= Q4.4
//图 5-5 (b)中的程序
Network 1
A I 1.0
A I 1.1
= Q4.3
Network 2
A I 1.0
A I 1.2
= Q4.4
I1.0 I1.1
I1.2
Q4.3
Q4.4
I1.0 I1.1
I1.2
Q4.3
Q4.4I1.0
图5-5 梯形图
(a) (b)
Network 1:
Network 1:
Network 2:
A
3.常闭触点输入信号的处理
4.小车控制程序的设计
图5-6 PLC的外部接线图
1L
I0.3
SB1
SB2
SB3
AC 220V
KM1
KM2
KM1
KM2
I0.0
I0.1
I0.2
Q4.0
Q4.1
I0.5
I0.4
右行起动左行起动停车左限位右限位热继电器
左行右行
SQ1
SQ2
FR
MDC 24V
Q4.0 KM1Q4.1 KM2
SQ1 I0.4
SQ2I0.3
按下右行起动按钮 SB2,小车右行。暂停,左行,停止。
右起动右限位停车 右行左行右行左行停车左限位过载过载
I0.0
Q4.0
I0.4 I0.2 I0.5 Q4.1 Q4.0
I0.1
T0
Q4.1
I0.0 I0.3 I0.2 I0.5 Q4.0 Q4.1
I0.4
T0
SD
S5T#8S
左起动
I0.1
5.1.2 根据继电器电路图设计梯形图
图5-8 继电器电路图图5-10 梯形图图5-9 PLC外部接线图
SQ2
KA2
KA1 KA2 KA3KT
KT
KA1
KA2
KA3KA3 KA3
KA1
SB1
SQ1
DC 24V
+
-
SA
自动手动
YV11 YV2 YV12
SQ3
SB2
SQ1
方式选择 快进工进控制 快退控制暂停控制
I0.1 I0.2I0.3
快进工进快退暂停
SQ1 SQ2 SQ3
1L
I0.3
SB1
SQ1
DC 24V
YV11
YV12
I0.0
I0.1
I0.2
Q4.0
Q4.1
起动左限位中限位右限位
SQ3
SQ2
M
DC 24V
YV2
+-
I0.0
SA
自动
I0.3 I0.0
M0.1
I0.5
I0.5 M0.1
M0.3M0.2 Q4.0
Q4.2
M0.1 I0.1 M0.3
I0.5 I0.2
M0.2
M0.2
T0
SD
S5T#8S
I0.5
I0.4
T0
I0.3
M0.3
M0.3
Q4.1
KA1
KA2
KA3
YV11
YV12
YV2
KT
Q4.2
I0.5
M0.3
M0.2
SB2
I0.4快退
M0.1 M0.2 M0.3Q4.0 Q4.1Q4.2 T0
I0.1
M0.1
SQ3
I0.2
I0.2
液压动力滑台开始停在最左边,在自动模式开关 SA 闭合。按下起动按钮 SB1(I0.0),YV11 和 YV2 的线圈通电,快进;碰到中限位开关变为工进,YV2 的线圈断电;碰到右限位开关暂停 8sYV11 的线圈断电;时间到时快退,YV12 的线圈通电;返回初始位置时 YV12
的线圈断电,停止运动。
5.2 顺序控制设计法与顺序功能图
5.2.1 顺序控制设计法
顺序控制设计法将系统的一个工作周期划分为若干个顺序相连的阶段(步,Step),用编程元件 (例如 M)来代表各步。在任何一步内输出量的状态不变,相邻两步输出量总 的状态是不同的,步与各输出量有着极为简单的逻辑关系。
使系统由当前步进入下一步的信号称为转换条件。顺序控制设计法用转换条件控制代表各步的编程元件,让它们的状态按一定的顺序变化,然后用代表各步的编程元件去控制输出。
I0.1
I0.2I0.3
Q4.0
Q4.1
Q4.2
M0.0
M0.2
M0.1
Q4.0
Q4.1Q4.0
I0.0 I0.3
I0.2
I0.1
M0.3
T0
T0
I0.0 I0.1 I0.2
I0.3
M0.0
M0.1
M0.2
M0.3
快进工进快退
初始工进快进暂停
快进工进暂停初始步动作转换条件转换
M0.4 Q4.2
I0.3
快退
M0.4
快退暂停有向连线
.

55
图5-13 动作
动作A 动作A动作B
动作B
I2.3
M2.1
M2.1
I2.3
I0.1+I2.0
I0.1+I2.0
S5
I0.0
I2.1
S5
I0.0
I2.1
&
I3.5
&
I3.5
当系统正处于某一步所在的阶段时,该步处于活动状态,称该步为“活动步” 。
非存储型动作与存储型动作。
5.2.4 顺序功能图的基本结构
图5-15 单序列、选择序列与并行序列
(d)
1
2
3
d
e
5
810
h
k
9
12
jn
(a) (b)
3
46
57
10
i
e
i
fg
13
14
xw
15
16
z
y
(c)
4.复杂的顺序功能图举例
工件工件大钻头 小钻头
I0.2
I0.3
I0.4
I0.5
Q4.1
Q4.2
Q4.3
Q4.4
已钻完6个孔
旋转旋转到位
I0.4
I0.5
大孔已钻完 小孔已钻完上升到位 上升到位已松开
M0.7
起动已夹紧
C0
M1.0 Q4.5
I0.6
C0
I0.2
I0.3
M0.2
M0.3
M0.4
M0.5
M0.6
Q4.1 Q4.3
Q4.4Q4.2
I0.7
M1.1 Q4.6
C0 1减
I0.0 I0.3 I0.5
I0.1
M0.0
M0.1 Q4.0
预置图5-16 组合钻床示意图
钻孔松开夹紧未钻完
..
C0
图5-17 组合钻床的顺序功能图
5.2.5 顺序功能图中转换实现的基本规则
1.转换实现的条件
在顺序功能图中,步的活动状态的进展是由转换的实现来完成的。
转换实现必须同时满足两个条件,
(1) 该转换所有的前级步都是活动步;
(2) 相应的转换条件得到满足。
如果转换的前级步或后续步不止一个,转换的实现称为同步实现
(见图 5-18)。为了强调同步实现,有向连线的水平部分用双线表示。
2,转换实现应完成的操作
转换实现时应完成以下两个操作,
( 1)使所有由有向连线与相应转换符号相连的后续步都变为活动步;
( 2)使所有由有向连线与相应转换符号 相连的前级步都变为不活动步。
图5-18 转换的同步实现
M0.4 M0.7
M1.0 M1.4
I0.2 I2.7
.
5.2.6 绘制顺序功能图的注意事项
(1) 两个步绝对不能直接相连,必须用一个转换将它们隔开。
(2) 两个转换也不能直接相连,必须用一个步将它们隔开。
(3) 顺序功能图中的初始步对应于系统等待起动的初始状态,初始步是必不可少的。
(4) 顺序功能图中一般应有由步和有向连线组成的闭环。
5.2.7 顺序控制设计法的本质
图5-19 信号关系图
梯形图控制电路 电路输出
MIQQI
( )a ( )
b
5.3 使用起保停电路的顺序控制梯形图编程方法
5.3.1 设计顺序控制梯形图的一些基本问题
1.程序的基本结构
2.执行自动程序的初始状态
3.双线圈问题
4.设计顺序控制程序的基本方法
用存储器位 M 来代表步。顺序控制程序分为控制电路和输出电路两部分。
图5-20 自动/手动程序
公用程序自动程序
手动程序
JMP
CAS0
CAS0
I2.0
CAS1
JMP
CAS1I2.0

公用程序
I2.0
CALL
AUTO
I2.0
CALL
MAN
5.3.2 单序列的编程方法
1.控制电路的编程方法
起保停电路的起动电路只能接通一个扫描周期,必须用有记忆功能的电路来控制 M。
3.0M)2.0M1.0I1.0M(2.0M?+?=
2.输出电路的编程方法
图5-21 液压动力滑台的顺序功能图
M0.0
M0.2
M0.1
Q4.0
Q4.1Q4.0
I0.0 I0.3
I0.2
I0.1
M0.3 T0
T0
快进工进暂停初始步
M0.4 Q4.2
I0.3
快退
.
I0.3 M0.2M0.0 M0.1
M0.1 I0.1 M0.3
M0.2
M0.2
I0.0
M0.1
M0.1M0.4 M0.0I0.3
M0.0
Q4.1
M0.2 I0.2 M0.4
M0.3
M0.3
M0.3 T0 M0.0
M0.4
M0.4
T0
SD
S5T#8S
Q4.2
M0.1
M0.2
Q4.0
工进暂停快退初始步快进
I0.1 I0.2I0.3
快进工进快退暂停
起动
5.3.3 选择序列的编程方法
5.3.4 并行序列的编程方法
图5-23 梯形图图5-22 选择序列与并行序列
I0.0
M0.1
M0.2M0.0 M0.1
I0.1
M0.2
M0.3M0.1 M0.2
I0.2M0.0
M0.3
M0.4M0.2
M0.3
I0.4
M0.4
M0.0M0.3
M0.4
I0.3
M0.5
M0.6M0.2
M0.5
I0.5
M0.6
M0.0M0.5
M0.6
Q4.0
Q4.2
Q4.3
M0.3 M0.5Q4.2 Q4.3
I0.4
I0.6
I0.5
I0.0
I0.1
I0.3
I0.2Q4.0
Q4.1
M0.1
M0.2
M0.4 M0.6 Q4.4
Q4.4
M0.0
I0.6 M0.1M0.4 M0.0M0.6
M0.0
I0.3
M0.2
Q4.1
5.3.5 仅有两步的闭环的处理
图5-24 仅有两步的闭环的处理
M0.2
M0.3
M0.4
I0.2I0.3
(a)
(b)
I0.2
M0.3
M0.2M0.2
M0.3M0.4
(I0.3)
5.3.6 应用举例
图 5-25 中的物料混合装置用来将粉末状的固体物料(粉料)和液体物料(液料)按一定的比例混合在 一起,经过一定时间的搅拌后便得到成品。粉料和液料都用电子称来计量。
初始状态时粉料称料斗、液料称料斗和搅拌器都是空的,它们底部的排料阀关闭;液料仓的放料阀关 闭,粉料仓下部的螺旋输送机的电机和搅拌机的电机停转; Q4.0~ Q4.4 均为 0 状态。
PLC 开机后用 OB100 将初始步对应的 M0.0 置为 1 状态,将其余各步对应的存储器位复位为 0 状态,并将 MW10 和 MW12 中的计数预置值分别送给减计数器 C0 和 C1。
按下起动按钮 I0.0,Q4.0,Q4.1 变为 1 状态,开始进料。电子称的光电码盘输出与称斗内物料重量成正比的脉冲信号。减计数器 C0 和
C1 分别对粉料称和液料称产生的脉冲计数。脉冲计数值减至 0 时,
其常闭触点闭合,称斗内的物料等于预置值。 Q4.0,Q4.1 变为 0 状态,
停止进料。进入等待步后预置计数器。
Q4.3
Q4.4
Q4.2
I0.0
Q4.1
Q4.0
C1
T2 M1.0
粉料称量完 液料称量完停车 连续起动
C0
T2 M1.0
M0.1
M0.2
M0.3
= 1
Q4.0 Q4.1
I0.0
M0.0
放物料搅拌
M0.4 等待步
称斗排料结束T0
M0.5 Q4.2
T0
M0.6 Q4.3
排放成品搅拌时间到T1
M0.7 Q4.4
T2
T1
..
图5-26 物料混合控制系统顺序功能图
图5-25 物料混合控制系统顺序功能图
液料仓粉料仓粉料称称斗 液料称称斗搅拌器
Q4.0 Q4.1
Q4.2 Q4.3
Q4.4
Q4.2
Q4.3
预置 C0 预置 C1
T2T0 T1
放液料称斗排料搅拌排放成品放粉料起动初始步搅拌称斗排料
图5-27 物料混合控制系统的梯形图的梯形图
C0
M0.2
M0.5M0.1 M0.2
M0.4
M0.5M0.3 M0.4
Q4.1
C1
M1.0
I0.1I0.0 M1.0
连续
I0.0
M0.1
M0.2
M0.0
M0.1
I0.0
M0.3
M0.4
M0.0
M0.3
搅拌等待步放液料放粉料起动液料脉冲计数等待步粉料脉冲计数
T2
M0.0
M0.1M0.7 M0.0
初始
M1.0
Q4.0
T0
M0.6
M0.7M0.5
M0.6
T1
M0.7
M0.0M0.6
M0.7
Q4.4
T1
SD
S5T#30S
T2
SD
S5T#8S
M0.1
M0.6
M0.5
搅拌
Q4.3
称斗排料
M0.4
M0.5
M0.6M0.2 M0.5
Q4.2
T0
SD
S5T#5S
C0
I0.3
CD
C1
I0.4
CD
C1
SC
MW12
C0
SC
MW10
T2M0.7 M1.0
T2M0.7 M1.0
停止
5.4 使用置位复位指令的顺序控制梯形图编程方法
图5-28 以转换为中心的编程方法
M0.4 M0.7
M1.0 M1.4
I0.2 I2.7
.
M0.4 M0.7 M1.0
M0.4
R
S
I2.7
I0.2
M0.7
R
M1.4
S
5.4.1 单序列的编程方法
电机凸轮
图5-29 工作台旋转运动的顺序功能图与梯形图
M0.0
M0.2
M0.1
Q4.1
Q4.1
Q4.0
I0.0 I0.1
I0.1
I0.2
M0.3
Q4.0
正转反转正转初始步
M0.4 Q4.1
I0.1
反转
.
M0.1
M0.3
Q4.0
正转反转
起动
I0.1
I0.2
I0.3
Q4.0
M
I0.3
M0.2
M0.4
M0.0 I0.0 M0.1
M0.0
R
S
M0.1 I0.2 M0.2
M0.1
R
S
M0.2 I0.1 M0.3
M0.2
R
S
M0.3 I0.3 M0.4
M0.3
R
S
M0.4 I0.1 M0.0
M0.4
R
S
Q4.1
Q4.0
I0.1
5.4.2 选择序列的编程方法
5.4.3 并行序列的编程方法
M0.3 M0.5Q4.2 Q4.3
I0.4
I0.6
I0.5
I0.0
I0.1
I0.3
I0.2Q4.0
Q4.1
M0.1
M0.2
M0.4 M0.6 Q4.4
M0.0
M0.1 I0.1 M0.2
M0.1
R
S
M0.0 I0.2 M0.2
M0.0
R
S
M0.2 I0.3 M0.3
M0.2
R
S
M0.4 M0.6 M0.0
M0.4
R
S
I0.6
M0.0 I0.0 M0.1
M0.0
R
S
S
M0.5
M0.3 I0.4 M0.4
M0.3
R
S
M0.5 I0.5 M0.6
M0.5
R
S
M0.6
R
Q4.0M0.1
Q4.1M0.2
Q4.2M0.3
Q4.3M0.5
Q4.4M0.6
已钻完6个孔
旋转旋转到位
I0.4
I0.5
大孔已钻完 小孔已钻完上升到位 上升到位已松开
M0.7
起动已夹紧
C0
M1.0 Q4.5
I0.6
C0
I0.2
I0.3
M0.2
M0.3
M0.4
M0.5
M0.6
Q4.1 Q4.3
Q4.4Q4.2
I0.7
M1.1 Q4.6
C0 1减
I0.0 I0.3 I0.5
I0.1
M0.0
M0.1 Q4.0
C0
图5-31 组合钻床的顺序功能图
钻孔松开夹紧未钻完
..
预置
M0.1 I0.1
M0.2 I0.2 M0.3
M0.2
R
S
M0.4 M0.7 M1.0
M0.4
R
S
C0
M0.3 I0.3 M0.4
M0.3
R
S
M1.0 I0.6
M1.0
R
M0.7
R
Q4.0M0.1
Q4.1M0.2
Q4.2M0.3
Q4.3M0.5
Q4.4M0.6
M0.0 I0.0 I0.3 M0.1
M0.0
R
S
I0.5
M0.2
M0.1
R
S
S
M0.5
M0.5 I0.4 M0.6
M0.5
R
S
M0.6 I0.5 M0.7
M0.6
R
S
M0.2
S
S
M0.5
M0.4 M0.7 M1.1
M0.4
R
S
C0
M0.7
R
M1.1 I0.7 M0.0
M1.1
R
S
M0.0
Q4.5M1.0
Q4.6M1.1
C0
SC
C#3
C0
CD
图 5-32 组合钻床控制系统的梯形图
值得注意的是标有,CD”的 C0 的减计数线圈必须“紧跟”在图
5-32 中使 M0.7 置位的指令后面。这是因为如果 M0.4 先变为活动步,
M0.7 的“生存周期”非常短,M0.7 变为活动步后,在本次循环扫描周期内的下一个网络就被复位了。如果将 C0 的减计数线圈放在使
M0.7 复位的指令的后面,C0 还没有计数 M0.7 就被复位了,将不能执行计数操作。
5.5 具有多种工作方式的系统的顺序控制梯形图编程方法
图5-33 机械手示意图
I0.3
I0.1
I0.2
I0.4
夹紧松开
A点 B点工件
Q4.1
Q4.4
Q4.3
Q4.0Q4.2
图5-34 操作面板
单周期回原点手动 连续
上升
下降
左行
右行
起动
停止 紧急停车负载电源 松开
夹紧单步
I2.3
I2.2
I2.1
I0.5
I2.0
I0.6
I1.0 I1.1
I0.7
I1.2 I2.7
I2.6
I2.4
图5-35 外部接线图
KM
KM
KM KM
AC 220V
负载电源紧急停车
I0.2
I0.1
I0.3
I0.4
I0.5
I0.6
I0.7
I1.0
I2.0
I2.3
I2.4
L1
N
L+
Q4.0
Q4.1
Q4.2
Q4.3
S7-300
I2.1
I2.2
I1.1
I1.2
I2.6
I2.7
Q4.4
2M
DC 24V
1M
回原点起动停止手动单步单周期连续左限位右限位下限位上限位左行松开下降右行上升夹紧
下降夹紧上升右行
左行
N
I2.0
ENO
I2.4
连续手动
I2.3
I2.2
EN
FC2
图5-36 OB1程序结构
单周期单步公用
ENOEN
FC1
I2.1
ENOEN
FC4
ENOEN
FC3
自动回原点
原点条件初始状态左限位上限位 松开
Q4.1I0.4 I0.2 M0.5
M0.5
M0.5
M0.0
R
S
M0.0
图5-37 OB 100初始化程序
图5-38 公用程序夹紧松开左行上升右行下降原点条件初始状态
Q4.0
I1.2
I0.5 Q4.2
I0.7
Q0.1
Q0.1
Q4.2I1.0 Q4.0
I0.6 I0.2
I1.1 I0.2
Q4.3 Q4.4
Q4.4 Q4.3
I0.2
I0.1
I0.4
I0.3
左限位上限位 松开
Q4.1I0.4 I0.2 M0.5
M0.5I2.0
I2.1 M0.5 M0.0
R
S
I2.0
M0.0
EN
IN
ENO
MOVE
OUT
0MB2
手动回原点非初始步
R
S
图5-39 手动程序
R
M0.7
非连续方式时复位标志
I2.4
连续与左限位单周期与左限位图5-40 顺序功能图与梯形图
夹紧松开上升左行下降右行上升下降
M0.0 初始
I2.6 M0.5
M0.7 I0.4
.
M0.7 I0.4
.
M2.0
M2.2
M2.3
Q4.0
Q4.2
Q4.3
I0.1
上限位右限位
M2.4 Q4.0
下限位
M2.1
T0
S Q4.1
T0
M2.5
T1
R Q4.1
T1
M2.6 Q4.2
上限位
M2.7 Q4.4
下限位
I0.2
I0.1
I0.3
I0.2
1S
1S
M0.5 (I2.0 + I2.1)
.
.
原点起动
夹紧上升右行下降松开上升左行
连续下降转换允许起动 连续 停止
M0.6 M2.1M0.7 M2.0
I2.4
M0.7
I2.7I2.6 M0.7
M0.6
I2.2
I2.6
I2.6M0.0
I0.4M2.7
M2.0
M2.0 M0.6
M2.1
M2.2I0.1 M2.1
M2.1 M0.6
M2.2
M2.3T0 M2.2
M2.2 M0.6
M2.3
M2.4I0.2 M2.3
M2.3 M0.6
M2.4
M2.5I0.3 M2.4
M2.4 M0.6
M2.5
M2.6I0.1 M2.5
M2.5 M0.6
M2.6
M2.7T1 M2.6
M2.6 M0.6
M2.7
M2.0I0.2 M2.7M0.0
起动单步
M0.5
P
M4.0
初始连续
I0.4
M0.0
M0.7M2.7 M0.0M2.0M0.6
夹紧松开下降
M2.4
M2.0
M2.1 Q4.1
Q4.1M2.5
I0.1 Q4.0
T0
SD
S5T#1S
R
S
T1
SD
S5T#1S
上升右行左行
M2.2 I0.2 Q4.2
M2.6
I0.3M2.3 Q4.3
I0.4M2.7 Q4.4
图5-41 输出电路
图5-42 自动返回原点的顺序功能图与梯形图左行
(a) (b)
M1.0
Q4.3
I2.1 I2.6
R
Q4.0
Q4.1
R
I0.2
上限位左限位
M1.1
Q4.2
R
Q4.4I0.4
.
回原点启动
松开复位下降上升复位右行左行
I2.6
M1.0
I2.1
I0.2
M1.1
I0.4M1.0
M0.0
松开
M1.0
Q4.0
Q4.1
R
R
M1.1
M1.1
Q4.2
Q4.4
Q4.3
R
上升下降右行
5.6 顺序功能图语言 S7 Graph 的应用
5.6.1 S7 Graph 语言概述
S7 Graph 语言是 S7-300/400 的顺序功能图语言,遵从 IEC
61131-3 标准的规定。
1.顺序控制程序的结构
一个顺序控制项目至少需要一个调用 S7 Graph FB 的块,一个 S7
Graph FB 和它的背景数据块。
S2
S1
T1
T2
CALL FB1,DB1
INIT_SQ,=
FB1OB/FB/FC DB1
FC 70/71/72
图 5-45 顺序控制系统中的块
图 5-46 S7 Graph 编辑器
步与转换跳步分支中止选择序列的分支选择序列的合并并行序列的分支并行序列的合并选择对象预选/直接插入监视时间 T
插入监视时间 U
插入永久条件插入动作插入永久性
FB,FC调用插入顺序控制器
,Drag and Drop”
模式时与鼠标一起移动的图形
图 5-49 顺序控制器工具条与移动的图形
3,S7 Graph 的显示模式
在 View 菜单中选择显示顺序控制器( Sequencer)、单步和永久性指令。
( 1)在顺序控制器显示方式,执行菜单命令,View>Display
with”,可以选择,
Symbols:显示符号表中的符号地址;
Comments:显示块和步的注释;
Conditions and Actions:显示转换条件和动作;
Symbol List:在输入地址时显示下拉式符号地址表。
( 2)单步显示模式
只显示一个步和转换的组合,还可以显示 Supervision:监控被显示的步的条件; Interlock:对被显示的步互锁的条件;执行命令
,View>Display with> comments”显示和编辑步的注释。
用“↑”键或“↓”键可以显示上一个或下一个步与转换的组合。
( 3)在,permanent instructions”(永久性指令)显示方式,可以对顺序控制器之前或之后的永久性指令编程。 每个扫描循环执行一次永久性指令。可以调用块。
停车
R Q1.0
Y0
Y1
2号运输带
1号运输带
复位1号运输带
2号运输带运行置位1号运输带延时5s
M0.0
M0.1
M0.2
M0.3
S Q1.0
Q1.1
T0
I1.1
T1
I1.0
起动
5s6s
I1.0 I1.1
Q1.0
Q1.1
T0
T1
1号运输带
2号运输带
图 5-50 运输带控制系统示意图与顺序功能图
1,创建使用 S7 Graph 语言的功能块 FB
执行菜单命令,Insert → Direct”将进入,Direct”编辑模式。
执行菜单命令,Insert → Drag-and-Drop”,进入,Drag and Drop
(拖放),编辑模式。
执行菜单命令,View→ Display with→ Conditions and Actions”,
显示或关闭各步的动作和转换条件。
图 5-51 运输带控制系统的顺序功能图
( 1)命令 S;当步为活动步时,使输出置位为 1 状态并保持。
( 2)命令 R:当步为活动步时,使输出复位为 0 状态并保持。
( 3)命令 N:当步为活动步时,输出被置为 1;该步变为不活动步时,输出被复位为 0。
( 4)命令 L:用来产生宽度受限的脉冲,相当于脉冲定时器。
( 5)命令 CALL:用来调用块,当该步为活动步时,调用命令中指定的块。
( 6)命令 D:使某一动作的执行延时,延时时间在该命令右下方的方框中设置。
在“直接”模式用鼠标右键点击动作框,在弹出的菜单中选择插入动作行。
6.对监控功能编程
双击步 S3 后,切换到单步视图,选中 Supervision(监控)线圈左边的水平线的缺口处,插入比较器图标,设置的监视时间为 2 小时。
8.在主程序中调用 S7 Graph FB
9.用 S7-PLCSIM 仿真软件调试 S7 Graph 程序
图 5-52 单步显示模式中的监控与互锁条件
5.6.3 顺序控制器的运行模式与监控操作
执行菜单命令,Debug→ Control Sequencer”,对顺序控制器进行各种监控操作。
图 5-54 顺序控制器监控对话框
1.自动模式
,Acknowledge”按钮确认被挂起的错误信息。
点击“初始化( Initialize)”按钮,将重新起动顺序控制器,使之返回初始步。
点击“禁止( Disable)”按钮,使顺序控制器中所有的步变为不活动步。
2.手动模式
选择,Manual”模式后,用,Disable”按钮关闭当前的活动步。
在,Step Number”输入框中输入希望控制的步的编号,用激活
( Activate)按钮或去活( Unactivate)按钮来使该步变为活动步或不活动步。同时只能有 1 步是活动步。
3.单步( Inching)模式
在单步模式转换条件满足时,需要点击,Continue”按钮,才能使转换到下一步。
4,Automatic or switch to next 模式
转换条件未满足,用,Continue”按钮也能转换到后续步。转换条件满足将自动转换。
5.错误显示
有互锁( Interlock)错误或监控( Supervision)错误时,相应的检查框为红色。
5.6.4 顺序控制器中的动作
1.标准动作中的命令,S,R,N,L,D,CALL
标准动作可以设置互锁(在命令的后面加,C”),仅在步处于活动状态和互锁条件满足时,有互锁的 动作才被执行。没有互锁的动作在步处于活动状态时就会被执行。
2.与事件有关的动作
V1 V0 L1 L0
A1=1
S1 S0
步 监控信号 互锁信号报文确认信号A1:
R1,注册信号被置位图5-55 控制动作的事件
表 5-2 控制动作的事件
名称 事件意义
S1 步变为活动步
S0 步变为不活动步
V1 发生监控错误(有干扰)
V0 监控错误消失(无干扰)
L1 互锁条件解除
L0 互锁条件变为 1
A1 报文被确认
R1 注册信号被置位,在输入信号
REG_EF/REG_S 的上升沿
ON 命令或 OFF 命令分别使命令所在的步之外的其他步变为活动步或不活动步。
如果命令 OFF 的地址标识符为 S _ALL,将除了命令,S1(V1,L1)
OFF”所在的步之外其他的步变为不活动步。
S1 RC
V1 OFF
L0 CALL
Step 3S3
Step 3 Q2.1
S_ALL
FB 2
图5-56 步与动作
S0 ON S7
一旦 S3 变为活动步和互锁条件满足,指令,S1 RC”使输出 Q2.1
复位为 0 并保持为 0。
一旦监控错误发生 (出现 V1 事件),除了动作中的命令,V1 OFF”
所在的步 S3,其他的活动步变为不活动步。
S3 变为不活动步时(出现事件 S0),将步 S7 变为活动步。
只要互锁条件满足(出现 L0 事件),就调用指定的功能块 FB 2。
4.动作中的计数器
有互锁功能的计数器在互锁条件满足 和指定的事件出现时,动作中的计数器才会计数。
事件发生时,计数器指令 CS 将初值装入计数器。 CS 指令下面一行是要装入的初值。
事件发生时,CU,CD,CR 指令使计数值分别加 1、减 1 或将计数值复位为 0。
5.动作中的定时器
事件出现时定时器被执行。互锁功能也可以用于定时器。
TL 为扩展的脉冲定时器命令,一旦事件发生,定时器被起动。
TD 命令用来实现定时器位有闭锁功能的延迟。一旦事件发生,定时器被起动。互锁条件 C 仅仅在定时器被起动的那一时刻起作用。
S1 CU
S1 N
Step 4S4
Step 4 C4
A:=A+1
图5-57 步与动作
S1 TD T3
S5T#4S
( 4) TR 是复位定时器命令,一旦事件发生,定时器位与定时值被复位为 0。
当图 5-57 中的步 S4 变为活动步,事件 S1 使计数器 C4 的值加 1。
C4 可以用来计步 S4 变为活动步的次数。只要步 S4 变为活动步,事件 S1 使 A 的值加 1。
S4 变为活动步后,T3 开始定时,4s 后 T3 的定时器位变为 1 状态。
5.动作中的算术运算
在动作中可以使用,A:=B; A:=函数 (B) ; A:=B<运算符号 >C。
A:=函数 (B);
5.6.5 顺序控制器中的条件
1.转换条件
2,互锁条件:如果互锁条件的逻辑满足,受互锁控制的动作被执行。
3.监控条件:如果监控条件的逻辑运算满足,表示有干扰事件
V1 发生。顺序控制器不会转换到下一步,保持当前步为活动步。如果监控条件的逻辑运算不满足,表示没有干扰,如果转换条件满足,
转换到下一步。只有活动步被监控。
4,S7 Graph 地址在条件中的应用
可以在转换、监控、互锁、动作和永 久性的指令中,以地址的方式使用关于步的系统信息 (见表 5-3)。
表 5-3 S7 Graph 地址
地址 意义 应用于
Si.T 步 i 当前或前一次处于活动状态的时间 比较器,设置
Si.U 步 i 处于活动状态的总时间,不包括干扰的时间
比较器,设置
Si.X 指示步 i 是否是活动的 常开触点、常闭触点
Transi.TT 检查转换 i 所有的条件是否满足 常开触点、常闭触点
表 5-4 FB 的参数集
名称 任务
Minimum 最小参数集,只用于自动模 式,不需要其他控制和监视功能
Standard 标准参数集,有多种操作方 式,需要反馈信息,可选择确认报文
Definable/
Maximum(V5)
可定义最大参数集,需要更 多的操作员控制和用于服务和调试的监视功能,它们由 V5 的块提供
5.6.7 用 S7 Graph 编写具有多种工作方式的控制程序
1.初始化程序、手动程序与自动回原点程序
OB100 中的初始化程序与 5.5 节中的图 5-37 完全相同。手动程序
FC 2 与 5.5 节中的图 5-39 完全相同。自动返回原点的梯形图程序 FC
3 与 5.5 节图 5-42(b)中的相同。
图 5-61 主程序 OB1
S7 Graph FB 的参数有好几十个,图 5-61 中的 FB1 使用的是标准参数级,下面介绍图中使用的参数,
连续、单周期或单步时“自动方式” M0.3 为 1,调用 FB1。
参数 INIT_SQ(,自动允许” M0.0)为 1:原点条件满足,激活初始步,复位顺序控制器。
参数 OFF_SQ 为 1(,自动允许” M0.0=0),复位顺序控制器,所有的步变为不活动步。
参数 ACK_EF(,确认故障” I1.3)为 1:确认错误和故障,强制切换到下一步。
参数 SW_AUTO(,单周连续” M0.2)为 1:切换到自动模式。
参数 SW_TAP(,单步” I2.2)为 1:切换到 Inching(单步 )模式。
参数 T_PUSH(,起动按钮” I2.6),条件满足并且在 T_PUSH 的上升沿时,转换实现。
参数 ERR_FLT(,错误报警” Q4.5)为 1:组故障。
表 5-9 符号表
符号 地址
符号 地址
符号 地址 符号 地址 符号 地址
自动数据块
DB1
松开按钮
I0.7
单步
I2.2
自动方式
M0.3
下降阀
Q4.0
下限位
I0.1
下降按钮
I1.0
单周期
I2.3
原点条件
M0.5
夹紧阀
Q4.1
上限位
I0.2
右行按钮
I1.1
连续
I2.4
转换允许
M0.6
上升阀
Q4.2
右限位
I0.3
夹紧按钮
I1.2
起动按钮
I2.6
连续标志
M0.7
右行阀
Q4.3
左限位
I0.4
确认故障
I1.3
停止按钮
I2.7
回原点上升
M1.0
左行阀
Q4.4
上升按钮
I0.5
手动
I2.0
自动允许
M0.0
回原点左行
M1.1
错误报警
Q4.5
左行按钮
I0.6
回原点
I2.1
单周连续
M0.2
夹紧延时
M1.2
图 5-62 公用程序
连续标志 M0.7 的控制电路放在 FB1 的顺序控制器之前的永久性指令中。
图 5-63 顺序控制器之前的永久性指令
2.初始化程序、手动程序与自动回原点程序
OB100 中的初始化程序与 5.5 节中的图 5-37 完全相同。手动程序
FC 2 与 5.5 节中的图 5-39 完全相同。自动返回原点的梯形图程序 FC
3 与 5.5 节图 5-42(b)中的相同。
FB1 是自动程序(单步、单周期、连续) 。
单步 I2.2= SW_TAP= 1 时有单步功能。
单周连续 M0.2=SW_AUTO=1 时顺序控制器正常运行。
在顺序控制器中,用永久性指令中的 M0.7(连续标志)区分单周期和连续模式。
第 6 章 S7-300/400 的用户程序结构
6.1 用户程序的基本结构
6.1.1 用户程序中的块
操作系统处理起动、刷新过程映 像表、调用用户程序、处理中断和错误、管理存储区和处理通信等 。用户程序包含处理用户特定的自动化任务所需要的所有功能。
用户程序和所需的数据放置在块中,使程序部件标准化,用户程序结构化,可以简化程序组织,使程 序易于修改、查错和调试。块结构显著地增加了 PLC 程序的组织透明性、可理解性和易维护性。
表 6-1 用户程序中的块
块 简要描述
组织块 ( OB) 操作系统与用户程序的接口,决定用户程序的结构
系统功能块
( SFB)
集成在 CPU 模块中,通过 SFB 调用一些重要的系统功能,有存储区
系统功能
( SFC)
集成在 CPU 模块中,通过 SFC 调用一些重要的系统功能,无存储区
功能块( FB) 用户编写的包含经常使用的功能的子程序,有存储区功能( FC) 用户编写的包含经常使用的功能的子程序,无存储区背景数据块
( DI)
调用 FB 和 SFB 时用于传递参数的数据块,在编译过程中自动生成数据
共享数据块
( DB)
存储用户数据的数据区域,供所有的块共享
1.组织块 (OB)
控制扫描循环和中断程序的执行,PLC 的启动和错误处理等。
( 1) OB1 用于循环处理,用户程序中的主程序。
( 2)事件中断处理,需要时才被及时地处理。
( 3)中断的优先级,高优先级的 OB 可以中断低优先级的 OB。
2.临时局域数据
生成逻辑块( OB,FC,FB)时可以声明临时局域数据。这些数据是临时的,局域( Local)数据,只能在生成它们的逻辑块内使用。
所有的逻辑块都可以使用共享数据块中的共享数据。
3.功能( FC)
没有固定的存储区的块,其临时变量 存储在局域数据堆栈中,功能执行结束后,这些数据就丢失了 。用共享数据区来存储那些在功能执行结束后需要保存的数据。
调用功能和功能块时用实参(实际参数)代替形参(形式参数)。
形参是实参在逻辑块中的名称,功能不需要背景数据块。功能和功能块用 IN,OUT 和 IN_OUT 参数做指针,指向调用它的逻辑块提供的实参。功能可以为调用它的块提供数据类型为 RETURN 的返回值。
4.功能块( FB)
功能块是用户编写的有自己的存储区(背景数据块)的块,每次调用功能块时需要提供各种类型的数据给功能块,功能块也要返回变量给调用它的块。这些数据以静态变量( STAT)的形式存放在指定的背景数据块 (DI) 中,临时变量 TEMP 存储在局域数据堆栈中。
调用 FB 或 SFB 时,必须指定 DI 的编号。在编译 FB 或 SFB 时自动生成背景数据块中的数据。一个功 能块可以有多个背景数据块,用于不同的被控对象。
可以在 FB 的变量声明表中给形参赋初值。如果调用块时没有提供实参,将使用上一次存储在 DI 中的参数。
5.数据块
数据块中没有 STEP 7 的指令,STEP 7 按数据生成的顺序自动地为数据块中的变量分配地址。数据块分为共享数据块和背景数据块。
应首先生成功能块,然后生成它的背 景数据块。在生成背景数据块时指明它的类型为背景数据块( Instance)和它的功能块的编号。
图6-1 用于不同对象的背景数据块
FB22:电机
DB201,电机1
DB202,电机2
DB203,电机3
电机1的背景数据块电机2的背景数据块电机3的背景数据块
6.系统功能块 SFB 和系统功能 SFC
系统功能块和系统功能是为用户 提供的已经编好程序的块,可以调用不能修改。操作系统的一部分,不占用户程序空间。 SFB 有存储功能,其变量保存在指定给它的背景数据块中。
7.系统数据块 (SDB)包含系统组态数据,例如硬件模块参数和通信连接参数等。
CALL,CU(无条件调用)和 CC( RLO = 1 时调用)指令调用没有参数的 FC 和 FB。
6.1.2 用户程序使用的堆栈
图6-2 堆栈操作入栈前 入栈后 出栈前 出栈后
iv1
iv2
iv3
iv4
iv5
iv6
iv7
iv8
iv0
iv1
iv2
iv3
iv4
iv5
iv6
iv7 x
iv0
iv1
iv2
iv3
iv4
iv5
iv6
iv7
iv1
iv2
iv3
iv4
iv5
iv6
iv7
iv0
图6-3 块堆栈与局域数据堆栈
OB1 FC2
OB81
块堆栈
OB81的块号和返回地址
FC2的块号和返回地址
OB1的块号和返回地址局域数据堆栈
OB81的局域数据
FC2的局域数据
OB1的局域数据
堆栈采用“先入后出”的规则存入和 取出数据。最上面的存储单元称为栈顶。
1.局域数据堆栈( L)
存储块的局域数据区的临时变量、组织块的启动信息、块传递参数的信息和梯形图程序的中间结果。可以按位、字节、字和双字来存取,例如 L 0.0,LB9,LW4 和 LD52。各逻辑块均有自己的局域变量表,局域变量仅在它被创建的逻辑块中有效。
2.块堆栈( B 堆栈)
存储被中断的块的类型、编号和返回地址;从 DB 和 DI 寄存器中获得的块被中断时打开的共享数据块和背景数据块的编号; 局域数据堆栈的指针。
3.中断堆栈( I 堆栈)
当前的累加器和地址寄存器的内容,数据块寄存器 DB 和 DI 的内容、局域数据的指针、状态字,MCR(主控继电器)寄存器和 B 堆栈的指针。
6.1.3 线性化编程与结构化编程
1,线性化编程,整个用户程序放在循环控制组织块 OB1(主程序)
中。
2.模块化编程:程序被分为不同的逻辑块,每个块包含完成某些任务的逻辑指令。
3.结构化编程:将复杂的自动化任务分解为小任务,这些任务由相应的逻辑块来表示,程序运行时所需的大量数据和变量存储在 数据块 中。调用时将“实参”赋值给形参。
OB1
FB1
FB2
FC1
FC2
FB3
SFC1
IDB1
IDB2
DB1
操作系统循环开始嵌套深度
IDB3
创建顺序,FC1→ FB1 及其背景数据块→ OB1,被调用的块应该是已经存在的。
6.2.1 发动机控制系统的用户程序结构
柴油机数据
DB2
汽油机数据
DB1
调用
FB1
OB1
调用
FC1
图6-5 程序结构共享数据块
FB3
3.局域变量的类型
( 1) IN(输入变量 ):由调用它的块提供的输入参数。
( 2) OUT(输出变量 ):返回给调用它的块的输出参数。
( 3) IN_OUT:初值由调用它的块提供,被子程序修改后返回给调用它的块。
( 4) TEMP (临时变量 ):暂时保存在局域数据区中的变量。
( 5) STAT(静态变量),在功能块的背景数据块中使用。关闭功能块后,其静态数据保持不变。功能( FC)没有静态变量。
表 6-3 FB1 的变量声明表
Name Data
Type
Address Declare Initial
Value
Comment
Switch_On Bool 0.0 IN FALSE 起动按钮
Switch_Off Bool 0.1 IN FALSE 停车按钮
Failure Bool 0.2 IN FALSE 故障信号
Actual_Speed Int 2.0 IN 0 实际转速
Engine_On Bool 4.0 OUT FALSE 控制发动机的输出信号
Preset_Speed_Reached Bool 4.1 OUT FALSE 达到预置转速
Preset_Speed Int 6.0 STAT 1500 预置转速
5.程序库
6.2.3 功能块与功能
表 6-4 FC1 的变量声明表
Name Data
Type
Declare Comment
Engine_On Bool IN 输入信号,发动机运行
Timer_Function Timer IN 停机延时的定时器功能
Fan_On Bool OUT 控制风扇的输出信号
6.2.4 功能块与功能的调用
为了能全部转换为图 6-10 中的梯形图,下面的语句表还需要增加一些语句。
Network1:自动手动切换
A "自动 "
S "自动模式 "
A "手动 "
R "自动模式 "
Network2:汽油机控制
CALL "发动机控制 ","汽油机数据 "
Switch_On,= "起动汽油机 "
Switch_Off,= "关闭汽油机 "
Failure,= "汽油机故障 "
Actual_Speed,= "汽油机转速 "
Engine_On,= "汽油机运行 "
Preset_Speed_Reached,= "汽油机到达设置转速 "
Network3:汽油机风扇控制
CALL "风扇控制 "
Engine_On,= "汽油机运行 "
Timer_Function,= "汽油机风扇延时 "
Fan_On,= "汽油机风扇运行 "
6.3 数据块
6.3.1 数据块中的数据类型
1.基本数据类型
基本数据类型包括位( Bool),字节( Byte)、字( Word)、双字( Dword)、整数( INT)、双整数( DINT)和浮点数( Float,或称实数 Real)等。
2.复合数据类型
日期和时间用 8 个字节的 BCD 码来存储。第 0~ 5 号字节分别存储年、月、日、时、分和秒,毫秒存储在字节 6 和字节 7 的高 4 位,
星期存放在字节 7 的低 4 位。 例如 2004 年 7 月 27 日 12 点 30 分 25.123
秒可以表示为 DT#04-07-27-12:30:25.123。
字符串( STRING)由最多 254 个字符( CHAR)和 2 字节的头部组成。字符串的默认长度为 254,通过定义字符串的长度可以减少它占用的存储空间。
3.数组
数组( ARRAY)是同一类型的数据组合而成的一个单元。
ARRAY[1..2,1..3]是一个二维数组,共有 6 个整数元素。最多为 6 维。
数组元素,TANK”.PRESS[2,1],TANK 是数据块的符号名,PRESS
是数组的名称。方括号中是数组元素 的下标。如果在块的变量声明表中声明形参的类型为 ARRAY,可以将整个数组而不是某些元素作为参数来传递。
整数整数整数整数整数整数
1,1
1,2
1,3
2,1
2,2
2,3
图6-10 二维数组的结构
4.结构
结构( STRUCT)是不同类型的数据的组合。可以用基本数据类型、复杂数据类型,和,UDT 作为结构中的元素,可以嵌套 8 层。
数据块 TANK 内结构 STACK 的元素 AMOUNT 应表示为,TANK”.STACK.AMOUNT。
将结构作为参数传递时,作为形参和 实参的两个结构必须有相同的数据结构,即相同数据类型的结构元素和相同的排列顺序。
5.用户定义数据类型
用户定义数据类型( UDT)是一种特殊的数据结构,由用户自己生成,定义好后可以在用户程序中多次使用。
例如可以生成用于颜料混合配方的 UDT,然后用它生成用于不同颜色配方的数据组合。
6.3.2 数据块的生成与使用
菜单命令,View→ Declaration View”和,View→ Data View”分别指定声明表显示方式和数据显示方式。 声明表显示状态用于定义和修改共享数据块中的变量。
6.4 多重背景
FB1
FB1
发动机控制
FB10
CALL FB1(汽油机)
CALL FB1(柴油机)
OB1
调用
FC1
共享数据块
DB10
汽油机数据柴油机数据
6.4.1 多重背景功能块
生成 FB10 时应激活,Multiple Instance FB” (多重背景功能块)
选项。应首先生成 FB1。为调用 FB1,在 FB10 的变量声明表中声明了两个名为,Petrol_Engine(汽油机),和,Diesel_Engine(柴油机),
的静态变量( STAT),其数据类型为 FB1 。生成 FB10 后,
,Petrol_Engine”和,Diesel_Engine”将出现 在 管理器编程元件目录的,Multiple Instances(多重背景),文件夹内。可以将它们“拖放”
到 FB 10 中,然后指定它们的输入参数和输出参数。
6.4.2 多重背景数据块 其中的数据自动产生。
6.4.3 在 OB1 中调用多重背景
图 6-21 中调用 FB10(符号名为“发动机” )的语句表为,
Network4:调用多重背景
CALL "发动机 ","多重背景数据块 "
Preset_Speed_Reached,="两台都达到设置转速 "
图 6-17 FB10 的变量声明表
图 6-18 多重背景功能块 FB10
使用多重背景时应注意以下问题,
( 1)首先应生成需要多次调用的功能块(例如上例中的 FB1)。
( 2)管理多重背景的功能块(例如上例中的 FB10)必须设置为有多重背景功能。
( 3)在管理多重背景的功能块的变量声明表中,为被调用的功能块的每一次调用定义一个静态( STAT)变量,以被调用的功能块的名称(例如 FB1)作为静态变量的数据类型。
( 4)必须有一个背景数据块(例如上例中的 DB10)分配给管理多重背景的功能块。背景数据块中的数据是自动生成的。
( 5)多重背景只能声明为静态变量(声明类型为,STAT”)。
6.5 组织块与中断处理
组织块是操作系统与用户程序之间的接口。用组织块可以响应延时中断、外部硬件中断和错误处理等。
6.5.1 中断的基本概念
1.中断过程
中断处理用来实现对特殊内部事件或外部事件的快速响应。 CPU
检测到中断请求时,立即响应中断,调用中断源对应的中断程序
( OB) 。执行完中断程序后,返回被中断的程序。
中断源,I/O 模块的硬件中断,软件中断,例如日期时间中断、
延时中断、循环中断和编程错误引起的中断。
中断源的中断优先级与中断程序的嵌套调用。操作系统对现场进行保护。被中断的 OB 的局域数据压入 L 堆栈,I 堆栈(中断堆栈),
B 堆栈(块堆栈) 。
2.组织块的分类
组织块只能由操作系统起动,它由变 量声明表和用户编写的控制程序组成。
( 1)起动组织块 OB100~ OB102
( 2)循环执行的组织块
( 3)定期执行的组织块
( 4)事件驱动的组织块
延时中断、硬件中断、异步错误中断 OB80~ OB87,同步错误中断 OB121 和 OB122。
3.中断的优先级
下面是优先级的顺序(后面的比前面的优先),背景循环、主程序扫描循环、日期时间中断、时间延时 中断、循环中断、硬件中断、多处理器中断,I/O 冗余错误、异步故障 (OB80~87)、启动和 CPU 冗余,
背景循环的优先级最低。
4.对中断的控制
日期时间中断和延时中断有专用的允许处理中断和禁止中断的系统功能( SFC)。
SFC 39,DIS_INT”用来禁止所有的中断、某些优先级范围的中断、或指定的某个中断。 SFC 40,EN_INT”用来激活(使能)新的中断和异步错误处理。如果用户希望 忽略中断,可以下载一个只有块结束指令 BEU 的空的 OB。
SFC 41,DIS_AIRT” 延迟处理比当前优先级高的中断和异步错误。
SFC 42,EN_ AIRT”允许立即处理被 SFC 41 暂时禁止的中断和异步错误。
6.5.2 组织块的变量声明表
OB 没有背景数据块和静态变量,只有 20 个字节组成的包含 OB
的起动信息的变量声明表(临时变量) 。
表 6-6 OB 的变量声明表
字节地址
内容
0
事件级别与标识符,例如 OB40 为 B#16#11,表示硬件中断被激活
1
用代码表示与起动 OB 的事件有关的信息
2
优先级,例如 OB40 的优先级为 16
3
OB 块号,例如 OB40 的块号为 40
4~ 11 附加信息,例如 OB40 的第 5 字节为产生中断的模块的类型,16#54 为输入模块,16#55 为输出模块;第 6,7 字节组成的字为产生中断的模块的起始地址;第 8~ 11 字节组成的双字为产生中断的通道号
12~ 19 OB 被起动的日期和时间(年、月、日、时、分、秒、毫秒与星期)
6.5.3 日期时间中断组织块( OB10~ OB17)
CPU 可以使用的日期时间中断 OB 的个数与 CPU 的型号有关。
S7-300 只能用 OB10。
可以在某一特定的日期和时间执行一 次,也可以从设定的日期时间开始,周期性地重复执行,例如每分钟、每小时、每天、甚至每年执行一次。可以用 SFC 28~ SFC 30 取消、重新设置或激活日期时间中断。
1.设置和起动日期时间中断
( 1)用 SFC 28,SET_TINT”和 SFC 30,ACT_TINT”设置和激活日期时间中断。
( 2)在硬件组态工具中设置和激活。
( 3)在硬件组态工具中设置,用 SFC 30,ACT_TINT”激活日期时间中断。
2.调用 SFC 31,QRY_TINT”查询日期时间中断
3.禁止与激活日期时间中断
用 SFC 29,CAN_TINT”取消(禁止)日期时间中断,用 SFC 28
,SET_TINT”重新设置那些被禁止的日期时间中断,用 SFC 30
,ACT_TINT”重新激活日期时间中断。
在调用 SFC 28 时,如果参数,OB10_PERIOD_EXE”为十六进制数 W#16#0000,W#16#0201,W#16#0401,W#16#1001,W#16#1201,
W#16#1401,W#16#1801 和 W#16#2001,分别表示执行一次,每分钟、
每小时、每天、每周、每月、每年和月末执行一次。
6.5.4 延时中断组织块
延时中断以 ms 为单位定时。 CPU 可以使用的延时中断 OB 的个数与 CPU 的型号有关。
用 SFC 32,SRT_DINT”起动,经过设定的时间触发中断,调用
SFC 32 指定的 OB。延时中断可以用 SFC 33,CAN_DINT”取消。
用 SFC 34,QRY_DINT”查询延时中断的状态。
6.5.5 循环中断组织块
CPU 可以使用的日期时间中断 OB 的个数与 CPU 的型号有关。
设 OB38 和 OB37 的时间间隔分别为 10ms 和 20ms,它们的相位偏移分别为 0ms 和 3ms。 OB38 分别在 10 ms,20ms,……,60ms 时产生中断,而 OB37 分别在 t = 23ms,43ms,63ms 时产生中断。可以用 SFC 40 和 SFC 39 来激活和禁止循环中断。
表 6-7 循环 OB默认参数
OB号 时间间隔 优先级 OB号 时间间隔 优先级
OB30 5s 7 OB35 100ms 12
OB31 2s 8 OB36 50ms 13
OB32 1s 9 OB37 20ms 14
OB33 500ms 10 OB38 10ms 15
OB34 200ns 11
6.5.6 硬件中断组织块
硬件中断组织块( OB40~ OB47)用于快速响应信号模块( SM,
即输入 /输出模块)、通信处理器( CP)和功能模块( FM)的信号变化。
硬件中断被模块触发后,操作系统将自动识别是哪一个槽的模块和模块中哪一个通道产生的硬件中断。硬件中断 OB 执行完后,将发送通道确认信号。
执行OB40
硬件中断信号
OB40
图6-17 硬件中断信号的处理
调用OB40 调用OB40
如果正在处理某一中断事件,又出现 了同一模块同一通道产生的完全相同的中断事件,新的中断事件将丢失。
如果正在处理某一中断信号时同一模块中其他通道或其它模块产生了中断事件,当前已激活的硬件 中断执行完后,再处理暂存的中断。
用 PLCSIM 的菜单命令,Execute→ Trigger Error OB→ Hardware
Interrupt (OB40-OB47)…”打开,Hardware Interrupt (OB40-OB47)”
对话框,输入模块的起始地址和位地址 0。按,Apply”键触发指定的硬件中断,按,OK”键将执行与,Apply”键同样的操作,同时退出对话框。
6.5.7 起动时使用的组织块
1,CPU 模块的启动方式
( 1)暖启动 (Warm Restart)
S7-300 CPU(不包括 CPU 318)只有暖起动。过程映像数据以及非保持的 M/T/C。有保持功能的 M/T/C/DB 将保留原数值。模式开关扳由 STOP 板到 RUN 位置。
( 2)热起动 (Hot Restart 仅 S7-400 有 )
在 RUN 状态时如果电源突然丢失,然后又重新上电,从上次 RUN
模式结束时程序被中断之处继续执行,不对计数器等复位。
( 3)冷启动 (Cold Restart,CPU 417 和 CPU 417H)
冷启动时,过程数据区的 I,Q,M,T,C,DB 等被复位为零。模式开关扳到 MRES 位置。
2.启动组织块( OB100~ OB102)
在暖起动,热起动或冷起动时,操作系统分别调用 OB100,OB101
或 OB102。
6.5.8 异步错误组织块
1.错误处理概述
S7-300/400 有很强的错误(或称故障)检测和处理能力。 PLC 内部的功能性错误或编程错误,而不是外部设备的故障。 CPU 检测到错误后,操作系统调用对应的组织块,用户可以在组织块中编程,对发生的错误采取相应的措施。对于大多数错误,如果没有给组织块编程,出现错误时 CPU 将进入 STOP 模式。
表6-8 错误处理组织块
OB 号 错误类型 优先级
OB 70 I/O 冗余错误(仅 H 系列 CPU) 25
OB 72 CPU 冗余错误(仅 H 系列 CPU) 28
OB 73 通信冗余错误(仅 H 系列 CPU) 25
OB 80 时间错误 26
OB 81 电源故障
OB 82 诊断中断
OB 83 插入 /取出模块中断
OB 84 CPU 硬件故障
OB 85 优先级错误
OB 86 机架故障或分布式 I/O 的站故障
OB 87 通信错误
26/28
OB 121 编程错误
OB 122 I/O 访问错误
引起错误的
OB 的优先级
为避免发生某种错误时 CPU 进入停机状态,可以在 CPU 中建立一个对应的空的组织块。
2.错误的分类
被 S7 CPU 检测到并且用户可以通过组织块对其进行处理的错误分为两个基本类型,
( 1)异步错误
异步错误是与 PLC 的硬件或操作系统密切相关的错误,与程序执行无关。后果严重。异步错误 OB 具有最高等级的优先级,其他 OB
不能中断它们。同时有多个相同优先级的异步错误 OB 出现,将按出现的顺序处理。
( 2)同步错误( OB121 和 OB122)
同步错误是与程序执行有关的错误,其 OB 的优先级与出现错误时被中断的块的优先级相同,即同步错误 OB 中的程序可以访问块被中断时累加器和状态寄存器中的内容。对错误进行处理后,可以将处理结果返回被中断的块。
3.电源故障处理组织块( OB81)
电源故障包括后备电池失效或未安装,S7-400 的 CPU 机架或扩展机架上的 DC 24V 电源故障。电源故障出现和消失时操作系统都要调用 OB81。
4.时间错误处理组织块( OB80)
循环监控时间的默认值为 150ms,时间错误包括实际循环时间超过设置的循环时间、因为向前修改时间而跳过日期时间中断、处理优先级时延迟太多等。
5.诊断中断处理组织块( OB82)
OB82 在下列情况时被调用:有诊断功能的模块的断线故障,模拟量输入模块的电源故障,输入信号超 过模拟量模块的测量范围等。错误出现和消失时,操作系统都会调用 OB82。用 SFC 51,RDSYSST”
可以读出模块的诊断数据。
6.插入 /拔出模块中断组织块( OB83)
S7-400 可以在 RUN,STOP 或 STARTUP 模式下带电拔出和插入模块,但是不包括 CPU 模块、电源模块、接口模块和带适配器的 S5
模块,上述操作将会产生插入 /拔出模块中断。
7,CPU 硬件故障处理组织块( OB84)
当 CPU 检测到 MPI 网络的接口故障、通信总线的接口故障或分布式 I/O 网卡的接口故障时,操作系统调用 OB84。故障消除时也会调用该 OB 块。
8.优先级错误处理组织块( OB85)
在以下情况下将会触发优先级错误中断,
( 1)产生了一个中断事件,但是对应的 OB 块没有下载到 CPU;
( 2)访问一个系统功能块的背景数据块时出错。
( 3)刷新过程映像表时 I/O 访问出错,模块不存在或有故障。
9.机架故障组织块( OB86)
( 1)机架故障,例如找不到接口模块或接口模块损坏,或者连接电缆断线;
( 2)机架上的分布式电源故障;
( 3) 在 SINEC L2-DP总线系统的主系统中有一个 DP从站有故障。
10.通信错误组织块( OB87)
( 1)接收全局数据时,检测到不正确的帧标识符( ID);
( 2)全局数据通信的状态信息数据块不存在或太短;
( 3)接收到非法的全局数据包编号。
6.5.9 同步错误组织块
1.同步错误
同步错误是与执行用户程序有关的错误,OB121 用于对程序错误的处理; OB122 用于处理模块访问错误。
同步错误 OB 的优先级与检测到出错的块的优先级一致。
同步错误可以用 SFC 36,MASK_FLT”来屏蔽,用错误过滤器中的一位用来表示某种同步错误是否被屏蔽。 错误过滤器分为程序错误过滤器和访问错误过滤器,分别占一个双字。屏蔽后的错误过滤器可以读出。
表 6-9 SFC 36,MSK_FLT”的局域变量表
参数 声明
数据类型
存储区 描述
PRGFLT_SET_MASK INPUT DWORD
I,Q,M,D,L,常数
要屏蔽的程序错误
ACCFLT_SET_MASK INPUT DWORD
I,Q,M,D,L,常数
要屏蔽的访问错误
RET_VAL OUTPUT INT I,Q,M,D,L
错误信息返回值
PRGFLT_MASKED OUTPUT DWORD I,Q,M,D,L
被屏蔽的程序错误
ACCFLT_MASKED OUTPUT DWORD I,Q,M,D,L
被屏蔽的访问错误
调用 SFC 37,DMSK_FLT”并且在当前优先级被执行完后,将解除被屏蔽的错误。
可以用 SFC 38,READ_ERR”读出已经发生的被屏蔽的错误。
2.编程错误组织块( OB121)
出现编程错误时,CPU 的操作系统将调用 OB121。局域变量
OB121_SW_FLT 给出了错误代码,可以查看,S7-300/400 的系统软件和标准功能》中 OB121 部分的错误代码表。
3,I/O 访问错误组织块( OB122)
STEP 7 指令访问有故障的模块,例如直接访问 I/O 错误(模块损坏或找不到),或者访问了一个 CPU 不能识别的 I/O 地址,此时 CPU
的操作系统将会调用 OB122。
6.5.10 背景组织块
CPU 可以保证设置的最小扫描循环时间,如果它比实际的扫描循环时间长,在循环程序结束后 CPU 处于空闲的时间内可以执行背景组织块( OB90) 。背景 OB 的优先级为 29(最低)。
第 7 章 计算机通信网络与 S7-300/400 的通信功能
7.1 计算机通信方式与串行通信接口
7.1.1 计算机的通信方式
1.并行通信与串行通信
2.异步通信与同步通信
110
110
图7-1 异步通信的信息格式起始位 数据位奇偶校验位停止位
某字符中包含以下 8 个数据位,
1 0 1 0 0 0 1 1
如果选择了偶校验,奇偶校验位将是 0。如果选择了奇校验,奇偶校验位将是 1。如果选择不进行奇偶校验,传输时没有校验位,也不进行奇偶校验检测。
同步通信以字节为单位,每次传送 1~ 2 个同步字符、若干个数据字节和校验字符。通过调制解调的方式在数据流中提取出同步信号,
使接收方得到与发送方同步的接收时钟信号。
单工通信方式只能沿单一方向传输数 据,双工通信方式的信息可以沿两个方向传送,每一个站既可以 发送数据,也可以接收数据。双工方式又分为全双工和半双工。
图7-2 全双工方式 图7-3 半双工方式
甲站发送接收接收发送乙站
甲站发送接收接收发送乙站换向 换向
4.传输速率
传输速率(又称波特率)的单位是波特,其符号为 bit/s 或 bps。
7.1.2 串行通信接口的标准
1,RS-232C
TXD
RXD
PLC
GND
RXD
TXD
GND
MC1488 MC1489
TTL
TTL
计算机图7-4 RS-232的信号线连接 图7-5 单端驱动单端接收
图7-6 平衡驱动差分接收
TTL TTL
A
B
最大通信距离为 15m,最高传输速度速率为 20kbit/s,只能进行一对一的通信。
2,RS-422A 与 RS-485
RS-422A 采用平衡驱动、差分接收电路 (见图 7-6),共模信号可以互相抵消。
RS-422A 在最大传输速率 (10 Mbit/s) 时,允许的最大通信距离为
12m。传输速率为 100 kbit/s 时,最大通信距离为 1 200m,一台驱动器可以连接 10 台接收器。
3,RS-485
RS-485 为半双工,只有一对平衡差分信号线,最多可以有 128 个站。
TXD
RXD
TXDRXD
图7-7 RS-422A通信接线图
TXD
RXD
RXD
TXD
图7-8 RS-485网络
7.2 计算机通信的国际标准
7.2.1 开放系统互连模型
用户 用户物理介质
应用层表示层会话层传送层网络层数据链路层物理层应用层表示层会话层传送层网络层数据链路层物理层
图7-9 开放系统互连模型
1
2
3
4
5
6
7
1.物理层
物理层为用户提供建立、保持和断开物理连接的功能,RS-232C,
RS-422A / RS-485。
2.数据链路层
数据以帧( frame)为单位传送,每一帧包含一定数量的数据和必要的控制信息,例如同步信息,地址信息,差错控制和流量控制信息。
数据链路层负责在两个相邻节点间的链路上,实现差错控制、数据成帧、同步控制等。
7.应用层
应用层作为 OSI 的最高层,为用户的应用服务提供信息交换,为应用接口提供操作标准。
7.2.2 IEEE 802 通信标准
数据链路层分解为逻辑链路控制层 (LLC)、媒体访问层 (MAC),数据链路层是一条链路 (Link)两端的两台设备进行通信时所共同遵守的规则和约定。
1,CSMA/CD
竞争发送、广播式传送、载体监听、冲突检测、冲突后退和再试发送。
2.令牌总线
3.令牌环
7.2.3 现场总线及其国际标准
IEC (国际电工委员会 ) 对现场总线 (Fieldbus)的定义是“安装在制造和过程区域的现场装置与控制室内的自动控制装置之间的数字式、
串行、多点通信的数据总线称为现场总线” 。
IEC 61158 是迄今为止制订时间最长,意见分歧最大的国际标准之一。 制订时间超过 12 年,先后经过 9 次投票,在 1999 年底获得通过。
IEC 61158 最后容纳了 8 种互不兼容的协议,
类型 1:原 IEC61158 技术报告,即现场总线基金会( FF)的 H1;
类型 2,Control Net(美国 Rockwell 公司支持) ;
类型 3,PROFIBUS(德国西门子公司支持) ;
类型 4,P-Net(丹麦 Process Data 公司支持) ;
类型 5,FF 的 HSE(原 FF 的 H2,高速以太网,美国 Fisher
Rosemount 公司支持) ;
类型 6,Swift Net(美国波音公司支持) ;
类型 7,WorldFIP(法国 Alstom 公司支持) ;
类型 8,Interbus(德国 Phoenix contact 公司支持) 。
各类型将自己的行规纳入 IEC 61158,且遵循两个原则,
(1) 不改变 IEC 61158 技术报告的内容。
(2)八种类型都是平等的,类型 2~ 8 都对类型 1 提供接口,标准并不要求类型 2~ 8 之间提供接口。
IEC 62026 是供低压开关设备与控制设备使用的控制器电气接口标准,于 2000 年 6 月通过。它包括,
(1) IEC 62026-1:一般要求;
(2) IEC 62026-2:执行器传感器接口 AS-i (Actuator Sensor
Interface);
(3) IEC 62026-3:设备网络 DN (Device Network);
(4) IEC 62026-4,Lonworks( Local Operating Networks)总线的通信协议 LonTalk;
(5) IEC 62026-5:灵巧配电(智能分布式)系统 SDS (Smart
Distributed System);
(6) IEC 62026-6:串行多路控制总线 SMCB(Serial Multiplexed Control
Bus )。
7.3 S7-300/400 的通信功能
7.3.1 工厂自动化网络结构
1.现场设备层
主要功能是连接现场设备,例如分布式 I/O、传感器、驱动器、执行机构和开关设备等,完成现场设备控制及设备间连锁控制。
Profibus
AS-i
执行器-传感器层现场层单元层管理层工业以太网
Profibus
图7-10 SIMASTIC NET
工业以太网
2.车间监控层
车间监控层又称为单元层,用来完成车间主生产设备之间的连接,
包括生产设备状态的在线监控、设备故障报警及维护等。还有生产统计、生产调度等功能。传输速度不是 最重要的,但是应能传送大容量的信息。
3.工厂管理层
车间操作员工作站通过集线器与车间办公管理网连接,将车间生产数据送到车间管理层。车间管理网 作为工厂主网的一个子网,连接到厂区骨干网,将车间数据集成到工厂管理层。
7.3.2 S7-300/400 的通信网络
1.通过多点接口 (MPI)协议的数据通信
MPI 是多点接口( Multi Point Interface)的简称,MPI 的物理层是
RS-485,通过 MPI 能同时连接运行 STEP 7 的编程器、计算机、人机界面 (HMI)及其他 SIMATIC S7,M7 和 C7。
通过 MPI 接口实现全局数据 (GD)服务,周期性地相互进行数据交换。
2,PROFIBUS
用于车间级监控和现场层的通信系统,开放性。 PROFIBUS-DP
与分布式 I/O。最多可以与 127 个网络上的节点进行数据交换。网络中最多可以串接 10 个中继器来延长通信距离。 使用光纤作通信介质,
通信距离可达 90 km。
3.工业以太网
西门子的工业以太网符合 IEEE 802.3 国际标准,通过网关来连接远程网络。 10M/100M bit/s,最多 1024 个网络节点,网络的最大范围为 150km。
采用交换式局域网,每个网段都能达 到网络的整体性能和数据传输速率,电气交换模块与光纤交换模 块将网络划分为若干个网段,在多个网段中可以同时传输多个报文。 本地数据通信在本网段进行,只有指定的数据包可以超出本地网段的范围。
全双工模式使一个站能同时发送和接 收数据,不会发生冲突。传输速率到 20 Mbit/s 和 200 Mbit/s。可以构建环形冗余工业以太网。最大的网络重构时间为 0.3 秒。
自适应功能自动检测出信号传输速率( 10 M 或 100 Mbit/s) 。
自协商是高速以太网的配置协议,通过协商确定数据传输速率和工作方式。
使用 SNMP-OPC 服务器对支持 SNMP 协议的网络设备进行远程管理。
4.点对点连接
点对点连接( Point-to-Point Connections)可以连接?S7 PLC 和其他串口设备。使用 CP 340,CP 341,CP 440,CP 441 通信处理模块,
或 CPU 31xC-2PtP 集成的通信接口。
接口有 20mA( TTY),RS-232C 和 RS-422A/RS-485。通信协议有 ASCII 驱动器,3964( R)和 RK 512(只适用于部分 CPU)。
使用通信软件 PRODAVE 和编程用的 PC/MPI 适配器,通过 PLC
的 MPI 编程接口,可以实现计算机与 S7-300/400 的通信。
5.通过 AS-i 网络的过程通信
AS-i 是执行器 -传感器接口( Actuator Sensor Interface)的简称,
位于最底层。
AS-i 每个网段只能有一个主站。 AS-i 所有分支电路的最大总长度为 100m,可以用中继器延长。可以用屏蔽的或非屏蔽的两芯电缆,
支持总线供电。
DP/AS-i 网关( Gateway)用来连接 PROFIBUS-DP 和 AS-i 网络。
CP 342-2 最多可以连接 62 个数字量或 31 个模拟量 AS-i 从站。 最多可以访问 248 个 DI 和 186 个 DO。可以处理模拟量值。
西门子的,LOGO!”微型控制器可以接入 AS-i 网络,西门子提供各种各样的 AS-i 产品。
7.4 MPI 网络与全局数据通信
7.4.1 MPI 网络
周期性地相互交换少量的数据,最多 15 个 CPU。编程设备、人机接口和 CPU 的默认地址分别为 0,1,2。
MPI 默认的传输速率为 187.5 k bit/s 或 1.5 M bit/s,与 S7-200 通信
19.2 k bit/s。相邻节点间的最大传送距离为 50m,加中继器后为
1000m,使用光纤和星形连接时为 23.8 km。
7.4.2 全局数据包
参与全局数据包交换的 CPU 构成了全局数据环( GD circle)。可以建立多个 GD 环。
具有相同的发送者和接收者的全局数据集合成一个全局数据包。
数据包中的变量有变量号。例如 GD1.2.3 是 1 号 GD 环,2 号 GD 包中的 3 号数据。
S7-300 CPU 可以建立 4 个全局数据环,每个环中一个 CPU 只能发送和接收一个数据包,每个数据包最多包含 22 个数据字节。
S7-400 CPU 可以建立的全局数据环个数与 CPU 的型号有关 ( 16~
64 个),每个环中一个 CPU 只能发送一个数据包和接收两个数据包,
每个数据包最多包含 54 个数据字节。
7.4.3 MPI 网络的组态
在 SMATIC 管理器中生成 3 个站,它们的 CPU 分别为 CPU 413-1,
CPU 313C 和 CPU 312C。
双击 MPI 图标,打开 NetPro 工具,打开 CPU 的属性设置对话框,
设置 MPI 站地址。
将 CPU 就被连接到 MPI( 1)子网上。
保存 CPU 的配置参数,用点对点的方式将它们分别下载到各 CPU
中。
用 PROFIBUS 电缆连接 MPI 节点可以用管理器的,Accessible
Nodes”功能来测试可以访问的节点。
图 7-13 MPI 网络的组态
7.4.4 全局数据表
1.生成和填写 GD 表
在,NetPro”窗口中用右键点击 MPI 网络线,在弹出的窗口中执行执行菜单命令,Options → Define Global Data(定义全局数据),同样的命令。
在表的第一行输入 3 个 CPU 的名称。
鼠标右键点击 CPU 413-1 下面的单元(方格),在出现的菜单中选择,Sender” (发送者),输入要发送的全局数据的地址 MW0。在每一行中只能有一个 CPU 发送方。 同一行中各个单元的字节数应相同。
点击 CPU 313C 下面的单元,输入 QW0,该格的背景为白色,表示 CPU 313C 是接收站。
图 7-14 全局数据表
MB20:4 表示 MB20 开始的 4 个字节。 如果 GD 包由若干个连续的数据区组成,一个连续的数据区占用的空间为数据区内的字节数加上两个头部说明字节。一个单独的双字占 6 个字节,一个单独的字占 4
个字节,一个单独的字节占 3 个字节,一个单独的位也占 3 个字节,
例如 DB2.DBB0:10 和 QW0:5 一共占用 22 个字节。
发送方 CPU 自动地周期性地将指定地址中的数据发送到接收方指定的地址区中。完成全局数据表的 输入后,应执行菜单命令,GD
Table→ Compile…”,对它进行第一次编译。
2.设置扫描速率和状态双字的地址
执行菜单命令,View→ Scan Rates”,每个数据包将增加标有,SR”
的行,扫描速率单位是 CPU 的循环扫描周期,S7-300 默认的扫描速率为 8,S7-400 的为 22,用户可以修改。 S7-400 的扫描速率为 0,表示是事件驱动的 GD 发送和接收。
图 7-15 第一次编译后的全局数据表
GD 数据传输的状态双字用来检查数据是否被正确地传送,执行菜单命令,View→ Status”,在出现的 GDS 行中可以给每个数据包指定一个用于状态双字的地址。最上面一行的全局状态双字 GST 是各
GDS 行中的状态双字相“与”的结果。
设置好扫描速率和状态字的地址后,应对全局数据表进行第二次编译。将配置数据下载到 CPU 中,以后可以自动交换数据。
7.4.5 事件驱动的全局数据通信
使用 SFC 60,GD_SEND”和 SFC 61,GD_RCV”,S7-400 可以用事件驱动的方式发送和接收 GD 包,实现全局通信。在全局数据表中,必须对要传送的 GD 包 组态,并将扫描速率设置为 0。
为了保证全局数据交换的连续性,在调用 SFC 60 之前应调用 SFC
39,DIS_IRT”或 SFC 41,DIS_AIRT”来禁止或延迟更高级的中断和异步错误。 SFC 60 执行完后调用 SFC 40,EN_IRT”或 SFC 42
,EN_AIRT”,再次确认高优先级的中断和异步错误。
Network 1:延迟处理高中断优先级的中断和异步错误
CALL "DIS_AIRT" //调用 SFC 41,延迟处理高中断优先级的中断和异步错误
RET_VAL,=MW100 //返回的故障信息
Network 2:发送全局数据
CALL "GD_SND" //调用 SFC 60
CIRCLE_ID,=B#16#3 //GD 环编号,允许值为 1~ 16
BLOCK_ID,=B#16#1 //GD 包编号,允许值为 1~ 4
RET_VAL,=MW102 //返回的故障信息
Network 2:允许处理高中断优先级的中断和异步错误
CALL "EN_AIRT" //调用 SFC 42,允许处理高中断优先级的中断和异步错误
RET_VAL,=MW104 //返回的故障信息
7.4.6 不用连接组态的 MPI 通信
假设 A 站和 B 站的 MPI 地址分别为 2 和 3,B 站不用编程,在 A
站的循环中断组织块 OB35 中调用发送功能 SFC 68,X_PUT”,将
MB40~ MB49 中的 10 个字节发送到 B 站的 MB50~ 59 中; 调用接收功能 SFC 67,X_GET”,将对方的 MB60~ MB69 中的 10 个字节读入到本地的 MB70~ 79 中。下面是 A 站的 OB35 中的程序,
Network 1:用 SFC 68 通过 MPI 发送数据
CALL "X_PUT"
REQ,=TURE //激活发送请求
CONT,=TURE //发送完成后保持连接
DEST_ID,=W#16#3 //接收方的 MPI 地址
VAR_ADDR,=P#M50.0 BYTE 10 //对方的数据接收区
SD,=P#M40.0 BYTE 10 //本地的数据发送区
RET_VAL,=LW0 //返回的故障信息
BUSY,=L2.1 //为 1 发送未完成
Network 2:用 FSC 67 从 MPI 读取对方的数据到本地 PLC 的数据区
CALL "X_GET"
REQ,=TURE //激活请求
CONT,=TURE //接收完成后保持连接
DEST_ID,=W#16#3 //对方的 MPI 地址
VAR_ADDR,=P#M60.0 BYTE 10 //要读取的对方的数据区
RET_VAL,=LW4 //返回的故障信息
BUSY,=L2.2 //为 1 发送未完成
RD,=P#M70.0 BYTE 10 //本地的数据接收区
如果上述 SFC 的工作已完成( BUSY=0),调用 SFC 69
,X_ABORT”后,通信双方的连接资源被释放。
7.5 PROFIBUS 的结构与硬件
PROFIBUS 已被纳入现场总线的国际标准 IEC 61158 和欧洲标准
EN 50170,并于 2001 年被定为我国的国家标准 JB/T10308.3-2001。
PROFIBUS 在 1999 年 12 月通过的 IEC 61156 中称为 Type 3,
PROFIBUS 的基本部分称为 PROFIBUS-V0。在 2002 年新版的 IEC
61156 中增加了 PROFIBUS-V1,PROFIBUS-V2 和 RS-485IS 等内容。
新增的 PROFInet 规范作为 IEC 61158 的 Type10。
截止 2003 年底,安装的 PROFIBUS 节点设备已突破了 1 千万个,
在中国超过 150 万个。
7.5.1 PROFIBUS 的组成
1,PROFIBUS-FMS (Fieldbus Message Specification,现场总线报文规范 )
主要用于系统级和车间级的不同供应商的自动化系统之间传输数据,处理单元级( PLC 和 PC)的 多主站 数据通信。
2,PROFIBUS-DP(Decentralized Periphery,分布式外部设备 )
PROFIBUS-DP 用于自动化系统中单元级控制设备与分布式 I/O
(例如 ET 200)的通信。
主站之间的通信为令牌方式,主站与从站之间为主从方式,以及这两种方式的混合。
3,PROFIBUS-PA(Process Automation,过程自动化 )
用于过程自动化的现场传感器和执行器的低速数据传输,使用扩展的 PROFIBUS-DP 协议。传输技术采用 IEC 1158-2 标准,可以用于防爆区域的传感器和执行器与中央控制系统的通信。 使用屏蔽双绞线电缆,由总线提供电源。
此外基于 PROFIBUS,还推出了用于运动控制的总线驱动技术
PROFI-drive 和故障安全通信技术 PROFI-safe。
7.5.2 PROFIBUS 的物理层
可以使用多种通信介质 (电、光、红外、导轨以及混合方式 )。传输速率 9.6k~ 12M bit/s,假设 DP 有 32 个站点,所有站点传送 512 bit/s
输入和 512bit/s 输出,在 12M bit/s 时只需1 ms。每个 DP 从站的输入数据和输出数据最大为 244 字节。 使用屏蔽双绞线电缆时最长通信距离为 9.6km,使用光缆时最长 90km,最多可以接 127 个从站。
可以使用灵活的拓扑结构,支持线型、树型、环型结构以及冗余的通信模型。
1,DP/FMS 的 RS-485 传输
DP 和 FMS 使用相同的传输技术和统一的总线存取协议,可以在同一根电缆上同时运行。
DP/FMS 符合 EIA RS-485 标准(也称为 H2),采用屏蔽或非屏蔽双绞线电缆,9.6 kbit/s 到 12M bit/s。一个总线段最多 32 个站,带中继器最多 127 个站。
A 型电缆,3~ 12M bit/s 时为 100m,9.6 ~93.75 k bit/s 时为 1200m。
2,D 型总线连接器
PROFIBUS 标准推荐总线站与总线的相互连接使用 9 针 D 型连接器。 A,B 线上的波形相反。信号为 1 时 B 线为高电平,A 线为低电平。
3.总线终端器
390
390
220
A
B
电缆屏蔽层
390
390
220
VP VP
DGND DGND
RS-485总线段
图7-16 DP/FMS总线段的结构站站12
4,DP/FMS 的光纤电缆传输
单芯玻璃光纤的最大连接距离为 15 公里,价格低廉的塑料光纤为
80 米。
光链路模块( OLM)用来实现单光纤环和冗余的双光纤环。
5,PA 的 IEC 1158-2 传输
采用符合 IEC 1158-2 标准的传输技术,确保本质安全,并通过总线直接给现场设备供电。数据传输使用曼彻斯特编码线协议(也称
H1 编码) 。从 0 (-9mA)到 1(+9mA)的上升沿发送二进制数,0”,从 1
到 0 的下降沿发送二进制数,1” 。传输速率为 31.25 kbit/s。传输介质为屏蔽或非屏蔽的双绞线。总线段的两端用一个无源的 RC 线终端器来终止( 100?电阻与 1μF 电容的串联电路),一个 PA 总线段最多 32
个站,总数最多为 126 个。
7.5.3 PROFIBUS-DP 设备的分类
1,1 类 DP 主站
1 类 DP 主站( DPM1)是系统的中央控制器,DPM1 与 DP 从站循环地交换信息,并对总线通信进行控制和管理。 PLC,PC 等。
2,2 类 DP 主站
DP 网络中的编程、诊断和管理设备。 DPM2 除了具有 1 类主站的功能外,可以读取 DP 从站的输入 /输出数据和当前的组态数据,可以给 DP 从站分配新的总线地址。 PC,OP,TP。
3,DP 从站
( 1)分布式 I/O(非智能型 I/O)由主站统一编址,ET 200。
( 2) PLC 智能 DP 从站( I 从站),PLC(智能型 I/O)做从站。
存储器中有一片特定区域作为与主站通信的共享数据区。
( 3)具有 PROFIBUS-DP 接口的其他现场设备
4,DP 组合设备
7.5.4 PROFIBUS 通信处理器
1,CP 342-5 通信处理器
2,CP 342-5 FO 通信处理器
3,CP 443-5 通信处理器
4.用于 PC/PG 的通信处理器
表 7-2 用于 PC/PG 的通信处理器
CP 5613 / CP
5613FO
CP 5614 / CP
5614FO
CP
5611
可以连接的 DP 从站数
122 122 60
可以并行处理的 FDL
任务数
120 120 100
PG/PC 和 S7 的连接数 50 50 8
FMS 的连接数 40 40 -
CP 5613 是带微处理器的 PCI 卡,有一个 PROFIBUS 接口,仅支持 DP 主站。
CP 5614 有两个 PROFIBUS 接口,可以作 DP 主站或 DP 从站。
CP 5611 用于带 PCMCIA 插槽的笔记本电脑。有一个 PROFIBUS
接口,可作主站和从站。
7.6 PROFIBUS 的通信协议
7.6.1 PROFIBUS 的数据链路层
1.总线存取方式
DP行规 PA行规
FMS设备行规
DP扩展功能
DP基本功能现场总线报文规范未使用现场总线数据链路
IEC接口
RS-485/ 光纤 IEC 1158-2
应用层(7)
(3) ~ (6)
数据链接层(2)
物理层(1)
用户层
FMS DP PA
图 7-17 PROFIBUS 协议结构
两个基本要求,
( 1)保证在确切的时间间隔中,任何一个站点有足够的时间来完成通信任务。
( 2)尽可能简单快速地完成数据的实时传输,因通信协议增加的数据传输时间应尽量少。
PROFIBUS 采用主站( Master)之间的令牌( Token)传递方式和主站与从站( Slave)之间的主 -从方式。
从站,从设备主站,主设备主设备间的逻辑令牌环
图 7-18 PROFIBUS 现场总线的总线存取方式
当某主站得到令牌报文后可以与所有主站和从站通信。
在总线初始化和起动阶段建立令牌环。在总线运行期间,从令牌环中去掉有故障的主动节点,将新上电的主动节点加入到令牌环中。
监视传输介质和收发器是否有故障,检查站点地址是否出错,以及令牌是否丢失或有多个令牌。
DP 主站与 DP 从站间的通信基于主 -从原理,DP 主站按轮询表依次访问 DP 从站。报文循环由 DP 主站发出的请求帧(轮询报文)和由 DP 从站返回的响应帧组成。
7.6.2 PROFIBUS-DP
DP 的功能一共有 3 个版本,DP-V0,DP-V1 和 DP-V2。
1.基本功能( DP-V0)
( 1)总线存取方法
( 2) 3 级诊断功能
( 3)保护功能
只有授权的主站才能直接访问从站。主站用监控定时器监视与从站的通信。从站用监控定时器检测与主站的数据传输。
( 4)通过网络的组态功能与控制功能
动态激活或关闭 DP 从站,对主站进行配置,设置从站的地址、
输入 /输出数据的格式、诊断报文的格式检查 DP 从站的组态。
( 5)同步与锁定功能
( 6) DPM1 和 DP 从站之间的循环数据传输
( 7) DPM1 和系统组态设备间的循环数据传输
2,DP-V1 的扩展功能
( 1)非循环数据交换
主站与从站之间的非循环数据交换功能,可以用来进行参数设置、
诊断和报警处理。
( 2)基于 IEC 61131-3 的软件功能块
( 3)故障 -安全通信( PROFIsafe)
PROFIsave 定义了与故障 -安全有关的自动化任务,以及在
PROFIBUS 上的通信。考虑了数据的延迟、丢失、重复,不正确的时序、地址和数据的损坏。
补救措施:输入报文帧的超时及其确认;发送者与接收者之间的口令; CRC 校验。
( 4)扩展的诊断功能
DP 从站通过诊断报文将报警信息传送给主站,主站收到后发送确认报文给从站。从站收到后只能发送新的报警信息。
3,DP-V2 的扩展功能
( 1)从站与从站之间的通信
广播式数据交换实现了从站之间的 通信,从站作为出版者
( Publisher),不经过主站直接将信息发送给作为订户( Subscribers)
的从站。
( 2)同步( Isochronous)模式功能
主站与从站之间的同步,误差小于 1ms。所有设备被周期性地同步到总线主站的循环。
( 3)时钟控制与时间标记 (Time Stamps):主站将时间发送给所有的从站,误差小于 1ms。
( 4) HARTonDP
( 5)上载与下载(区域装载),用少量的命令装载任意现场设备中任意大小的数据区。
( 6)功能请求( Function Invocation),用于 DP 从站的起动、停止、返回、重新起动和功能调用。
( 7)从站冗余
冗余的从站有两个 PROFIBUS 接口。在主要从站出现故障时,后备从站接管它的功能。
7.6.3 PROFINet
PROFINet 以互联网和以太网标准为基础,建立了 PROFIBUS 与外部系统的透明通道。
PROFInet 首次明确了 PROFIBUS 和工业以太网之间数据交换的格式,使跨厂商、跨平台的系统通信问题得到了彻底的解决。
PROFInet 提供了一种全新的工程方法,即基于组件对象模型
( COM)的分布式自动化技术;以微软的 OLE/COM/DCOM 为技术核心,最大程度地实现了开放性和可扩展性,向下兼容传统工控系统,
使分散的智能设备组成的自动化系统模块化。 PROFINet 指定了
PROFIBUS 与国际 IT 标准之间的开放和透明的通信;提供了包括设备层和系统层的完整系统模型,保证了 PROFIBUS 和 PROFINet 之间的透明通信。
1,PROFINet 的通信机制
在 PROFINet 中,每个设备都被看作一个具有组件对象模型
(Component Object Model,简称为 COM)接口的自动化设备,系统通过调用 COM 接口来实现设备功能。组件模型使不同厂家的设备具有良好的互换性和互操作性。 COM 对象之间通过 DCOM(分布式 COM)
连接协议进行互联和通信。传统的 PROFIBUS 设备通过代理设备
( Proxy)与 PROFINet 中的 COM 对象进行通信。 COM 对象之间的调用是通过 OLE( Object Linking and Embedding,对象链接与嵌入)
自动化接口实现的。
组件技术为企业管理人员通过公用数据网络访问过程数据提供了方便。 PROFINet 使用了 IT 技术,支持从办公室到工业现场的信息集成。
人机接口控制器 现场设备 传感器控制器 智能现场设备
(代理设备)
PROFIBUS
Ethernet
图 7-19 PROFINet 系统结构图
7.7 基于组态的 PROFIBUS 通信
7.7.1 PROFIBUS-DP 从站的分类
1.紧凑型 DP 从站,ET 200B 模块系列
2.模块式 DP 从站,ET 200M,可以扩展 8 个模块。
在组态时 STEP 7 自动分配紧凑型 DP 从站和模块式 DP 从站的输入 /输出地址。
3.智能从站( I 从站)
某些型号的 CPU 可以作 DP 从站。智能 DP 从站提供给 DP 主站的输入 /输出区域不是实际的 I/O 模块使用的 I/O 区域,而是从站 CPU
专门用于通信的输入 /输出映像区。
7.7.2 PROFIBUS-DP 网络的组态
主站是 CPU 416-2DP,将 DP 从站 ET 200B-16 DI/16DO,ET 200M
和作为智能从站的 CPU 315-2DP 连接起来,传输速率为 1.5M bit/s。
1.生成一个 STEP 7 项目
图 7-20 SIMATIC 管理器
2.设置 PROFIBUS 网络
右键点击,项目”对象,生成网络对象 PROFIBUS(1),在自动打开的网络组态工具 NetPro 中,双击图中的 PROFIBUS 网络线,设置传输速率为 1.5 Mbit/s,总线行规为 DP。最高站地址使用缺省值
126。
3.设置主站的通信属性
选择 400 站对象,打开 HW Config 工具。双击机架中,DP”所在的行,在,Operating Mode”标签页选择该站为 DP 主站。默认的站地址为 2。
图 7-21 PROFIBUS 网络的组态
4.组态 DP 从站 ET 200 B
组态第一个从站 ET 200B -16DI/16DO。设置站地址为 4。各站的输入 /输出自动统一编址。选择监控定时器功能。
5.组态 DP 从站 ET 200 M
将接口模块 IM 153-2拖到 PROFIBUS网络线上,设置站地址为 5。
打开硬件目录中的 IM 153-2 文件夹,插入 I/O 模块。
6.组态一个带 DP 接口的智能 DP 从站
在项目中建立 S7-300 站对象,CPU 315-2DP 模块插入槽 2。默认的 PROFIBUS 地址为 6。设置为 DP 从站。在,HW Config”中保存对 S7-300 站的组态。
7.将智能 DP 从站连接到 DP 主站系统中
返回到组态 S7-400站硬件的屏幕。 打开 \PROFIBUS-DP\Configured
Stations(已经组态的站)文件夹,将,CPU 31x”拖到屏幕左上方的
PROFIBUS 网络线上。自动分配的站地址为 6。在,Connection”标签页选中 CPU 315-2DP,点击,Connect 按钮”,该站被连接到 DP 网络中。
7.7.3 主站与智能从站主从通信方式的组态
DP 主站直接访问,标准” 的 DP 从站 (例如 ET 200B 和 ET 200M)
的分布式 I/O 地址区。
用于主站和从站之间交换数据的输入 /输出区不能占据 I/O 模块的物理地址区。
图 7-22 DP 主从通信地址的组态
点击 DP 从站对话框中的,Configuration”标签,为主 -从通信的智能从站配置输入 /输出区地址(见图 7-22) 。点击图中的,New”按钮,出现如图 7-23 所示的设置 DP 从站输入 /输出区地址的对话框。
图 7-23 DP 从站属性的组态
图 7-24 组态后的网络
7.7.4 直接数据交换通信方式的组态
1.直接数据交换
直接数据交换( Direct Data Exchange)简称为 DX,又称为交叉通信。
( 1)单主站系统中 DP 从站发送数据到智能从站( I 从站)
DP主站
DP从站 DP从站 DP从站 I 从站
DP主站系统
DX
( 2)多主站系统中从站发送数据到其他主站
DP主站 1
DP从站 11 DP从站 12
DP主站 2
I 从站 DP从站 22
DX
DP主站系统 2DP主站系统 1
( 3)多主站系统中从站发送数据到智能从站
DP主站 1
DP从站 11 DP从站 12
DP主站 2
I从站 DP从站 22
DX
DP主站系统 2DP主站系统 1
2.直接数据交换组态举例
DP 主站 CPU 417-4 的符号名为,DP 主站 417”,站地址为 2;
DP 从站 CPU 315-2 DP 的符号名为“发送从站 315”,站地址为 3;
DP 从站 CPU 316-2DP 的符号名为“接收从站 316”,站地址为 4。
通信要求如下,3 号站发送连续的 8 个字到 DP 主站,4 号站用直接数据交换功能接收这些数据中的第 3 至第 6 个字。
3.组态 DP 主站
建立一个新的项目,CPU 为 CPU 417-4。进入硬件组态窗口后,
添加电源和 I/O 模块。
图 7-25 直接数据交换的项目管理器
双击机架中 CPU 模块内标有 DP 的行,在,Parameters”标签页中采用默认的站地址 2。点击,New”按钮,选择默认的网络参数,传输速率为 1.5M bit/s,行规为 DP。
图 7-26 直接数据交换
4.组态智能从站
在管理器中生成新的站。对该站的硬件组态。站地址设为 3,设置为 DP 从站,在,HW Config”中保存组态。
用同样的方法生成另一个 DP 从站,CPU 316-2DP,站地址为 4。
5.将智能从站连接到 DP 网络上
返回 S7-400 主站的硬件组态屏幕,在右边的硬件目录窗口中打开
\PROFIBUS-DP \Configured Stations 文件夹,将图标,CPU 31x”拖到屏幕左上方的 PROFIBUS 网络线上。在,Connection”标签页中将该站连接到 DP 网络中。
用同样的方法将 CPU 316-2DP 所在的从站连接到 DP 网络中,站地址为 4。
6.组态发送站的地址区
在主站的硬件组态窗口中,双击 3 号站的图标,在,Configuration”
标签页中,按表 7-4 的要求生成,Configuration”中的表格。
表 7-4 CPU 315-2DP( 3 号从站)的通信区地址组态
行号
模式
通信伙伴站地址
通信伙伴地址
本地地址
数据长度
连续性
1 MS 2 I 200 O 100 8 Word All
2 MS 2 O 180 I 80 10 Byte All
7.组态接收站的地址区
回到主站的硬件组态窗口后,双击 4 号 DP 从站的图标,按表 7-5
的要求,配置输入 /输出区地址。点击图中的,New”按钮,出现设置
DP 从站输入 /输出区地址的对话框。在最上面的,Mode”选择框内选择,DX”模式,设置表 7-5 中第一行的参数。
表 7-5 CPU 316-2DP( 4 号从站)的通信区地址组态
行号
模式
通信伙伴站地址
通信伙伴地址
本地地址
数据长度
连续性
1 DX 3 I 204 I 100 4 Word All
2 MS 2 I 220 O 140 4 Word All
图 7-27 CPU316-2DP 直接数据交换的参数设置
7.8 系统功能与系统功能块在 PROFIBUS 通信中的应用
7.8.1 用于 PROFIBUS 通信的系统功能与系统功能块
1.用于数据交换的 SFB/FB
表 7-6 用于数据交换的 SFB/FB
编号 传输的字节数
S7-400 S7-300
助记符 S7-400 S7-300
描述
SFB 8 FB 8 U_SEND 不对等的发送数据给远方通信伙伴,不需对方应答
SFB 9 FB 9 U_RCV
440
字节
160
字节不对等的异步接收对方用
U_SEND 发送的数据
SFB12 FB12 B_SEND 发送段数据:要发送的数据区被划分为若干段,各段被单独发送到通信伙伴
SFB13 FB13 B_RCV
64K
字节
32K
字节接收段数据:接收到每一数据段后,发送一个应答,同时参数 LEN(接收到的数据的长度)被刷新
SFB15 FB15 PUT 写数据到远方 CPU,对方不需编程,接收到后发送执行应答
SFB14 FB14 GET
400
字节
160
字节读取远方 CPU 的数据,对方不需编程
SFB16 - PRINT 发送数据和指令格式到远方打印机( S7-400)
2,S7-400 改变远方设备运行方式的 SFB
( 1) SFB 19,START”:初始化远方设备的暖起动或冷起动,
起动完成后,远方设备发送一个肯定的执行应答。
( 2) SFB 20,STOP”:将远方设备切换到 STOP 状态,操作成功完成后,远方设备发送一个肯定的执行应答。
( 3) SFB 21,RESUME”:初始化远方设备的热起动。远方起动完成后,远方设备发送一个肯定的执行应答。
3.查询远方 CPU 操作系统状态
SFB 22,STATUS”:查询远方通信伙伴的状态,接收到应答用来判断它是否有问题。
SFB 23,USTATUS”:接收远方通信设备的状态发生变化时主动提供的状态信息。
4.查询连接
SFC 62,CONTROL”:查询 S7-400 本地通信 SFB 的背景数据块的连接的状态。
FC 62,C_CNTRL”:通过连接 ID 查询 S7-300 的连接状态。
5.分布式 I/O 使用的 SFC
( 1) SFC 7,DP_PRAL”:触发 DP 主站的硬件中断。
( 2) SFC 11,DPSYC_FR”:同步锁定 DP 从站组。
( 3) SFC 12,D_ACT_DP”:取消或激活 DP 从站
( 4) SFC 13,DPNRM_DG”:读 DP 从站的诊断数据(从站诊断)。
( 5)用系统功能 SFC 14 和 SFC 15 访问 DP 标准从站中的连续数据。
7.8.2 用 SFC 14 和 SFC 15 传输连续的数据
1.用 SFC 14,DPRD_DAT”读取 DP 标准从站的连续数据
表 7-7 SFC 14,DPRD_DAT“的参数
2.用 SFC 15,DPWR_DAT”写标准从站的连续数据
表 7-8 SFC 15,DPWR_DAT”的参数
3.程序实例
主站DP
SFC 15
CPU中的数据区
SFC 14
CPU中的数据区
SFC 14
CPU中的数据区
SFC 15
CPU中的数据区智能从站
输出数据 输入数据输出数据输入数据
I100~109
Q100~109
I1000~1009
O1000~1009
O1000~1009
I1000~1009
DB20.DBB0~9
DB10.DBB0~9
图 7-28 DP 主站与智能从站的通信
收发的数据存放在未被实际的输入 /输出模块占用的过程映像区。
( 1)智能 DP 从站( CPU 315-2DP) OB1 中的用户程序,
CALL SFC 14
LADDR,=W#16#3E8 //从站输入区的起始地址(十进制数参数 声明 类型 说明
LADDR IN WORD
要读出数据的模块输入映像区的起始地址,必须用十六进制格式
RECORD OUT ANY
存放读取的用户数据的目的数据区,只能使用 BYTE 数据类型
RET_VAL OUT INT
SFC 的返回值,执行时出现错误则返回故障代码
参数 声明 类型 说明
LADDR IN WORD
要写入数据的模块输出映像区的起始地址,必须用十六进制格式
RECORD OUT ANY
存放要写出的用户数据的源区域,只能使用 BYTE 数据类型
RET_VAL OUT INT
SFC 的返回值,执行时出现错误则返回故障代码
1000)
RET_VAL,=MW 200 //返回值在存储器字 MW200 中
RECORD,=P#I 100.0 BYTE 10 //指向 CPU 存放输入数据的输入映像区的指针
L IB 100 //将输入数据 IB100 装入累加器 1
T QB 100 //将累加器 1 中的数据传送到 QB100
CALL SFC 15
LADDR,=W#16#3E8 //从站输出区的起始地址
(十进制数 1000)
RECORD,=P#Q 100.0 BYTE 10 //指向 CPU 存放输出数据的输出映像区的指针
RET_VAL,=MW 202 //返回值在存储器字
MW202 中
( 2) DP 主站( CPU 416-2DP) OB1 中的用户程序
程序中使用数据块 DB10 和 DB20 作为存放输入数据和输出数据的数据区,生成 OB1 之前,应首先生成 DB10 和 DB20,打开 DB 编辑器,生成长度为 10 个字节的数组( ARRAY) 。下面是 OB1 中的用户程序,
CALL SFC14
LADDR,=W#16#3E8 //输入区的起始地址(十进制数 1000)
RET_VAL,=MW200 //返回值在存储器字 MW200 中
RECORD,=P#DB10.DBX0.0 BYTE 10 //指向存放输入数据的数据区的指针
CALL SFC15
LADDR,=W#16#3E8 //输出区的起始地址
(十进制数 1000)
RECORD,=P#DB20.DBX0.0 BYTE 10 //指向存放输出数据的数据区的指针
RET_VAL,=MW202 //返回值在存储器字 MW202 中
4.测试 DP 主站和智能从站之间的数据交换
给 DB20.DBB0赋值,DB10.DBB0的值应立即变为用 DB20.DBB0
设置的值。
7.8.3 分布式 I/O 触发主站的硬件中断
1.用 SFC 7 触发 DP 主站上的过程中断
在智能从站调用 SFC 7,DP_PRAL”,在它的输入信号 REQ 的脉冲上升沿,触发 DP 主站的硬件中断,使 DP 主站执行一次 OB40 中的程序。
OB1
SFC 7
主站DP 智能从站通过诊断报文的硬件中断通过S7报文确认硬件中断循环程序硬件中断
OB40
OB1
触发中断完成报文
图 7-29 硬件中断的执行过程
表 7-9 SFC 7,DP_PRAL”的参数
AL_INFO 为中断标识符,在 DP 主站的 OB40 中,用变量
POINT_ADDR 来访问它。
IOID = #16#54 时,为外设输入地址区,IOID = B#16#55 时,为外设输出地址区。
IOID 和 LADDR 唯一确定了被请求的硬件中断。在发送存储器中每个被组态的地址区,可以在任意的时间准确地触发一个硬件中断。
如果 SFC 7 还未被 DP 主站确认,则 BUSY=1,SFC 7 的执行过程中发生错误,返回的故障代码在输出参数 RET_VAL 中。
2.从站触发过程中断的程序设计
参数 声明 类型 说明
REQ IN BOOL
REQ 为 1 时从站触发主站的硬件中断
IOID IN WORD
DP 从站发送存储器地址区的标识符
LADDR IN WORD
DP 从站发送存储器地址区的起始地址
AL_INFO IN DWORD
中断标识符,传送给 DP 主站上的 OB40
中的变量 OB40_ POINT_ADDR
RET_VAL OUT INT
返回值,如果执行过程中出现错误,返回故障代码
BUSY OUT BOOL BUSY 为 1 表示从站触发的硬件中断还未被 DP 主站确认
下面的实例中智能从站为 CPU 315-2DP,主站为 S7-400 PLC。智能从站中起始地址为 1000 的输出模块触发一个硬件中断。在智能从站上循环地触发硬件中断。
在 SFC 7 的双字输入参数 AL_INFO(中断标识符)的前半部分,
传送 SFC 7 的中断 ID,W#16#ABCD” 。参数 AL_INFO 的后半部分
( MW106)是中断次数计数器。
在从站的 CPU 的 OB1 中写入下面的 STL 语句,下载给 CPU
315-2DP。
L W#16#ABCD //预设置的中断标识符
T MW104
CALL,DP_PRAL”
REQ,=M100.0 //为 1 时触发主站的硬件中断
IOID,=W#16#55 //模块的地址区域标识符,即外设输出( PQ)地址区
LADDR,=W#16#3E8 //模块的起始地址,即十进制数
1000
AL_INFO,=MD104 //与应用有关的中断 ID
RET_VAL,=MW102 //返回的故障代码
BUSY,=M100.1 //主站未确认时从站 BUSY 标志为 1
A M 100.1 //如果主站未确认
BEC //结束对 OB1 的执行
= M 100.0 //否则触发新的硬件中断
L MW106
+ 1 //中断计数器加 1
T MW106
BEC 为块结束指令,如果主站未确认,即 BUSY 为 1 时,结束对
OB1 的执行,不执行后面的程序。如果主站确认了,BUSY 为 0 时,
执行 BEC 指令后面的程序。
3,S7-400 DP 主站处理硬件中断的程序
DP主站 SIMATIC 400( 1)的组织块 OB40 中的 STL 语句如下所示,
L #OB40_MDL_ADDR //保存触发中断的模块的逻辑基准地址
T MW10
L #OB40_POINT_ADDR //保存智能从站发送的中断 ID(即 W#16#ABCD)
T MD12
4.测试 DP 主站对硬件中断的响应
在 SIMATIC 400( 1)文件夹中,打开,Blocks”文件夹。起动
OB40 的程序状态功能,观察 DP 主站对中断的处理。
7.8.4 一组从站的输出同步与输入锁定
系统功能 SFC 11,DPSYC_FR”用于将控制命令 SYNC(同步输出),UNSYNC(解除同步),FREEZE(锁定或冻结输入) 和 UNFREEZE
(取消锁定)发送给一个或多个 DP 从站。这些命令用来实现一组
DP 从站的同步输出或同时锁定它们的输入。
在用 SFC 11 发送上述控制命令之前,应使用 STEP 7 的硬件组态工具将有关的 DP 从站组合到 SYNC/ FREEZE DP 组中,一个主站系统最多可以建立 8 个组。
1.同步输出与解除同步
SYNC 控制命令将一组选择的 DP 从站切换到同步方式。 DP 主站发送当前的输出数据,并命令 DP 从站锁定它们的输出,保持输出状态不变。
用 SFC 11 发送控制命令 UNSYNC,可以取消从站的 SYNC 模式。
2.输入信号的锁定与解除锁定
如果需要得到一组 DP从站上同一时刻的输入数据,可以通过 SFC
11 将 FREEZE 控制命令发送到该组 DP 从站组。组内所有的 DP 从站的输入模块上的信号被锁定,以便 DP 主站来读取这些信号。接收到下一个 FREEZE 命令时 DP 从站更新和重新锁定它们的输入数据。
用 SFC 11 发送 UNFREEZE 命令,可以取消所寻址的 DP 从站的
FREEZE 模式。此后 DP 主站又能接收到周期性刷新的 DP 从站的输入信号。
表 7-10 SFC,11 DPSYC_FR” 的参数
参数 声明 类型 说明
REQ IN BOOL
REQ=1 时触发或解除 SYNC 或
FREEZE 操作
LADDR IN BYTE
DP 主站的逻辑地址
GROUP IN BYTE
第 0 位~第 7 位为 1,分别表示选择第
SFC 11 用输入参数 MODE 指定的控制命令可能的组合见表 7-11。
表 7-11 SFC 11 的控制命令可能的组合
位号
7 6 5 4 3 2 1 0 取值
UNSY
NC
B#16#1
0
UNSY
NC
UNFREE
ZE
B#16#1
4
UNSY
NC
FREE
ZE
B#16#1
8
SYN
C
B#16#2
0
SYN
C
UNFREE
ZE
B#16#2
4
SYN
C
FREE
ZE
B#16#2
8
UNFREE
ZE
B#16#0
4
MO
DE
FREE
ZE
B#16#0
8
3,DP 主站 IM467 使用 SYNC/FREEZE 命令的实例
打开 SIMATIC 管理器,生成一个项目,在项目中生成新站
CPU416-1。
将插入式 DP 主站模块( IM467)它放在 4 号槽中。建立了一个新的 PROFIBUS( 1) 子网络,确认 IM467 的默认站地址,2”,用,OK”
键关闭此对话框。在,Properties IM467”对话框的,Addresses”选项卡中设置模块的地址为 512(即 W#16#200) 。
将 B -16DI/16DO DP 拖到图 7-30 中 IM467 的 DP 主站系统网络线
1 组~第 8 组
MODE IN BYTE
SYNC/FREEZE 操作的标识符,见表
7-11
RET_VAL OUTPUT INT
SFC 的返回值,如果执行过程中出现故障,则返回故障代码
BUSY OUTPUT BOOL BUSY=1 表示 SYNC/FREEZE 操作未完成
上。站地址设置为 3。
将另一个 B-16 DI/DO DP 组态到 DP 主站系统中,默认的从站地址为 4。将 B-16 DI DP 组态到 DP 主站系统中,默认的从站地址为 5。
图 7-30 网络组态
图 7-31 设置 SYNC/FREEZE 组的属性
双击图 7-30 中的,PROFIBUS(1),DP master system (1),网络线,
出现,Properties-DP master system”对话框。打开,Group Properties”
标签页,用,Properties”下面的小方框选择要指定给各组的特性。图
7-31 中定义组 1 为 FREEZE 组,组 2 为 SYNC 组。在,Comment”
列可以为各组附加注释或标志。
图 7-32 设置 SYNC/FREEZE 组
4.测试 SYNC/FREEZE 功能的用户程序
将下面的程序下载到 CPU 416-1。
Network 1:检测 I0.0 的上升沿
A I0.0
FP M10.1 //在 I0.0 的脉冲上升沿
= M10.2 //M10.2 在一个循环周期为 1 状态,起动
SFC 11
Network 2:发送 FREEZE 命令
G01,CALL SFC11 //调用 SFC 11
REQ,=M10.2 //触发信号为 M10.2
LADDER,=W#16#200 //DP 主站接口模块 IM467 的输入地址(十进制数 512)
GROUP,=B#16#1 //选择第 1 组
MODE,=B#16#8 //选择 FREEZE 模式 (见表 7-11)
RET_VAL,=MW12 //返回值 RET_VAL 存放在 MW12

BUSY,=M10.3 //输出位 BUSY 保存在 M10.3 中
A M10.3 //如果没有执行完 SFC 11 (M10.3 = 1)
JC G01 //跳转到标号 G01 处继续执行
Network 3:检测 I0.1 的上升沿
A I0.1
FP M10.5 //在 I0.1 的脉冲上升沿
= M10.6 //M10.6 在一个循环周期为 1 状态,起动
SFC 11
Network 2:发送 SYNC 命令
G02,CALL SFC 11 //调用 SFC 11
REQ,=M10.6 //在 I0.1 的脉冲上升沿触发同步操作
LADDER,=W#16#200 //IM467 的输入地址
GROUP,=B#16#2 //选择组 2
MODE,=B#16#20 //选择 SYNC 模式(见表 7-11)
RET_VAL,=MW14 //RET_VAL 存放在 MW14 中
BUSY,=M10.7 //输出位 BUSY 保存在 M10.7
A M10.7 //如果没有执行完 SFC11 (M10.7=1)
JC G02 //跳转到标号 G02 处继续执行
在变量表中监视 QB4,IB4,I0.0 和 I0.1 等。 QB4 是 3 号站 ET
200B-16DI/16DO 模块的第 1 个输出字节,IB4 是 3 号站 ET 200B/16DI
模块的第 1 个输入字节。 I0.0 用来触发 FREEZE 组的操作,I0.1 用来触发 SYNC 组的操作。
将 I0.0 置为 1 状态,SFC 11 发送 FREEZE 控制命令,使 3 号站和 5 号站的输入处于 FREEZE 模式。 改变 3 号站实际的输入信号的状态,因为处于锁定模式,这些变化不会传送给主站的 CPU。
将 I0.1 置为 1 状态时,SFC 11 发送 SYNC 命令,使 3 号站和 4
号站的输出处于 SYNC 模式。在变量表中修改 QB4 的值后,不能传送到 3 号站 ET 200B-16DI/16DO 的输出模块。
在 I0.0 的下一次上升沿,将重新发送 FREEZE 命令,读取 3 号站和 5 号站当前的输入数据。 在 I0.1 的下一次上升沿,将重新发送 SYNC
命令,把设置好的数据传送到 3 号站和 4 号站的输出。
7.9 点对点通信
点对点( Point to Point)通信简称为 PtP 通信。
7.9.1 点对点通信处理器与集成的点对点通信接口
1,CP 340 通信处理器
1 个通信接口,4 种不同型号,RS-232C(V.24),20mA(TTY)和
RS-422/RS-485(X.27),可以使用通信协议 ASCII,3964(R)和打印机驱动软件。
2,CP 341 通信处理器
通信协议包括 ASCII,3964(R),RS 512 协议,和可装载的驱动程序,包括 MODBUS 主站协议或从站协议,和 Data Highway( DF1 协议)。
3,S7-300C 集成的点对点通信接口
全双工的传输速率为 19.2 kbit/s,半双工的传输速率为 38.4 kbit/s。
4,CP 440 点对点通信处理器
最多 32 个节点,最高 115.2 k bit/s。可以使用的通信协议为 ASCII
和 3964(R)。
5,CP 441-1/CP 441-2 点对点通信处理器
CP 441-1 可以插入一块不同物理接口的 IF 963 子模块。
CP 441-2 可以插入两块分别带不同物理接口的 IF 963 子模块。
物理层定义数据字节的物理传输数据链路层加上起始位和停止位出错时可以重复传输纯点对点连接时未用到的正确的命令报文帧用响应报文帧回答接收第4层第3层第2层第1层
ASCII driver
3964(R)
RK512
图7-33 PtP协议在ISO参考模型中的位置
传输层
7.9.2 ASCII Driver 通信协议
开放式的数据(所有可以打印的 ASCII 字符)和所有其他的字符。
ASCII driver 可以用结束字符,帧的长度和字符延迟时间作为报文帧结束的判据。用户可以在三个结束判据中选择一个。
( 1)用结束字符作为报文帧结束的判据
用 1,2 个用户定义的结束字符表示报文帧的结 束,应保证在用户数据中不包括结束字符。
第n个字符 第n+1个字符字符延迟时间信号
t
图7-34 字符延迟时间
1
( 2)用固定的字节长度( 1~ 1024 字节)作为报文帧结束的判据
如果在接收完设置的字符之前,字符 延迟时间到,将停止接收,
同时生成一个出错报文。
接收到的字符长度大于设置的固定长 度,多余的字符将被删除。
接收到的字符长度小于设置的固定长度,报文帧将被删除。
( 3)用字符延迟时间作为报文帧结束的判据
报文帧没有设置固定的长度和结束符;接收方在约定的字符延迟时间内未收到新的字符则认为报文帧结束(超时结束)。
2.数据流控制 /握手( Data Flow Control/ Handshaking)
握手可以保证两个以不同速度运行的设备之间传输的数据。
( 1)软件方式,例如通过向对方发送特定的字符(例如
XON/XOFF)实现数据流控制,报文帧中不允许出现 XON 和 XOFF
字符。
( 2)硬件方式,例如用信号线 RTS/CTS 实现数据流控制,应使用 RS-232C 完整的接线。
接收缓冲区已经准备好接收数据,就会发送 XON 字符或使输出信号 RTS 线为 ON。
反之,如果报文帧接收完成,或接收缓冲区只剩 50 字节,将发送字符 XOFF,或使 RTS 线变为 OFF,表示不能接收数据。
如果接收到 XOFF 字符,或通信伙伴的 CTS 控制信号被置为 OFF,
将中断数据传输。
如果在预定的时间内未收到 XON 字符,或通信伙伴的 CTS 控制信号为 OFF,将取消发送操作,并且在功能块的输出参数 STATUS
中生成一个出错信息。
3,CPU 31xC-2PtP 中的接收缓冲区
接收缓冲区是一个 FIFO(先入先出)缓冲区,如果有多个报文帧被写入接收缓冲区,总是第一个接收到的报文帧被传送到目标块中。
如果想将最新接收的报文帧传送到目标块中,必须将缓存的报文帧个数设置为 1,并取消改写保护。
30H = 0011 0000
31H = 0011 0001
32H = 0011 0010
10H = 0001 0000
03H = 0000 0011
XOR = 0010 0000
图7-35 BCC计算举例
块校验字符 BCC( block check characters) 是正文中的所有字符,异或”运算的结果。这种校验方式又称为“纵向奇偶校验”。组态时可以选择报文的结束分界符中是否有 BCC。
7.9.3 3964(R)通信协议
1,3964(R)协议使用的控制字符与报文帧格式
表 7-12 3964(R)协议使用的控制字符
控制字符
数值
说明
STX 02H 被传送文本的起始点
DLE 10H 数据链路转换( Data Link Escape)或肯定应答
ETX 03H 被传送文本的结束点
BCC 块校验字符( Block Check Character),只用于 3964
( R)
NAK 15H 否定应答( Negative Acknowledge)
BCC 是所有正文中的字符(包括正文中连发的 DLE)和报文帧结束标志( DLE 和 ETX)的“异或”运算的结果。
SXT DLE ETX BCC
图7-36 3964(R)报文帧格式
正文(发送的数据)
正文中如果有字符 10H,在发送时自动重发一次。接收方在收到两个连续的 10H 时自动地剔除一个。
开始代码(02H)
肯定应答(10H)
数据字节1
数据字节2
数据字节n
字节1
字节2
字节3
用户数据建立连接释放连接
… …
图7-37 3964(R)报文帧传输过程
发送方 接收方结束代码(10H)
块校验字符肯定应答(10H)
DLE
BCC
DLE
结束代码(03H)
ETX
STX
DLE
2.建立发送数据的连接
发送方首先应发送控制字符 STX。在“应答延迟时间( ADT)”
到来之前,接收到接收方发来的控制字符 DLE,表示通信链路已成功地建立。
如果通信伙伴返回 NAK 或返回除 DLE 和 STX 之外的其他控制代码,或应答延迟时间到时没有应答,程序将再次发送 STX,重试连接。
若约定的重试次数到后,都没有成功 建立通信链路,程序将放弃建立连接,并发送 NAK 给通信伙伴,同时通过输出参数 STATUS 向功能块 P_SND_RK 报告出错。
接收方在接收到 DLE,ETX 和 BCC 后,根据接收到的数据计算
BCC,并与通信伙伴发送过来的 BCC 进行比较。如果二者相等,并且没有其他接收错误发生,接收方的 CPU 将发送 DLE,断开通信连接。
如果二者不等,将发送 NAK,在规定的块等待时间内( 4s)等待重新发送。如果在设置的重试次数内 没有接收到报文,或者在块等待时间内没有进一步的尝试,将取消接收操作。
如果两台设备都请求发送。具有较低 优先级的设备将暂时放弃其发送请求,向对方发送控制字符 DLE。具有较高优先级的设备将以上述方式发送其数据。等到高优先级 的传输结束,连接被释放,具有较低优先级的设备就可以执行其发送请求。 通信的双方必须设置优先级。
7.9.4 用于 CPU 31xC-2PtP 点对点通信的系统功能块
表 7-13 CPU 31xC-2PtP 用于点对点通信的系统功能块
系统功能块 说明
SFB
60
SEND_PTP 将整个数据块或部分数据块区发送给一个通信伙伴
SFB
61
RCV_PTP 从一个通信伙伴接收数据,并将它们保存在一个数据块中
SFB
62
RES_RCVB 复位 CPU 的接收缓冲区
SFB
63
SEND_RK 将整个数据块或部分数据块区发送给一个通信伙伴
SFB
64
FETCH_RK 从一个通信伙伴处读取数据,并将它们保存在一个数据块中
SFB SERVE_RK 从一个通信伙伴处接收数据,并将它们保存在
65 一个数据块中;
为通信伙伴提供数据
1.用 SFB60,SEND_PTP”发送数据( ASCII/3964(R))
块被调用后,在控制输入 REQ 的脉冲上升沿发送数据。 SD_1 为发送数据区(数据块编号和起始地址),LEN 是要发送的数据块的长度。
"SEND_PTP"
DB10
EN ENO
SD_1
REQ
R
LADDR
LEN
DONE
ERROR
STATUS
"RCV_PTP"
DB12
EN ENO
EN_R
RD_1
R
LADDR
LEN
NDR
ERROR
STATUS
"RES_RCVB"
DB14
EN ENO
DONE
ERROR
STATUS
REQ
R
LADDR
图 9-16 用于 ASCII/9364(R)通信协议的系统功能块
用参数 LADDR 声明在 HW Config(硬件组态)中指定的子模块的 I/O 地址。
在控制输入 R 的脉冲上升沿,当前的数据发送被取消,SFB 被复位为基本状态。被取消的请求用一个出错报文( STATUS 输出)结束。
如果块执行没有错误,DONE 被置为 1 状态。如果出错,ERROR
被置为 1 状态,STATUS 将显示相应的事件标识符( ID) 。如果块被正确执行后 DONE 为 1,意味着,
( 1)使用 ASCII driver 时,数据被传送给通信伙伴,但是不能保证被对方正确地接收。
( 2)使用 3964(R)协议时,数据被传送给通信伙伴,并得到对方的肯定确认。但是不能保证数据被传送给对方的 CPU。
SFB 最多只能发送 206 个连续的字节。必须在参数 DONE 被置为
1,发送过程结束时,才能向 SD_1 指定的发送区写入新的数据。
2.用 SFB 61,RCV_PTP”接收数据
SFB 61 用来接收数据,并将它们保存到一个数据块中。
调用 SFB 61 后,令控制输入 EN_R 为 1,接收数据的准备就绪。
EN_R 的状态为 0,接收操作就被闭锁。 RD_1 为接收区,LEN 是数据块的长度。
块被正确执行时 NDR 被置为 1 状态。如果请求因出错被关闭,
ERROR 被置为 1 状态。
如果出现错误或报警,STATUS 将显示相应的事件标识符( ID) 。
3.用 SFB 62,RES_RCVB”清空接收缓冲区
SFB 62 用于清空 CPU 的整个接收缓冲区。在调用 SFB 62 时接收到的报文帧将被保存。
7.10 Prodave 通信软件在点对点通信中的应用
7.10.1 Prodave 简介
西门子的 PRODAVE( Process Data Traffic,过程数据交换)是用于 PC 与西门子的 S7 系列 PLC 通信的工具箱,提供了大量的用于通信的函数,可以在 VB,VC 等编程环境中调用这些函数。 PRODAVE
有以下特点,
( 1)使用简单方便,编程人员不需要熟悉复杂的通信协议,通过调用 PRODAVE 提供的动态链接库 (DLL)中的函数就可以实现通信。
( 2) 上位机用通信函数读写 PLC 中的数据区,用户不用编写 PLC
一侧的通信程序。
( 3) PC/MPI 适配器或 PC 的通信处理器同时可以兼作编程软件与 PLC 的通信接口。
本节介绍在 VB 环境调用 PRODAVE 的函数的方法。
7.10.2 PRODAVE 的硬件配置
PC
MPI-ISA
CP5511/5611/5512
S7-300/400/M7/C7
MPI接口
S7-200,PPI接口
PC
COM1/2
S7-300/400/M7/C7
MPI接口
PC
COM1/2
S7-200
PPI接口
PC/PPI电缆
PC/MPI适配器
图 7-38 PC 与 PLC 的连接方式
( 1)在桌面执行菜单命令“开始→程序→ PRODAVE_S7→ PG-PC
Interface”,打开接口参数设置对话框。
图 7-39 PG/PC 接口设置
( 2)选中接口参数配置列表框中的,PC Adapter(MPI)”,在上面的,Access Point of the Application(应用程序访问点),列表框内选择
,S7ONLINE(STEP 7)” 。
点击,Properties...” (属性)按钮,打开属性对话框。将,MPI”
栏中的,Transmission Rate” (波特率)设置为 187.5 kbit/s,其他参数可以采用默认的设置。在,Local Connection”选项卡的,COM Port”
选择框中设置实际使用的 PC 串口的编号,波特率可以设置为 19.2
kbit/s。
7.10.3 建立与断开连接
1.函数的声明
通信之前,首先要用 load_tool 函数建立上位机与 PLC 的连接。通信结束时必须用 unload_tool 函数断开 PC 与 PLC 的连接。
在 VB 中调用 DLL 函数之前,必须在模块中用 Declare 语句声明要使用的 DLL 函数,包括该函数所在的 DLL 库的名称和路径,以及该函数的参数说明。
首先声明 load_tool 中使用的用户自定义的数据类型,
Type plcadrtype
ADDRESS As Byte '站地址,缺省值为 2
SEGMENTID As Byte '段标识符,固定为 0
SLOTNO As Byte '槽的编号,缺省值为 2
RACKNO As Byte '机架号,固定为 0
End Type
然后声明程序中使用的函数,
Declare Function load_tool Lib "w95_s7.dll" (ByVal nr As Byte,
ByVal dev As String,adr As plcadrtype)As Long
'建立连接
Declare Function a_field_read Lib "w95_s7.dll" (ByVal no As Long,
ByVal amount As Long,value As Byte) As Long
'读 QB
Declare Function unload_tool Lib "w95_s7.dll" () As Long '断开连接
nr 是 PC 要激活的连接的个数( 1~ 32 个),dev 是用户驱动设备的名称,adr 是连接的地址列表。 a_field_read 中的 no 是要读取的输出字节的起始地址,amount 是字节数,value 是保存读取的数据的数组变量。
2.程序代码
Dim buffer(2) As Byte,Dim plcadr (2) As plcadrtype
plcadr(0).ADDRESS = 2,plcadr(0).SEGMENTID = 0,
plcadr(0).SLOTNO = 2,plcadr(0).RACKNO = 0
plcadr(1).ADDRESS = 0 '为 0 表示地址列表结束
res = load_tool (1,“S7ONLINE”,plcadr) '初始化 1个连接,MPI驱动器,plcadr 为地址列表
res = a_field_read (0,2,buffer(0)) '读取 QB0 和 QB1
res = unload_tool() '断开连接
7.10.4 PRODAVE 的通信函数
本节只介绍用于 S7-300/400 的函数。
1.读 PLC 字节的函数
X_field_read (ByVal no As Long,ByVal amount As Long,value As
Byte)
这类函数读取 PLC 的 X 地址区中从地址 no 开始的 amount 个字节的数据,存放在 PC 的数组变量 value 中。其中的 X 可取 e(输入 I)、
a(输出 Q)和 m(位存储器 M)。 e 和 a 是德语的缩写。
2.写 PLC 字节的函数
X_field_write (ByVal no As Long,ByVal amount As Long,value As
Byte)
这类函数将存放在 PC 的数组变量 value 中的数据写入 PLC 的 X
地址区从地址 no 开始的 amount 个字节中,X 可取 a 和 m。
3.读 /写数据块中的字节的函数
d_field_read/write (ByVal db As Long,ByVal no As Long,ByVal amount
As Long,value As Byte)
d_field_read 读取 PLC 的 db 数据块中从地址 no 开始的 amount 个字节的数据,存放在 PC 的数组变量 value 中。 d_field_write 将存放在
PC 的数组变量 value 中的 amount 个字节的数据,写入 PLC 的 db 数据块中从地址 no 开始的区域。
4.读 /写数据块中的字
db_read/write (ByVal dbno As Long,ByVal dwno As Long,amount As
Long,value As Integer)
函数中各变量的意义与 d_field_read/write 的类似,区别在于
amount 以字为单位。
5.读定时器 /计数器字
6.写计数器字
7.读 /写混合数据
8.标志位( M)状态测试
9.置位 /复位标志位( M)
10.其他通信函数
ag_info (value As infotyp)用于读取 PLC 的信息,ag_zustand (value
As Byte)用于读取 PLC 的状态,db_buch (value As Integer)用于检测某数据块是否存在。
11.数据处理函数
前面介绍的是 w95_s7.dll 中用于 PC 与 PLC 通信的函数。
PRODAVE 为了方便用户,在 komfort.dll 中还提供了与通信无关的数据处理函数。常用的有位数据与字节 数据的转换函数,浮点数格式转换函数,高低字节交换函数,位测试函数和错误信息函数。
7.10.5 PRODAVE 在水轮发电机组监控系统中的应用
远程服务
Modem
工程师站服务器以太网操作员站
LCU
输变电N号机组LCU
1号机组LCU
公用设备LCU

机组管理计算机
PLC
发 电 机监控单元
RS-232C
CAN总线发 电 机保护单元温度巡检仪
null
励磁屏 调速器水轮发电机组
以太网
1.计算机定时读取 PLC 上传的信息
在 PLC 的每一次循环中用 MOVE 指令将需要传送的数据集中到数据块中一片连续的区域,在 VB 程序中只需用函数 d_field_read 来读取数据块中准备好的数据。
2.上位机发送给 PLC 的随机命令的处理
随机命令包括计算机读写 PLC 的实时钟命令、需要确认的开关量命令和不需要确认的增减功率的命令等。
MW10 是上位机写入的命令字,MW12 是命令附带的数据字节数或 PLC 返回的数据字节数。 MW14( flag)是命令执行标志字,发送命令时上位机将它清 0,成功执行命令后 PLC 将它置为 1,执行时出错 PLC 将它置为 2。从 MB16 开始存放命令中附带的数据或 PLC 返回的数据。
上位机用 d_field_write 函数发送命令,以读取 PLC 的实时钟为例,
写入 MW10 的命令字为 0250H,写入 MW12 和 MW14 的均为 0。 PLC
检查到标志字 MW14 为 0 时,根据 MW10 中的命令字判断为读实时钟命令,因此用系统功能 READ_CLK 读出实时钟内 6 个字节的当前时间值,送入 MB14~ MB19。同时将返回的数据字节数 6 送 MW12,
并将标志字 MW14 置为 1。上位机发送命令后用函数 d_field_read 和较高的频率读取 MW12 和标志字 MW14 的值,在 MW14 变为 1 时读取 MB14~ MB19 中的时间值。
第 8 章 S7-300/400 在模拟量闭环控制中的应用
8.1 闭环控制与 PID 控制器
8.1.1 模拟量闭环控制系统
1.模拟量闭环控制系统的组成
pv t
控制器 D/A
A/D
( )pv n
mv t( )ev nsp n c t( )mv n
( ) ( )
( )
( )
执行机构 被控对象测量元件
-
图 8-1 PLC 模拟量闭环控制系统方框图
误差 ev(n) = sp(n)? pv(n)。 加热炉温度闭环控制系统,恒值控制系统和随动系统。
2.变送器的选择
电流输出型和电压输出型,S7-300/400 的模拟量输入模块最大距离为 200m。二线式和三线式变送器。
8.1.2 闭环控制反馈极性的确定
在开环状态下运行 PID 控制程序。如果控制器中有积分环节,因为反馈被断开了,不能消除误差,D/A 转换器的输出电压会向一个方向变化。如果假设接上执行机构,能减小误差,则为负反馈,反之为正反馈。
8.1.3 PID 控制器的优点
(1) 不需要被控对象的数学模型
(2) 结构简单,容易实现
(3) 有较强的灵活性和适应性
(4) 使用方便
8.1.4 PID 控制器的数字化
1,PID 控制器在连续控制系统中的表达式
PID 控制器的传递函数为
)
1
1(
)(
)(
D
I
P
sT
sT
K
sEV
sMV
++=
模拟量 PID 控制器的输出表达式为
M
dt
tdev
Tdttev
T
tevKtmv +++=

]
)(
)(
1
)([)(
D
I
P
(8-1)
需要较好的动态品质和较高的稳态精度时,可以选用 PI;控制对象的惯性滞后较大时,应选择 PID 控制方式。
2.积分部分的近似计算
)( nTev
S
简写为
)(nev
,输出量
)( nTmv
S
简写为
)(nmv
。各块矩形的总面积为

=
n
j
jevT
1
s
)(

图8-3 积分的近似运算
ev n
t
T
nT
( )
ev n ( -1)
ev t( )
3.微分部分的近似计算
s
T
nevnev
t
tev
dt
tdev )1()()()(
=
=
将积分和微分的近似表达式代入式( 8-1)
Mnevnev
T
T
jev
T
T
nevKnmv
n
j
+++=

=
)]}1()([)()({)(
1 s
D
I
s
P (8-2)
上式可以以化简为
MnevnevKjevKtevKnmv
n
j
+++=

=
)]1()([)()()(
D
1
IP
(8-3)
式中的 K
I
= K
P S
T / T
I
,K
D
= K
P
T
D

S
T,分别是积分系数和微分系数。
4.不完全微分 PID
f
T 对应于微分操作的延迟时间 TM_LAG。不完全微分 PID 的传递函数为
)410()
1
1
1(
)(
)(
f
D
I
P
+
++=
sT
sT
sT
K
sEV
sMV
5.死区特性在 PID 控制中的应用
-
SP
死区特性
控制器
PID
图8-4 死区非线性
B
8.1.5 使用系统功能块实现闭环控制
本章主要介绍用于 CPU 31xC 的 PID 控制的系统功能块 SFB41~
SFB43。
1,SFB 41~ SFB 43 的调用
计算频率越高,单位时间的计算量越多,能使用的控制器的数量就越少。
2,PID 控制的程序结构
应在 OB 100 和在循环中断 OB35 中调用 SFB 41~ 43。 执行 OB35
的时间间隔( ms)即 PID 控制的采样周期
s
T 。
8.2 连续 PID 控制器 SFB 41
SFB,CONT_C”可以作为单独的 PID 恒值控制器,或在多闭环控制中实现级联控制器、混合控制器和比例控制器。 SFB 41 可以用脉冲发生器 SFB 43 进行扩展,产生脉冲宽度调制的输出信号,来控制比例执行机构的二级或三级( two or three step)控制器。
8.2.1 设定值与过程变量的处理
CRP_IN PV_NORM
%
PV_R
实数外设变量浮点数过程变量内部浮点数给定值
PV_FAC
PV_OFF
100/27648
PV_PER
PV_IN
SP_INT
PVPER_ON
PV
过程变量死区宽度过程变量格式化
0
1
PV_R*PV_FAC
+PV_OFF
+

DAEDBAND
DEADB_W
死区输入系数输入偏移量
PV_R = PV_PER ×100 /27648
PV_NORM 的输出 = PV_R × PV_FAC + PV_OFF
8.2.2 PID 控制算法
误差
ER
比例增益
GAIN
微分分量积分积分初始化积分保持 积分分量微分微分时间常数扰动
INT
积分时间常数积分初值微分延迟时间
TI
P_SEL
1
0
I_SEL
1
0
I_ITL_ON
I_ITLVAL
DIF
TD
D_SEL
1
0
0.0
0.0
0.0
LMN_P
LMN_I
LMN_D

DISV
INT_HOLD
TM_LAG

比例分量
+
+
+
引入扰动量 DISV( disturbance)可以实现前馈控制。
SFB,CONT_C”有一个初始化程序,在输入参数 COM_RST(完全重新起动)设置为 1 时该程序被执行。在初始化过程中,如果
I_ITL_ON(积分作用初始化)为 1 状态,将输入 I_ITLVAL 作为积分器的初始值。 INT_HOLD 为 1 时积分操作保持,积分输出被冻结。
8.2.3 控制器输出值的处理
输出系数输出超上限输出超下限输出偏移量外设输出值输出限幅手动手动控制
MAN_ON
1
0
MAN 输出下限值
LMNLIMIT
输出上限值
LMN_LLM
LMN_HLM
LMN_NORM
LMN_LIM
输出限幅值
LMN_FAC
LMN_OFF
输出量格式化
CRP_OUT
LMN控制器输出值
27648/100
转换为外设输出
%
LMN_PER
QLMN_HLM
QLMN_LLM
LMN=LMN_LIM*LMN_FAC+LMN_OFF
在手动模式时如果令微分项为 0,将积分部分( INT)设置为 LMN
– LMN_P – DISV,可以保证手动到自动的无扰切换,即切换时控制器的输出值不会突变,DISV 为扰动输入变量。
LMN = LMN_LIM × LMN_FAC + LMN_OFF
LMN_PER = LMN × 27648/100
8.3 步进 PI 控制器 SFB 42
8.3.1 步进控制器的结构
SFB 42,CONT_S” (步进控制器)用开关量输出信号控制积分型执行机构,电动调节阀用伺服电机的正转和反转来控制阀门的打开和关闭,基于 PI 控制算法。
SFB42 的初始化程序在输入参数 COM_RST 为 1 时执行。图中的三级( Three step)元件具有带滞环的双向继电器非线性特性。
ER
给定值
PI
LMN
三级元件
被控对象电动调节阀
QLMNUP
QLMNDN
位置反馈信号过程值
--
图 8-6 有位置反馈信号的步进控制系统
图 8-7中用模拟的阀门位置信号来代替实际的阀门位置反馈信号。
参数 MTR_TM 是执行机构从一个限位位置移动到另一个限位位置所需的时间。
1
0
1
0
100.0
-100.0
0.0
0.0
MTR_TM积分器
QLMNUP
QLMNDN
GAIN
1/TI
--
-
+
被控对象电动调节阀给定值过程值
三级元件
ER
A
________
1
+
+
图 8-7 使用模拟的位置反馈信号的步进控制系统
积分器对图 8-7中 A点处的信号 ±100.0/MTR_TM积分的分量可以用来模拟阀门开度(位置)的变化情况。
三级元件的输入信号中有 3 个分量,
( 1) ER*GAIN,为 PI 控制器中的比例分量;
( 2) ER*GAIN/TI 经积分器积分后的信号,为 PI 控制器中的积分分量;
( 3) A 点的信号积分后,得到的模拟的阀门开度(位置)信号。
CRP_IN PV_NORM
%
PV_R
实数外设变量浮点数过程变量内部浮点数给定值
PV_FAC
PV_OFF
100/27648
PV_PER
PV_IN
SP_INT
PVPER_ON
PV
误差过程变量死区宽度过程变量格式化
0
1
PV_R*PV_FAC
+PV_OFF
+

DAEDBAND
DEADB_W
死区
ER
比例增益输入系数输入偏移量
GAIN
扰动

DISV
THREE_ST
LMNS_ON
1
0
1
0
LMNUP
LMNDN
AND
AND
PULSEOUT
AND
AND
1
0
1
0

100.0
-100.0
0.0
0.0

OR
积分INT
1
0
0.0
1
0
0.0
LMNS_ON
1/TI
LMNLIMIT
100.0,0.0
积分INT
LMNR_SIM
LMNRS_ON
LMNRSVAL
LMNR_HS
LMNR_LS
PULSE_TM
BREAK_TM
QLMNUP
QLMNDN
MTR_TM
最小断开时间最小脉冲时间脉冲输出控制信号增大控制信号减小手动模式控制阀上限位置控制阀下限位置
-
-
ON
三态元件手动模式 ON
MTR_TM
________1
+
+
+
开度增大开度减小
1.对设定值、过程变量和误差的处理与 SFB 41 的完全相同。
2,PI 步进算法与脉冲的生成
脉冲发生器 PULSEOUT 保证最小脉冲时间 PULSE_TM 和最小断开时间 BREAK_TM,以减小执行机构的磨损。
3.手动模式
手动与自动的切换过程是平滑的。
4.控制阀的极限位置保护
8,4 脉冲发生器 SFB 43
8.4.1 脉冲发生器的功能与结构
SFB 43,PULSEGEN” (脉冲发生器)与连续控制器,CONT_C”
一起使用,构建脉冲宽度调制的二级( two step)或三级( three step)
PID 控制器。
pv t
控制器
PULSEGEN
A/D
( )pv n
ev nsp n c t( )LMN( ) ( )
( )
执行机构 被控对象测量元件
-
CONT_C
PID INV
QPOS_P
QNEG_P
图 8-9 PLC 模拟量闭环控制系统方框图
脉冲列的该恒定周期( PER_TM)等于 PID 控制器的采样周期
CYCLE。
假设脉冲周期 PER_TM 是 SFB 43 处理周期 CYCLE 的 N 倍(见图 8-10),建议 N≥ 20。控制值的精度为( 100/N) %。
INV
(LMN)
50
80
30
100
50
QPOS_P
PER_TM
PULSEGEN
图8-10 脉宽调制波形图周期
t
t
0
0
每个周期输出的脉冲宽度与输入变量 INV 成正比,设 N= 20,如果输入变量为最大值的 30 %,则前 6 次调用 ( 20 次调用的 30 %) SFB
43 时正脉冲输出 QPOS 为 1 状态。 其余 14 次调用 ( 10 次调用的 70 %)
时输出 QPOS 为 0 状态。
2.自动同步
如果输入 INV 发生了变化,并且对 SFB 43 的调用不在输出脉冲的第 1 个或最后两个调用周期中,将进行同步。 脉冲宽度被重新计算,
并在下一个周期开始输出一个新的脉冲。
QPOS_P
QNEG_P
MAN_ON
1
NEG_P_ON
SYN_ON,STEP3_ON
0
POS_P_ON
INV
PER_TM,P_B_TM,RATIOFAC
ST2BI_ON
图 8-11 PULSEGEN 框图
3.运行模式的参数设置
可以组态为三级输出、双极性二级输出或单极性二级输出。
表 8-3 运行模式的参数设置
操作模式 MAN_ON STEP3_ON ST2BI_ON
三级控制 FALSE TRUE Any
双极性二级控制,控制范围
-100 %~ 100 %
FALSE FALSE TRUE
单极性二级控制,控制范围
0 %~ 100 %
FALSE FALSE FALSE
手动模式 TRUE Any Any
4.二级控制或三级控制中的手动模式
表 8-4 手动模式的输出信号
POS_P_ON NEG_P_ON QPOS_P QNEG_P
FALSE FALSE FALSE FALSE
TRUE FALSE TRUE FALSE
FALSE TRUE FALSE TRUE
三级控制
TRUE TRUE FALSE FALSE
FALSE Any FALSE TRUE
二级控制
TRUE Any TRUE FALSE
5.初始化
SFB,PULSGEN”的初始化程序在输入参数 COM_RST 为 1 时运行。
8.4.2 三级控制器
表 8-5 三级温度控制输出信号的状态
输出信号 加热 执行机构关闭 冷却
QPOS_P TRUE FALSE FALSE
QNEG_P FALSE FALSE TRUE
100%
-100%
PER_TM
P_B_TM
PER_TM - P_B_TM
连续打开正脉冲宽度负脉冲宽度连续关闭
INV
图 8-12 三级控制器的对称曲线
比率系数用于改变正脉冲宽度和负脉 冲宽度之比。例如在热处理中,用于补偿电加热和水冷却的不同时间常数,取值范围为 0.1~ 10.0,
比率系数通常为 1。
图 8-12 为比率系数为 1 的三级控制器的对称曲线。将单位为%的输入变量 INV 与周期时间 PER_TM 相乘,可以计算出正、负脉冲宽度,
脉冲宽度 = INV × PER_TM / 100 (8-5)
2.最小脉冲 /最小中断时间
防止因短促的接通 /断开时间降低开关元件和执行机构的使用寿命。
8.4.3 二级控制器
二级( two-step)控制 只用 PULSEGEN 的 正脉冲输出 QPOS_P 控制 I/O 执行机构。
100%-100%
PER_TM
PER_TM - P_B_TM
连续打开正脉冲宽度
P_B_TM
0%
连续关闭
100%
PER_TM
PER_TM - P_B_TM
连续打开正脉冲宽度
P_B_TM
0%
INV
INV
图 8-13 -100%~ 100%的双极性控制值二级控制 图 8-14
0%~ 100%的单极性控制值二级控制
如果在控制闭环中二级控制器的执行 脉冲需要逻辑状态相反的开关量信号,可以用 QNEG_P 输出负的输出信号。
表 8-6 两个输出量的二级控制
脉冲 执行机构打开 执行机构关闭
QPOS_P TRUE FALSE
QNEG_P FALSE TRUE
8.5 PID 控制器的参数整定方法
8.5.1 PID 控制器的参数与系统动静态性能的关系
比例作用:与 e(k)在时间上一致,调节及时。
K
P
↑→ e
ss
↓,精度↑;σ %↑,稳定性↓; t
r
↓,上升加快。Ⅰ
型系统对阶跃输入无差,恒值控制时 K
P
可调小些。
积分作用:只要误差不为零,u(k)就会变化,直到误差为 0,
可以消除阶跃响应的稳态误差。 90 度滞后相角,不利于稳定性,很少单独使用。 T
I
↑,→积分作用↓,σ %↓,消除误差的速度减慢。
微分作用,e 不大,但 de/dt 可能较大,微分作用反映变化的趋势,提前给出较大的调节作用,较比 例调节更为及时,提前预报。 T
d
↑,→σ %↓,抑制高频干扰的能力↓。 T
d
过大,在输出接近稳态值时上升缓慢。
选取采样周期 T
S
时,应使它远远小于系统阶跃响应的纯滞后时间或上升时间。
表 8-7 采样周期的经验数据
被控制量 流量 压力 温度 液位 成分
采样周期 ( s) 1~ 5 3~ 10 15~ 20 6~ 8 15~ 20
8.5.2 确定 PID 控制器参数初值的工程方法
扩充响应曲线法,
(1) 断开系统的反馈,令 PID 控制器为 K
P
= 1 的比例控制器,在系统输入端加一个阶跃给定信号,测量并画出广义被控对象 (包括执行机构 )的开环阶跃响应曲线。
(2) 在曲线上最大斜率处作切线,求得被控对象的纯滞后时间 τ 和上升时间常数 T
1

(3) 求出系统的控制度。
控制度 =
模拟
]d)([
]d)([
0
2
DDC
0
2
tte
tte




(4) 根据求出的 τ,T
1
和控制度的值,查表 8-8,求得 PID 控制器的 K
P
,T
I
,T
D
和 T
S
,采样周期 T
S
也可以参考表 8-7 选取。
表 8-8 扩充响应曲线法参数整定表
控制度 控制方式 K
P
T
I
T
D
T
S
1.05 PI
PID
0.84T
1

1.15T
1

3.4τ
2.0τ

0.45τ
0.1τ
0.05τ
1.2 PI
PID
0.78T
1

1.0 T
1

3.6τ
1.9τ

0.55τ
0.2τ
0.16τ
1.5 PI
PID
0.68 T
1

0.85 T
1

3.9τ
1.62τ

0.65τ
0.5τ
0.34τ
2.0 PI
PID
0.57 T
1

0.6 T
1

4.2τ
1.5τ

0.82τ
0.8τ
0.6τ
τ T
1
t
c t
( )
图8-15 被控对象的阶跃响应曲线
(∞)
O
c
8,4 脉冲发生器 SFB 43
8.4.1 脉冲发生器的功能与结构
SFB 43,PULSEGEN” (脉冲发生器)与连续控制器,CONT_C”
一起使用,构建脉冲宽度调制的二级( two step)或三级( three step)
PID 控制器。
pv t
控制器
PULSEGEN
A/D
( )pv n
ev nsp n c t( )LMN( ) ( )
( )
执行机构 被控对象测量元件
-
CONT_C
PID INV
QPOS_P
QNEG_P
图 8-9 PLC 模拟量闭环控制系统方框图
脉冲列的该恒定周期( PER_TM)等于 PID 控制器的采样周期
CYCLE。
假设脉冲周期 PER_TM 是 SFB 43 处理周期 CYCLE 的 N 倍(见图 8-10),建议 N≥ 20。控制值的精度为( 100/N) %。
INV
(LMN)
50
80
30
100
50
QPOS_P
PER_TM
PULSEGEN
图8-10 脉宽调制波形图周期
t
t
0
0
每个周期输出的脉冲宽度与输入变量 INV 成正比,设 N= 20,如果输入变量为最大值的 30 %,则前 6 次调用 ( 20 次调用的 30 %) SFB
43 时正脉冲输出 QPOS 为 1 状态。 其余 14 次调用 ( 10 次调用的 70 %)
时输出 QPOS 为 0 状态。
2.自动同步
如果输入 INV 发生了变化,并且对 SFB 43 的调用不在输出脉冲的第 1 个或最后两个调用周期中,将进行同步。 脉冲宽度被重新计算,
并在下一个周期开始输出一个新的脉冲。
QPOS_P
QNEG_P
MAN_ON
1
NEG_P_ON
SYN_ON,STEP3_ON
0
POS_P_ON
INV
PER_TM,P_B_TM,RATIOFAC
ST2BI_ON
图 8-11 PULSEGEN 框图
3.运行模式的参数设置
可以组态为三级输出、双极性二级输出或单极性二级输出。
表 8-3 运行模式的参数设置
操作模式 MAN_ON STEP3_ON ST2BI_ON
三级控制 FALSE TRUE Any
双极性二级控制,控制范围
-100 %~ 100 %
FALSE FALSE TRUE
单极性二级控制,控制范围
0 %~ 100 %
FALSE FALSE FALSE
手动模式 TRUE Any Any
4.二级控制或三级控制中的手动模式
表 8-4 手动模式的输出信号
POS_P_ON NEG_P_ON QPOS_P QNEG_P
FALSE FALSE FALSE FALSE
TRUE FALSE TRUE FALSE
FALSE TRUE FALSE TRUE
三级控制
TRUE TRUE FALSE FALSE
FALSE Any FALSE TRUE
二级控制
TRUE Any TRUE FALSE
5.初始化
SFB,PULSGEN”的初始化程序在输入参数 COM_RST 为 1 时运行。
8.4.2 三级控制器
表 8-5 三级温度控制输出信号的状态
输出信号 加热 执行机构关闭 冷却
QPOS_P TRUE FALSE FALSE
QNEG_P FALSE FALSE TRUE
100%
-100%
PER_TM
P_B_TM
PER_TM - P_B_TM
连续打开正脉冲宽度负脉冲宽度连续关闭
INV
图 8-12 三级控制器的对称曲线
比率系数用于改变正脉冲宽度和负脉 冲宽度之比。例如在热处理中,用于补偿电加热和水冷却的不同时间常数,取值范围为 0.1~ 10.0,
比率系数通常为 1。
图 8-12 为比率系数为 1 的三级控制器的对称曲线。将单位为%的输入变量 INV 与周期时间 PER_TM 相乘,可以计算出正、负脉冲宽度,
脉冲宽度 = INV × PER_TM / 100 (8-5)
2.最小脉冲 /最小中断时间
防止因短促的接通 /断开时间降低开关元件和执行机构的使用寿命。
8.4.3 二级控制器
二级( two-step)控制 只用 PULSEGEN 的 正脉冲输出 QPOS_P 控制 I/O 执行机构。
100%-100%
PER_TM
PER_TM - P_B_TM
连续打开正脉冲宽度
P_B_TM
0%
连续关闭
100%
PER_TM
PER_TM - P_B_TM
连续打开正脉冲宽度
P_B_TM
0%
INV
INV
图 8-13 -100%~ 100%的双极性控制值二级控制 图 8-14
0%~ 100%的单极性控制值二级控制
如果在控制闭环中二级控制器的执行 脉冲需要逻辑状态相反的开关量信号,可以用 QNEG_P 输出负的输出信号。
表 8-6 两个输出量的二级控制
脉冲 执行机构打开 执行机构关闭
QPOS_P TRUE FALSE
QNEG_P FALSE TRUE
8.5 PID 控制器的参数整定方法
8.5.1 PID 控制器的参数与系统动静态性能的关系
比例作用:与 e(k)在时间上一致,调节及时。
K
P
↑→ e
ss
↓,精度↑;σ %↑,稳定性↓; t
r
↓,上升加快。Ⅰ
型系统对阶跃输入无差,恒值控制时 K
P
可调小些。
积分作用:只要误差不为零,u(k)就会变化,直到误差为 0,
可以消除阶跃响应的稳态误差。 90 度滞后相角,不利于稳定性,很少单独使用。 T
I
↑,→积分作用↓,σ %↓,消除误差的速度减慢。
微分作用,e 不大,但 de/dt 可能较大,微分作用反映变化的趋势,提前给出较大的调节作用,较比 例调节更为及时,提前预报。 T
d
↑,→σ %↓,抑制高频干扰的能力↓。 T
d
过大,在输出接近稳态值时上升缓慢。
选取采样周期 T
S
时,应使它远远小于系统阶跃响应的纯滞后时间或上升时间。
表 8-7 采样周期的经验数据
被控制量 流量 压力 温度 液位 成分
采样周期 ( s) 1~ 5 3~ 10 15~ 20 6~ 8 15~ 20
8.5.2 确定 PID 控制器参数初值的工程方法
扩充响应曲线法,
(1) 断开系统的反馈,令 PID 控制器为 K
P
= 1 的比例控制器,在系统输入端加一个阶跃给定信号,测量并画出广义被控对象 (包括执行机构 )的开环阶跃响应曲线。
(2) 在曲线上最大斜率处作切线,求得被控对象的纯滞后时间 τ 和上升时间常数 T
1

(3) 求出系统的控制度。
控制度 =
模拟
]d)([
]d)([
0
2
DDC
0
2
tte
tte




(4) 根据求出的 τ,T
1
和控制度的值,查表 8-8,求得 PID 控制器的 K
P
,T
I
,T
D
和 T
S
,采样周期 T
S
也可以参考表 8-7 选取。
表 8-8 扩充响应曲线法参数整定表
控制度 控制方式 K
P
T
I
T
D
T
S
1.05 PI
PID
0.84T
1

1.15T
1

3.4τ
2.0τ

0.45τ
0.1τ
0.05τ
1.2 PI
PID
0.78T
1

1.0 T
1

3.6τ
1.9τ

0.55τ
0.2τ
0.16τ
1.5 PI 0.68 T
1
/τ 3.9τ - 0.5τ
PID 0.85 T
1
/τ1.62τ 0.65τ0.34τ
2.0 PI
PID
0.57 T
1

0.6 T
1

4.2τ
1.5τ

0.82τ
0.8τ
0.6τ
τ T
1
t
c t
( )
图8-15 被控对象的阶跃响应曲线
(∞)
O
c