第一部分 导论 2
第1章 SIMATIC S7-300/400可编程序控制器 2
1.1 可编程序控制器的结构 2
1.1.1 部件 2
1.1.2 S7-300工作站 4
1.1.3 S7-400工作站 5
1.1.4 SIMATIC的容错 6
1.1.5 SIMATIC的安全性 6
1.1.6 CPU的存储空间 8
1.2 分布式I/O 12
1.2.1 DP主系统 12
1.2.2 DP主站 13
1.2.3 DP从站 13
1.2.4 更多网络部件 14
1.2.5 与PROFIBUS PA的连接 15
1.2.6 与AS接口的连接 16
1.2.7 与串行接口的连接 17
1.3 通信 17
1.3.1 引言 17
1.3.2 子网络 19
1.3.3 通信服务 21
1.3.4 连接 22
1.4 模块地址 22
1.4.1 信号通路 22
1.4.2 插槽地址 23
1.4.3 模块起始地址 24
1.4.4 诊断地址 24
1.4.5 总线节点地址 25
1.5 地址空间 25
1.5.1 用户数据空间 25
1.5.2 过程映像 26
1.5.3 用户数据的一致性 27
1.5.4 位存储区 28
第2章 STEP 7编程软件 29
2.1 STEP 7基本软件包 29
2.1.1 安装 29
2.1.2 自动化认证管理器 29
2.1.3 SIMATIC管理器 30
2.1.4 项目与库 33
2.1.5 多重项目 34
2.1.6 在线帮助 34
2.2 编辑项目 34
2.2.1 创建项目 35
2.2.2 管理、重组与归档 36
2.2.3 项目版本号 37
2.2.4 创建与编辑多重项目 37
2.3 组态工作站 38
2.3.1 安排模块 40
2.3.2 模块编址 40
2.3.3 设置模块参数 41
2.3.4 带有MPI的连网模块 41
2.3.5 监控与修改模块 42
2.4 网络组态 42
2.4.1 网络浏览组态 44
2.4.2 用网络设置组态DP主系统 44
2.4.3 连接组态 45
2.4.4 网络转换 48
2.4.5 加载连接数据 49
2.4.6 多重项目中的项目匹配 49
2.5 创建S7程序 51
2.5.1 引言 51
2.5.2 符号表 52
2.5.3 STL程序编辑器 53
2.5.4 SCL程序编辑器 58
2.5.5 重新配线 61
2.5.6 地址优先级 62
2.5.7 参考数据 63
2.5.8 多种语言注释和显示文本 65
2.6 在线模式 66
2.6.1 连接PLC 66
2.6.2 保护用户程序 67
2.6.3 CPU信息 68
2.6.4 用户程序加载到CPU 69
2.6.5 块处理 69
2.7 程序测试 72
2.7.1 硬件诊断 72
2.7.2 确定STOP的原因 72
2.7.3 监控和修改变量 73
2.7.4 强制变量 74
2.7.5 外部输出启用 76
2.7.6 STL程序状态 76
2.7.7 监控和修改数据地址 78
2.7.8 调试SCL程序 79
第3章 SIMATIC S7程序 82
3.1 程序处理 82
3.1.1 程序处理方法 82
3.1.2 优先级 83
3.1.3 程序处理的详细说明 85
3.2 块 87
3.2.1 块类型 87
3.2.2 块结构 88
3.2.3 块属性 89
3.2.4 块接口 92
3.3 变量寻址 94
3.3.1 变量的绝对寻址 94
3.3.2 间接寻址 95
3.3.3 变量的符号寻址 96
3.4 用STL编程代码块 97
3.4.1 STL语句的结构 97
3.4.2 递增式编程代码块 98
3.4.3 视图窗口 99
3.4.4 网络编程 100
3.4.5 STL代码块的基于源文件的编程 101
3.5 编程SCL代码块 105
3.5.1 SCL语句的结构 105
3.5.2 编程SCL代码块 106
3.6 编程数据块 110
3.6.1 递增式编程数据块 110
3.6.2 基于源文件的数据块编程 113
3.7 变量和常量 114
3.7.1 变量的一般声明 114
3.7.2 数据类型概要 115
3.7.3 基本数据类型 116
3.7.4 复杂数据类型 119
3.7.5 参数类型 119
第二部分 基本功能 122
第4章 二进制逻辑运算 122
4.1 处理二进制逻辑运算 122
4.2 基本二进制逻辑运算 125
4.2.1 AND功能 125
4.2.2 OR功能 125
4.2.3 XOR功能 127
4.3 逻辑运算结果取反 128
4.4 组合二进制逻辑运算 129
4.4.1 处理嵌套表达式 129
4.4.2 根据OR组合AND功能 130
4.4.3 根据AND组合OR和XOR 131
4.4.4 根据XOR组合AND功能 131
4.4.5 组合OR功能和XOR功能 132
4.4.6 嵌套表达式取反 132
第5章 存储功能 134
5.1 赋值 134
5.2 置位和复位 134
5.3 RS触发器功能 136
5.3.1 复位优先的存储功能 136
5.3.2 置位优先的存储功能 136
5.3.3 二进制逻辑运算中的存储功能 137
5.4 边沿检测 138
5.4.1 正跳变边沿 138
5.4.2 负跳变边沿 139
5.4.3 测试脉冲存储位 140
5.4.4 二进制逻辑运算中的边沿检测 140
5.4.5 二进制分频器 141
5.5 传送带控制系统举例 141
第6章 传送功能 145
6.1 加载和传送数据概要 145
6.2 加载功能 147
6.2.1 加载功能的一般表示 147
6.2.2 加载存储器单元的内容 148
6.2.3 加载常量 149
6.3 传送功能 149
6.3.1 传送功能的一般表示 149
6.3.2 传送到各个存储器区域 150
6.4 累加器功能 151
6.5 累加器1中的字节交换 152
6.6 用于数据传送的系统功能 152
6.6.1 复制存储器区域 154
6.6.2 变量的不可中断复制 155
6.6.3 存储器区域的初始化 155
6.6.4 复制STRING变量 156
6.6.5 读取加载存储器 156
6.6.6 写入加载存储器 157
第7章 定时器功能 159
7.1 定时器编程 159
7.1.1 启动定时器 159
7.1.2 确定定时时间 159
7.1.3 复位定时器 161
7.1.4 启用定时器 161
7.1.5 检查定时器 161
7.1.6 定时器指令的顺序 162
7.1.7 时钟发生器举例 163
7.2 脉冲定时器 163
7.3 扩展脉冲定时器 166
7.4 通电延时定时器 168
7.5 保持型通电延时定时器 170
7.6 断电延时定时器 172
7.7 IEC定时器功能 174
7.7.1 脉冲发生器SFB 3 TP 175
7.7.2 通电延时SFB 4 TON 176
7.7.3 断电延时SFB 5 TOF 176
第8章 计数器功能 177
8.1 计数器的置位和复位 177
8.2 计数 178
8.3 计数器检测 179
8.4 启用计数器 179
8.5 计数器指令的顺序 181
8.6 IEC计数器功能 182
8.6.1 加计数器SFB 0 CTU 182
8.6.2 减计数器SFB 1 CTD 183
8.6.3 加/减计数器SFB 2 CTUD 183
8.7 零件计数器举例 183
第三部分 数字功能 188
第9章 比较功能 188
9.1 比较功能的一般表示法 188
9.2 比较功能说明 189
9.3 逻辑运算中的比较功能 191
第10章 算术功能 193
10.1 算术功能的一般表达法 193
10.2 整型数计算 194
10.3 双整型数计算 195
10.4 实型数计算 196
10.5 逐次算术功能 197
10.6 累加器1加常量 198
10.7 自增和自减 199
第11章 数学功能 201
11.1 数学功能的处理过程 201
11.2 三角函数功能 202
11.3 反三角函数功能 202
11.4 其他数学功能 203
第12章 转换功能 205
12.1 转换功能的处理过程 205
12.2 整型数与双整型数转换 206
12.3 BCD码的转换 207
12.4 实型数的转换 207
12.5 其他转换功能 209
第13章 移位功能 210
13.1 移位功能的处理过程 210
13.2 移位 212
13.3 循环 213
第14章 字逻辑 215
14.1 字逻辑的处理过程 215
14.2 字逻辑运算说明 217
第四部分 程序流程控制 220
第15章 状态位 220
15.1 状态位说明 220
15.2 状态位和二进制标志位的设置 223
15.3 状态位检测 226
15.4 使用二进制结果 228
第16章 跳转功能 230
16.1 跳转功能的编程 230
16.2 无条件跳转 231
16.3 使用RLO和BR的跳转功能 231
16.4 使用CC0和CC1的跳转功能 233
16.5 使用OV和OS的跳转功能 234
16.6 跳转分配器 235
16.7 循环跳转 236
第17章 主控继电器 237
17.1 MCR相关性 237
17.2 MCR范围 238
17.3 MCR区域 238
17.4 I/O位的置位与复位 241
第18章 块功能 242
18.1 代码块的块功能 242
18.1.1 块调用概述 242
18.1.2 CALL调用语句 243
18.1.3 UC和CC调用语句 244
18.1.4 块结束功能 245
18.1.5 暂态局部数据 246
18.1.6 静态局部数据 248
18.2 数据块的块功能 250
18.2.1 两个数据块寄存器 251
18.2.2 访问数据地址 252
18.2.3 打开数据块 254
18.2.4 交换数据块寄存器 255
18.2.5 数据块的长度和数量 255
18.2.6 数据寻址中的特殊点 255
18.3 用于数据块的系统功能 257
18.3.1 在工作存储器内生成数据块 258
18.3.2 在加载存储器内生成数据块 259
18.3.3 删除数据块 260
18.3.4 检测数据块 260
18.4 空操作 260
18.4.1 空操作NOP语句 260
18.4.2 程序显示语句 261
第19章 块参数 262
19.1 块参数概述 262
19.1.1 块参数定义 262
19.1.2 块参数处理 263
19.1.3 块参数声明 263
19.1.4 功能值声明 265
19.1.5 块参数初始化 265
19.2 形参 266
19.3 实参 269
19.4 传递块参数 272
19.5 举例 273
19.5.1 传送带举例 273
19.5.2 零件计数器举例 274
19.5.3 给料举例 275
第五部分 程序处理 280
第20章 主程序 280
20.1 程序组织 280
20.1.1 程序结构 280
20.1.2 程序组织 281
20.2 扫描周期控制 282
20.2.1 过程映像更新 282
20.2.2 扫描周期监控时间 284
20.2.3 最小扫描周期和背景扫描 285
20.2.4 响应时间 286
20.2.5 启动信息 287
20.3 程序功能 288
20.3.1 时间 288
20.3.2 读系统时钟 291
20.3.3 运行时间表 291
20.3.4 CPU存储器的压缩 293
20.3.5 等待与停止 293
20.3.6 多处理器模式 293
20.4 通过分布式I/O通信 294
20.4.1 分布式I/O寻址 295
20.4.2 组态分布式I/O 299
20.4.3 用于分布式I/O的特殊功能 305
20.4.4 用于分布式I/O的系统功能 309
20.5 全局数据通信 314
20.5.1 基础知识 314
20.5.2 组态GD通信 317
20.5.3 用于GD通信的系统功能 319
20.6 S7的基本通信 319
20.6.1 工作站内部的S7基本通信 319
20.6.2 用于工作站内部交换数据的系统功能块 320
20.6.3 工作站外的S7基本通信 322
20.6.4 工作站外S7基本通信的系统功能 323
20.7 S7通信 325
20.7.1 基础 325
20.7.2 双向数据交换 327
20.7.3 单向数据交换 329
20.7.4 传送打印数据 330
20.7.5 控制功能 331
20.7.6 监控功能 332
20.8 S7-300C的点对点通信 336
20.8.1 基础 336
20.8.2 ASCII驱动器与3964(R)进程 337
20.8.3 RK512计算机链接 338
20.9 运行中组态 342
20.9.1 变更组态的准备 343
20.9.2 变更组态 343
20.9.3 加载组态 344
20.9.4 CiR同步时间 344
20.9.5 对程序执行的影响 345
20.9.6 控制CiR进程 345
第21章 中断处理 346
21.1 概要 346
21.2 日历中断 347
21.2.1 处理日历中断 348
21.2.2 用STEP 7组态日历中断 349
21.2.3 用于日历中断的系统功能 350
21.3 延时中断 351
21.3.1 延时中断处理 352
21.3.2 用STEP 7组态延时中断 352
21.3.3 延时中断的系统功能 353
21.4 看门狗中断 354
21.4.1 处理看门狗中断 355
21.4.2 用STEP 7组态看门狗中断 356
21.5 硬件中断 356
21.5.1 产生硬件中断 357
21.5.2 硬件中断服务 358
21.5.3 用STEP 7组态硬件中断 358
21.6 DPV1中断 358
21.7 多处理器中断 360
21.8 同步周期中断 361
21.8.1 处理同步周期中断 362
21.8.2 过程映像等时更新 363
21.8.3 用STEP 7组态同步周期中断 363
21.9 处理中断事件 363
21.9.1 禁止与启用中断 364
21.9.2 延时与允许延时的中断 365
21.9.3 读取附加中断信息 365
第22章 重启特性 368
22.1 概要 368
22.1.1 操作模式 368
22.1.2 HOLD模式 369
22.1.3 禁止输出模块 369
22.1.4 组织块重启动 370
22.2 上电 370
22.2.1 STOP模式 370
22.2.2 存储器复位 371
22.2.3 保持性 371
22.2.4 重启参数 372
22.3 重启类型 372
22.3.1 启动模式 372
22.3.2 冷重启 373
22.3.3 温重启 375
22.3.4 热重启 375
22.4 确定模块地址 376
22.5 模块参数化 378
22.5.1 模块参数化概述 378
22.5.2 设置模块参数的系统块 379
22.5.3 传送数据记录的块 381
第23章 出错处理 384
23.1 同步错误 384
23.2 同步错误处理 386
23.2.1 错误过滤器 387
23.2.2 屏蔽同步错误 387
23.2.3 取消屏蔽同步错误 388
23.2.4 读取错误寄存器 388
23.2.5 输入替换值 389
23.3 异步错误 389
23.4 系统诊断 392
23.4.1 诊断事件与诊断缓冲器 392
23.4.2 写诊断缓冲器的用户入口 392
23.4.3 识别诊断中断 393
23.4.4 读系统状态表 395
第六部分 变量处理 398
第24章 数据类型 398
24.1 基本数据类型 398
24.1.1 基本数据类型的声明 398
24.1.2 BOOL、BYTE、WORD、DWORD、CHAR 399
24.1.3 数字表示法 400
24.1.4 时间表示法 402
24.2 复杂数据类型 403
24.2.1 日历DATE_AND_TIME 404
24.2.2 字符串STRING 405
24.2.3 数组ARRAY 406
24.2.4 STRUCT 408
24.3 用户自定义数据类型 409
24.3.1 用户自定义数据类型的递增式编程 410
24.3.2 面向源文件的用户自定义数据类型的编程 410
第25章 间接寻址 412
25.1 指针 412
25.1.1 区指针 412
25.1.2 DB指针 414
25.1.3 ANY指针 414
25.2 STL中间接寻址的类型 415
25.2.1 概述 415
25.2.2 间接寻址 416
25.2.3 存储器间接寻址 416
25.2.4 区内寄存器间接寻址 417
25.2.5 跨区寄存器间接寻址 419
25.2.6 总结 419
25.3 使用地址寄存器 420
25.3.1 加载地址寄存器 420
25.3.2 从地址寄存器传送 420
25.3.3 交换地址寄存器 420
25.3.4 添加到地址寄存器 422
25.4 间接寻址的特殊特征 423
25.4.1 使用地址寄存器AR1 423
25.4.2 使用地址寄存器AR2 425
25.4.3 对于静态局部数据的限制 425
第26章 直接变量存取 427
26.1 加载变量地址 427
26.2 变量的数据存储 429
26.2.1 在全局数据块中存储 429
26.2.2 在实例数据块中存储 429
26.2.3 在暂态局部数据中存储 432
26.3 参数传递时的数据存储 432
26.3.1 功能中的参数存储 432
26.3.2 功能块中的参数存储 434
26.3.3 ANY指针“变量” 435
26.4 消息帧举例的简要描述 437
第七部分 结构化控制语言 446
第27章 SCL编程语言简介 446
27.1 在SIMATIC中集成 446
27.1.1 安装 446
27.1.2 创建项目 446
27.1.3 编辑SCL源文件 446
27.1.4 完成符号表 448
27.1.5 编译SCL程序 448
27.1.6 加载SCL块 448
27.1.7 测试SCL块 449
27.1.8 地址和数据类型 449
27.1.9 数据类型形式 450
27.2 寻址 452
27.2.1 绝对寻址 452
27.2.2 符号寻址 453
27.2.3 SCL中的间接寻址 453
27.3 运算符 454
27.4 表达式 455
27.4.1 算术表达式 455
27.4.2 比较表达式 456
27.4.3 逻辑表达式 457
27.5 赋值 458
27.5.1 基本数据类型的赋值 458
27.5.2 DT和STRING变量的赋值 458
27.5.3 结构的赋值 458
27.5.4 赋值数组 458
第28章 控制语句 460
28.1 IF语句 460
28.2 CASE语句 461
28.3 FOR语句 462
28.4 WHILE语句 463
28.5 REPEAT语句 463
28.6 CONTINUE语句 464
28.7 EXIT语句 464
28.8 RETURN语句 465
28.9 GOTO语句 465
第29章 SCL块 467
29.1 SCL块概述 467
29.2 编程SCL块 467
29.2.1 没有功能值的功能FC 468
29.2.2 具有功能值的功能FC 468
29.2.3 功能块FB 469
29.2.4 暂态局部数据 470
29.2.5 静态局部数据 471
29.2.6 块参数 471
29.2.7 形参 472
29.3 调用SCL块 473
29.3.1 没有功能值的功能FC 474
29.3.2 有功能值的功能FC 474
29.3.3 具有自己数据块的功能块 474
29.3.4 作为局部实例的功能块 475
29.3.5 实参 476
29.4 EN/ENO机理 476
29.4.1 OK变量 477
29.4.2 ENO输出 477
29.4.3 EN输入 478
第30章 SCL功能 479
30.1 定时器功能 479
30.2 计数器功能 480
30.3 数学功能 481
30.4 移位和循环 482
30.5 转换功能 483
30.5.1 隐式转换功能 483
30.5.2 显式转换功能 484
30.6 用SCL编程用户自己的功能 485
30.7 使用STL编程用户自己的功能 488
30.8 SCL举例的简介 489
30.8.1 传送带举例 489
30.8.2 消息帧举例 490
30.8.3 普通举例 490
第31章 IEC功能 492
31.1 转换功能 492
31.2 比较功能 494
31.3 STRING功能 496
31.4 日期/日历功能 497
31.5 数值功能 499
第八部分 附录 502
第32章 S5/S7转换器 502
32.1 概述 502
32.2 准备 503
32.2.1 在目标系统(PLC)上检验可执行度 503
32.2.2 检验程序执行属性 503
32.2.3 检验模块 505
32.2.4 检验地址 506
32.3 转换 507
32.3.1 创建宏 507
32.3.2 准备转换 508
32.3.3 开始转换 509
32.3.4 可转换的功能 509
32.4 后置编辑 511
32.4.1 创建STEP 7项目 511
32.4.2 不可转换的功能 511
34.4.3 地址变化 512
32.4.4 间接寻址 512
32.4.5 访问“太长的”数据块 515
32.4.6 用绝对地址工作 515
32.4.7 参数初始化 515
32.4.8 特殊功能组织块 515
32.4.9 出错处理 517
第33章 程序块库 518
33.1 组织块 518
33.2 系统功能块 520
33.3 IEC功能块 525
33.4 S5-S7转换块 526
33.5 TI-S7转换块 528
33.6 PID控制块 529
33.7 通信模块 530
33.8 其他各种块 530
第34章 STL运算概述 531
34.1 基本功能 531
34.1.1 二进制逻辑运算 531
34.1.2 存储器功能 532
34.1.3 传送功能 532
34.1.4 定时器功能 534
34.1.5 计数器功能 534
34.2 数值功能 534
34.2.1 比较功能 534
34.2.2 数学功能 535
34.2.3 算术功能 535
34.2.4 转换功能 535
34.2.5 移位功能 536
34.2.6 字逻辑运算 536
34.3 程序流控制 537
34.3.1 跳转功能 537
34.3.2 主控继电器 537
34.3.3 块功能 537
34.4 间接寻址 538
第35章 SCL语句和功能概述 540
35.1 运算 540
35.2 控制语句 540
35.3 块调用 540
35.4 SCL标准功能 541
35.4.1 定时器功能 541
35.4.2 计数器功能 541
35.4.3 转换功能 542
35.4.4 数学功能 543
35.4.5 移位和循环 544
缩写词 545