本书通过彩色图解+视频讲解的方式,以西门子博途编程软件(TIA Portal)V16为主要工具,详细介绍了PLC结构化文本(ST)编程的相关知识。全书通过大量的实例由浅入深地介绍了ST语言的逻辑运算、比较和移位运算、程序控制语句、数学运算以及综合应用和PLC的通信。在编写实例时,通过函数和功能块的调用详细阐述了PLC基于ST语言的编程技术及结构化编程思想。同时,以三菱编程软件GX Works2和施耐德编程软件SoMachine V4.3作为辅助工具,重点介绍了ST语言的跨平台移植以及不同PLC之间ST语言的细微差别。
书中的实例均以西门子TIA Portal V16呈现,移植到三菱和施耐德中请参考视频讲解及相关程序。每个实例均通过了仿真和上机验证,且附赠程序源文件,方便读者实践。
本书内容丰富实用、讲解循序渐进,非常适合PLC技术人员等学习使用,也可用作职业院校及培训学校相关专业的教材及参考书。
第1章 ST语言基础
1.1 IEC 61131标准和PLCopen组织 1
1.1.1 IEC 61131标准 1
1.1.2 PLCopen组织 2
1.2 ST语言的特点 3
1.2.1 良好的跨平台移植性 3
1.2.2 方便的数学计算 3
1.2.3 轻松实现复杂算法 4
1.2.4 易于数据管理 4
1.3 ST语言的基本规则 5
1.3.1 标识符 5
1.3.2 空格和注释 5
1.3.3 关键字 5
1.4 数据类型 6
1.4.1 基本数据类型 6
1.4.2 扩展数据类型 11
1.4.3 复杂数据类型 11
1.4.4 参数类型 13
1.4.5 数据类型的转换 14
1.5 常数 16
1.5.1 数字常数 16
1.5.2 字符或字符串常数 17
1.5.3 时间常数 17
1.6 变量 18
1.6.1 从物理地址到变量 18
1.6.2 变量的属性 18
1.6.3 变量的定义 19
1.6.4 变量的前缀 22
1.7 程序组织单元 22
1.7.1 软件模型 22
1.7.2 函数和功能块中的变量 23
1.7.3 函数 25
1.7.4 功能块 26
1.7.5 函数和功能块的区别 27
第2章 逻辑控制与IF语句
2.1 ST语言的编程软件 28
2.1.1 西门子博途编程软件 28
2.1.2 三菱GX Works2编程软件 32
2.1.3 施耐德SoMachine编程软件 33
2.2 赋值与逻辑运算 35
2.2.1 赋值运算和逻辑表达式 35
2.2.2 [实例1] 电动机的自锁控制 37
2.2.3 [实例2] 点动与自锁控制 43
2.2.4 [实例3] 字中取位 48
2.3 IF选择语句 52
2.3.1 IF语句 52
2.3.2 [实例4] 使用IF语句实现自锁控制 54
2.3.3 [实例5] 使用IF语句实现点动与自锁控制 56
2.3.4 [实例6] 位组合成字 57
2.3.5 [实例7] 传送带传送方向指示 61
2.4 边沿触发 64
2.4.1 边沿触发指令 64
2.4.2 [实例8] 电动机的正反转控制 66
2.4.3 [实例9] 单按钮启停控制程序 69
2.5 定时器 71
2.5.1 定时器指令 71
2.5.2 [实例10] 任意周期脉冲输出 74
2.5.3 [实例11] 停机时风机对主电机延时冷却 75
2.5.4 [实例12] 电动机的顺序启动控制 78
2.5.5 [实例13] 电动机的Y-△降压启动控制 83
2.6 计数器 88
2.6.1 计数器指令 88
2.6.2 [实例14] 单按钮控制多台电动机的启停 90
2.6.3 [实例15] 停车场空闲车位指示 93
第3章 比较运算和移位运算
3.1 比较运算 96
3.1.1 比较运算符 96
3.1.2 [实例16] 传送带工件计数 96
3.1.3 [实例17] 密码锁 100
3.2 移位运算 104
3.2.1 移位运算函数 104
3.2.2 [实例18] 多台电动机的顺序启动控制 107
3.2.3 [实例19] 霓虹灯的控制 110
第4章 程序控制
4.1 CASE选择语句 114
4.1.1 CASE语句 114
4.1.2 [实例20] 温度测量与指示 115
4.1.3 [实例21] 运料小车控制 118
4.1.4 [实例22] 交通信号灯的控制 123
4.1.5 [实例23] 工件搬运 129
4.2 FOR循环语句 134
4.2.1 FOR语句 134
4.2.2 [实例24] 使用FOR循环初始化数组 135
4.2.3 [实例25] 使用FOR循环实现字中取位 136
4.2.4 [实例26] 使用FOR循环实现位组合成字 138
4.3 WHILE循环语句 140
4.3.1 WHILE语句 140
4.3.2 [实例27] 使用WHILE循环初始化数组 140
4.3.3 [实例28] 10台电动机的启停控制 142
4.4 REPEAT循环语句 144
4.4.1 REPEAT语句 144
4.4.2 [实例29] 使用REPEAT循环初始化数组 145
4.4.3 [实例30] 使用REPEAT语句实现多台电动机的启停 146
4.5 其他语句 150
4.5.1 退出循环语句EXIT 150
4.5.2 中断循环语句CONTINUE 150
4.5.3 RETURN语句 151
4.5.4 [实例31] 使用循环语句实现产品分类 152
第5章 数学运算
5.1 算术运算 157
5.1.1 算术运算指令 157
5.1.2 [实例32] 滑动平均值数字滤波 159
5.1.3 [实例33] 中值数字滤波 162
5.2 数学函数运算 164
5.2.1 数学函数 164
5.2.2 [实例34] 限幅数字滤波 168
5.2.3 [实例35] 机械臂的定位控制 171
第6章 综合实例
6.1 运算的优先级 178
6.1.1 优先级 178
6.1.2 优先级的应用 179
6.2 日期和时间的应用 180
6.2.1 [实例36] 带故障检测的电动机控制 180
6.2.2 [实例37] 计算设备运行时间 184
6.2.3 [实例38] 选取累积时间短的水泵运行 190
6.2.4 [实例39] 响铃控制 196
6.3 数据统计 198
6.3.1 [实例40] 统计数组元素正负值的个数 198
6.3.2 [实例41] 统计数据块中位为1的个数 200
6.3.3 [实例42] 使用Variant指针计算面积 205
6.3.4 [实例43] 使用可变长度数组计算最值 209
6.4 数据管理 218
6.4.1 [实例44] 配方管理 218
6.4.2 [实例45] 报警管理 224
6.5 运动控制与PID 229
6.5.1 [实例46] 伺服定位控制 229
6.5.2 [实例47] 温度的PID控制 235
第7章 PLC的通信
7.1 网络通信基础 244
7.2 西门子PLC的通信 245
7.2.1 以太网通信 245
7.2.2 [实例48] 两台S7-1200PLC的以太网通信 247
7.2.3 [实例49] 两台S7-1200PLC基于以太网的S7通信 258
7.2.4 [实例50] 两台S7-1200PLC的Modbus TCP通信 265
7.3 三菱PLC的通信 277
7.3.1 [实例51] 两台FXCPU的N∶N链接通信 277
7.3.2 [实例52] 两台FXCPU的CC-Link通信 285
7.4 PLC与变频器的通信 295
7.4.1 串行通信概述 295
7.4.2 [实例53] 西门子S7-1200PLC与变频器的USS通信 296
7.4.3 [实例54] 三菱PLC与变频器的通信 307
参考文献 316