本书

书名:《西门子S7-1200/1500 PLC SCL语言编程 ——从入门到精通》
作者: 北岛李工
出版: 化学工业出版社/2022年1月第1版第1次印刷

基本信息

基本信息

基本信息

本书亮点

  1. 从入门到精通:本书总共15章,由浅入深,从硬件到软件,最后扩展到C#编程,真正做到了从入门到精通。PLC编程与计算机编程最大的不同之处在于:PLC编程必须首先熟悉硬件(比如:CPU模块、各种信号模块和通信模块等)。因此,虽然本书的主旨是介绍西门子SCL语言编程,我仍然在第1章对西门子S7-1200/1500的硬件进行了比较详细的介绍,在我看来这是后续编程的基础。而且在书中的实例讲解章节,我都会首先介绍电气图纸,因为只有明白电气接线,程序讲解才有意义;
  2. 文字配合视频教程:本书集成了84个视频教程。视频教程按照章节编号,打开微信扫一扫章节内部的二维码,就可以直接观看。实例教程的视频讲解一般包括三个:电气图纸讲解、程序讲解和实际操作演示。视频教程也编写在书的目录中,比如下图的红色部分就是视频目录(部分): 基本信息
  3. 全彩印刷:本书采用全彩色印刷,内部图片清晰漂亮,很好的视觉体验。比如下面是书中电气图纸的图片: 电气图纸示例
  4. 案例丰富,边学边用:本书的第9章(SCL基本编程实例)、第12章(SCL编程进阶实例与技巧)、第13章(SCL工艺功能应用)、第14章(SCL通信功能及应用)都有大量实例。每一个实例基本都包括三个视频讲解:电气图纸、程序讲解及实际效果演示。
  5. 高级篇扩展到C#编程:本书的第15章简单介绍了C#编程语言,并提供C#TCP/UDP编程实例,讲解如何通过C#编写程序与第14章介绍的函数块进行通信。图片如下: C#编程
  6. 提供在线反馈交流:你可以登录官网为本书设置的留言反馈网址留言文章,在文章后面进行留言,我会及时查看并回答你的问题。同时我创建了一个SCL编程读书群,如果你购买了这本书,可以加我微信"jack_is_professional",我拉你入群(加群务必标注SCL否则不会通过)。

本书目录

第1篇 入门篇

第1章 S7-1200/1500硬件介绍

1.1、西门子SIMATIC S7-1200 PLC概述

1.2、S7-1200的CPU模块

1.2.1、CPU模块概述

1.2.1.1、标准型CPU模块

1.2.1.2、故障安全CPU模块

【0101】视频-CPU1214FC介绍

1.2.1.3、SIPLUS extreme CPU模块

1.2.2、CPU 1214C

1.3、S7-1200的数字量模块

1.3.1、数字量输入模块

1.3.2、数字量输出模块

1.3.3、故障安全信号模块

1.4、S7-1200的模拟量模块

1.4.1、模拟量输入模块

1.4.2、模拟量输出模块

1.5、西门子SIMATIC S7-1500 PLC概述

1.6、S7-1500的CPU模块

1.6.1、CPU模块概述

1.6.1.1、紧凑型CPU

1.6.1.2、标准型CPU

1.6.1.3、工艺型CPU

1.6.1.4、故障安全型CPU

1.6.1.5、高防护等级CPU

1.6.1.6、ET200SP分布式CPU

1.6.1.7、ET 200SP开放式控制器

1.6.1.8、软件控制器

1.6.2、CPU1515-2PN

1.7、S7-1500/ET200MP的数字量模块

1.7.1、数字量输入模块

1.7.2、数字量输出模块

1.8、S7-1500/ET200MP的模拟量模块

1.8.1、模拟量输入模块

1.8.2、模拟量输出模块

1.9、S7-1500/ET200MP的组件

1.9.1、导轨

1.9.2、U型连接器

1.9.3、前连接器

1.9.4、电源端子

第2章 PLC的工作原理与存储方式

2.1 PLC的工作原理

2.2 CPU的存储器

2.2.1装载存储器

2.2.2 工作存储器

2.2.3保持存储器

2.2.4系统存储器

2.2.4.1过程输入映像区

2.2.4.2过程输出映像区

2.2.4.3位存储区

2.2.4.4定时器存储区

2.2.4.5计数器存储区

2.2.4.6临时变量存储区

2.3 SIMATIC存储卡

2.3.1、SIMATIC存储卡简介

2.3.2、SIMATIC存储卡的安装

2.3.3、SIMATIC存储卡的工作模式

2.3.4、使用SIMATIC存储卡更新CPU固件

2.4、在线查看存储器的使用情况

【0201】视频-SIMATIC存储卡介绍

【0202】视频-在线查看存储器使用情况

第3章TIA博途软件开发环境

3.1 TIA博途平台简介

3.2程序编辑器介绍

3.3 SCL编辑器常规设置

3.3.1高亮关键字

3.3.2新添加块的设置

3.3.3代码格式设置

3.4 创建SCL函数块或函数

3.5 SCL代码编辑器

3.6 SCL编辑器使用技巧

3.6.1、使用区间指令把代码分区

3.6.2、使用书签快速定位代码

第4章 TIA博途软件应用实例

4.1、创建示例程序

【0401】视频-创建示例程序

4.2、项目的下载与在线监控

【0402】视频-项目的编译、下载与在线监控

4.3、程序的比较

【0403】视频-程序在线与离线比较

4.4、项目的归档与恢复

【0404】视频-项目的归档与恢复

4.5、使用项目参考功能

【0405】视频-项目参考功能

第5章 S7-1200/1500的软件架构与编程指导

5.1、操作系统与用户程序

5.2、操作系统的接口——组织块

5.2.1、组织块的分类

5.2.2、程序循环组织块;

5.2.3、启动组织块

5.2.4、延时中断组织块

5.2.5、循环中断组织块

5.2.6、硬件中断组织块

5.2.7、时间错误中断组织块

5.2.8、诊断错误中断组织块

5.2.9、插拔中断组织块

5.2.10、机架或子站故障组织块

5.2.11、日期时间组织块

5.2.12、状态中断组织块

5.2.13、更新中断组织块

5.2.14、配置中断组织块

5.2.15、运动控制插补器组织块

5.2.16、运动控制伺服组织块

5.2.17、运动控制伺服前调组织块

5.2.18、运动控制伺服后调组织块

5.3、用户程序的基本单位——程序组织单元

5.3.1、函数

5.3.2、函数块

5.3.3、数据块

​ 5.3.3.1全局数据块

​ 5.3.3.2背景数据块

​ 5.3.3.3多重背景数据块

5.3.3.4优化的数据块

5.4、编程指导

5.4.1、模块化程序设计

5.4.2、程序组织单元的命名规则

5.4.3、代码注释的推荐风格

第6章 SCL语言介绍

6.1 SCL语言与PLC国际编程标准

6.1.1 SCL语言简介

6.1.2 PLC国际编程标准 IEC61131-3简介

6.2 SCL语言的特点和优势

6.3 先睹为快:SCL编程实现按钮控制指示灯

6.3.1、硬件/软件环境及电气图纸

【0601】视频——例程的EPLAN电气图纸介绍

6.3.2、程序代码示例

【0602】视频——示例程序代码介绍

【0603】视频——实例效果演示

第7章 SCL编程的基本概念

7.1 基本数据类型

7.1.1、布尔类型

7.1.2、整数

7.1.2.1、短整数(SInt)

7.1.2.2、整数(Int)

7.1.2.3、双整数(DInt)

7.1.2.4、长整数(LInt)

7.1.2.5、无符号短整数(USInt)

7.1.2.6、无符号整数(UInt)

7.1.2.7、无符号双整数(UDInt)

7.1.2.8、无符号长整数(ULInt)

7.1.3、实数

7.1.3.1、实数(Real)

7.1.3.2、长实数(LReal)

7.1.4、定时器时间值

7.1.4.1、S5Time

7.1.4.2、时间(Time)

7.1.4.3、长时间(LTime)

7.1.5、 日期时间

7.1.5.1、日期(Date)

7.1.5.2、时间日期(TOD,TIME_OF_DAY)

7.1.5.3、长时间日期(LTOD,LTIME_OF_DAY)

7.1.5.4、日期时间(DT,DATE_AND_TIME)

7.1.5.5、日期长时间(LDT,DATE_AND_LTIME)

7.1.5.6、长日期时间(DTL,DATE_AND_TIME_LONG)

7.1.6、字符与字符串

7.1.6.1、 字符(Char)

7.1.6.2、 宽字符(WChar)

7.1.6.3 、字符串(String)

7.1.6.4、 宽字符串(WString)

7.1.7、位字符串

7.1.7.1、字节(Byte)

7.1.7.2、字(Word)

7.1.7.3、双字(DWord)

7.1.7.4、长双字(LWord)

7.2、变量与常量

7.2.1、什么是变量?

7.2.2、变量的命名规则

7.2.3、变量的声明

7.2.4 、预定义变量-ENO

7.2.5、什么是常量?

7.2.6 、常量的特性及声明

7.3、表达式

7.3.1、算术表达式

7.3.2、关系表达式

7.3.3、逻辑表达式

7.4、运算符及其优先级

7.5、语句

7.5.1、什么是语句?

7.5.2、赋值语句

7.5.3、条件语句(IF)

7.5.3.1、简单IF语句

7.5.3.2、IF...ELSE语句

7.5.3.3、IF...ELSIF...ELSE语句

7.5.3.4、IF语句的嵌套

7.5.4、选择语句(CASE)

7.5.5、循环语句

7.5.5.1、FOR语句

7.5.5.2、WHILE语句

7.5.5.3、REPEAT语句

7.5.5.4、循环的退出与继续

7.5.5.5、循环的嵌套

7.5.6、跳转语句

7.6、代码的注释

第8章 SCL基本指令及应用

8.1、沿信号检测指令

8.1.1、上升沿检测指令

8.1.2、下降沿检测指令

【0801】视频——上升沿信号检测

8.2、定时器指令

8.2.1、脉冲定时器(TP)指令

【0802】视频——脉冲定时器示例

8.2.2、延时接通定时器(TON)指令

【0803】视频——延时接通定时器示例

8.2.3、延时断开定时器(TOF)指令

【0804】视频——延时断开定时器示例

8.2.4、保持型延时接通定时器(TONR)指令

【0805】视频——保持型延时接通定时器示例

8.2.5、复位定时器指令

8.2.6、设置预设值指令

8.3、计数器指令

8.3.1、加计数器指令

8.3.2、减计数器指令

8.3.3、加/减计数器指令

8.4、数学指令.

8.4.1、正弦指令

8.4.2、余弦指令

8.4.3、平方指令

8.4.4、最大值指令

8.4.5、最小值指令

8.5、读写存储器指令

8.5.1、PEEK指令

8.5.2、POKE指令

8.6、移动指令

8.6.1、MOVE_BLK

8.6.2、UMOVE_BLK

8.6.3、FILL_BLK

8.6.4、UFILL_BLK

8.7、转换指令

8.7.1、类型转换指令

8.7.2、取整指令

8.7.3、归一化指令——NORM_X

8.7.4、比例缩放指令——SCALE_X

8.8、字逻辑指令

8.8.1、DECO指令

8.8.2、ENCO指令

8.9、移位指令

8.9.1、右移(SHR)

8.9.2、左移(SHL)

8.9.3、循环右移(ROR)

8.9.4、循环左移(ROL)

第9章 SCL基本编程实例

9.1、电机启停控制

【0901】视频-电机启停控制-电气图纸讲解

【0902】视频-电机启停控制-程序讲解

【0903】视频-电机启停控制-实际演示

9.2、用不同的频率控制蜂鸣器

【0904】视频-蜂鸣器控制-电气图纸讲解

【0905】视频-蜂鸣器控制-程序讲解

【0906】视频-蜂鸣器控制-实际演示

9.3、空压机的延时关闭

【0907】视频-空压机延时关闭-电气图纸讲解

【0908】视频-空压机延时关闭-程序讲解

【0909】视频-空压机延时关闭-实际演示

9.4、移动单元的位置计算

【0910】视频-移动单元位置计算-电气图纸讲解

【0911】视频-移动单元位置计算-程序讲解

【0912】视频-移动单元位置计算-实际演示

9.5、获取模拟量温湿度传感器的值

【0913】视频-模拟量温湿度传感器-电气图纸讲解

【0914】视频-模拟量温湿度传感器-程序讲解

【0915】视频-模拟量温湿度传感器-实际演示

9.6、 BCD码转换成整数

【0916】视频-BCD码转换成整数

9.7、位字符串的提取与组合

【0917】视频-位字符串的提取与组合

第2篇 进阶篇

第10章 S7-1200/1500复杂数据类型

10.1、数组

10.1.1、什么是数组?

10.1.2、数组的声明

10.1.3、数组元素的引用

10.2、指针

10.2.1、指针与指针变量

10.2.2、Pointer

10.2.3、Any

10.2.4、Variant

10.3、 结构体

10.3.1、结构体及其声明

10.3.2、结构体变量的引用

10.4、用户自定义类型

10.4.1、基本概念

10.4.2、变量的声明及引用

10.5、系统数据类型

第11章 SCL扩展指令

11.1、日期时间指令

11.1.1、时间加减指令

11.1.2、时钟读写指令

【1101】视频-读写CPU的时钟

11.2、字符串操作指令

11.2.1、获取字符串当前长度

11.2.2、获取字符串最大长度

11.2.3、读取字符串左侧字符

11.2.4、读取字符串右侧字符

11.2.5、读取字符串中间字符

11.2.6、插入字符串

11.2.7、替换字符串

11.4、中断指令

11.4.1、硬件中断的绑定与解绑

11.4.2、循环中断的设置与查询

11.4.3、日期时间中断的设置与启用

11.4.4、延时中断的启用与取消

11.5、配方管理

11.5.1、配方概述

11.5.2、配方相关数据块

11.5.3、配方导出指令

【1102】视频-如何导出配方数据

11.5.4、配方导入指令

【1103】视频-如何导入配方数据

11.5.5、读配方指令

【1104】-读取配方数据

11.5.6、写配方指令

【1105】-写入配方数据

11.6、诊断指令

11.6.1、读取IO设备的名称

【1106】-读取IO设备名称

11.6.2、读取IO设备的信息

【1107】-获取IO设备信息(IP/MAC地址)

11.6.3、读取IO设备的状态

【1108】-获取IO设备的状态信息

11.6.4、读取标识及维护数据

【1109】-读取设备标识及维护信息(CPU序列号)

第12章 SCL编程进阶实例与技巧

12.1、通用函数库(LGF)

12.1.1、基本介绍

12.1.2、怎样下载与安装

【1201】视频-LGF函数库的下载与安装

12.1.3、LGF函数介绍——脉冲继电器

【1202】视频-脉冲继电器使用

12.1.4、LGF函数介绍——频率发生器

【1203】视频-频率发生器使用

12.1.5、LGF函数介绍——环型存储区

【1204】视频-环型存储区使用

12.2、自己编程实现沿信号检测

12.3、自己编程实现双稳态触发器

12.4、自己编程实现减计数器

12.5、自己编程实现定时采样

12.6、自己编程实现数据块复制

12.7、自己编程计算设备运行时间

12.8、SCL间接寻址

12.8.1、变量的覆盖访问(AT)

12.8.2、变量的片段访问(SLICE)

12.8.3、PEEK/POKE

12.9、 SCL源代码操作

12.9.1、导出源代码

12.9.2、导入源代码

12.10、SCL程序加密保护

12.11、创建自己的全局库

【1205】-创建自己的全局库

第13章SCL工艺功能应用

13.1高数计数器

13.1.1、什么是高速计数器?

13.1.2、S7-1200的高速计数器

13.1.3、S7-1200的高速计数器指令

13.1.3.1、CTRL_HSC指令

13.1.3.2、CTRL_HSC_EXT指令

13.1.4、S7-1500的高速计数器模块

13.1.4.1、TM Count 2x24V(ET200MP)

13.1.4.2、工艺对象

13.1.5、实例1:CPU1214FC的获取编码器的数据

【1301】视频- 编码器例程电气图纸讲解

【1302】视频-编码器例程程序讲解

13.1.6、实例2:高速计数器当前值的断电保存

【1303】视频-保存高速计数器当前值程序讲解

13.2 脉宽调制(PWM)

13.2.1、什么是PWM?

13.2.2、S7-1200的PWM资源

13.2.3、S7-1200 PWM的组态与控制

13.2.4、S7-1500的PWM资源

13.2.5、S7-1500 PWM的组态与控制

13.2.5.1、S7-1500 PWM的组态

13.2.5.2、S7-1500 PWM的控制

13.2.6、SCL实例:CPU1214FC使用PWM实现电机调速

【1304】视频-PWM控制电机调速-接线图讲解

【1305】视频-PWM控制电机调速-组态及程序讲解

【1306】视频-PWM控制电机调速-实际演示

13.3 PID控制

13.3.1、开环系统与闭环系统

13.3.2、PID控制器

13.3.3、S7-1200/1500 PID指令

13.3.4、PID工艺对象

13.3.5、实例:CPU1214FC使用PID控制水罐的温度

【1307】视频-PID指令及其组态

13.4、运动控制

13.4.1、什么是运动控制

13.4.1.1、基于PROFIdrive通信的运动控制

13.4.1.2、基于PTO脉冲的运动控制

13.4.1.3、基于模拟量信号的运动控制

13.4.2、S7-1200的PTO资源

13.4.3、S7-1500/ET200MP的TM PTO模块

13.4.4、S7-1200/1500的运动轴与工艺对象

【1308】-运动轴工艺对象介绍

13.4.5、S7-1200/1500的运动控制指令

13.4.5.1、MC_Power指令

13.4.5.2、MC_Home指令

13.4.5.3、MC_MoveAbsolute指令

13.4.5.4、MC_MoveRelative指令

13.4.5.5、MC_MoveVelocity指令

13.4.5.6、MC_MoveJog指令

13.4.5.7、MC_Halt指令

13.4.5.8、MC_Reset指令

13.4.6、实例:CPU1214FC控制步进电机往复运动

【1309】视频-步进电机运动控制-电气接线原理图讲解

【1310】视频-步进电机运动控制-工艺对象讲解

【1311】视频-步进电机运动控制-回原点讲解

【1312】视频-步进电机运动控制-程序讲解

【1313】视频-步进电机运动控制-实例演示

第14章 SCL通信功能及应用

14.1、串行通信

14.1.1、什么是串行通信?

14.1.2、S7-1200的串行通信模块

14.1.2.1、CM1241 RS232模块

【1401】视频-CM1241 RS232模块外观介绍

14.1.2.2、CM1241 RS422/485模块

14.1.2.3、CB1241 RS485通信板

【1402】视频-CB1241 RS485模块外观及安装介绍

14.1.3、S7-1500的串行通信模块

14.1.3.1、CM PtP RS232 BA模块

14.1.3.2、CM PtP RS422/485 BA模块

14.1.4、点对点通信指令

14.1.4.1、S7-1200点对点通信专用指令简介

14.1.4.2、S7-1200/1500/ET200SP/ET200MP点对点通信通用指令

14.1.4.2.1、Port_Config

14.1.4.2.2、Send_Config

14.1.4.2.3、Receive_Config

14.1.4.2.4、Send_P2P

14.1.4.2.5、Receive_P2P

14.1.4.2.5、Receive_Reset

【1403】视频-串口指令SEND_PTP/RCV_PTP收发演示

14.1.4.3、更新CM1241 RS232固件

【1404】视频-更新CM1241 RS232固件

14.1.5、 SCL实例:CPU1214C与串口助手通信

【1405】视频-CM1241使用通用串行指令与PC串口助手通信

14.2、Modbus-RTU通信

14.2.1、Modbus简介

14.2.2、S7-1200/1500的Modbus-RTU指令

14.2.2.1、Modbus_Comm_Load指令

14.2.2.2、Modbus_Master指令

14.2.2.3、Modbus_Slave指令

14.2.3、Modbus协议的数据模型和地址模型

14.2.3.1、Modbus协议的数据模型

14.2.3.2、Modbus协议的地址模型

14.2.4、SCL实例:CPU1214FC通过Modbus-RTU协议读取温度传感器数值

【1406】-CB1241 RS485与温度传感器的接线

【1407】-CB1241 RS485读取温度传感器数值程序及演示

  1. 3、以太网通信

14.3.1、S7-1200/1500的以太网接口及连接资源

14.3.1.1、S7-1200的以太网接口及连接资源

14.3.1.2、S7-1500的以太网接口及连接资源

14.3.2、S7通信

14.3.2.1、S7通信协议简介

14.3.2.2、S7单边通信硬件组态(S7-1200为例)

【1408】-S7单边通信硬件组态视频演示

14.3.2.3、S7-1200/1500的S7单边通信指令

14.3.2.4、SCL实例:CPU1214FC与CPU ST20的S7通信

【1409】-CPU 1214FC与CPU ST20的S7通信演示

14.3.3、TCP通信

14.3.3.1、TCP协议简介

14.3.3.2、S7-1200/1500的TCP通信指令

14.3.3.2.1、建立连接指令-TCON

14.3.3.2.2、接收数据指令-TRCV

14.3.3.2.3、发送数据指令-TSEND

14.3.3.2.4、断开连接指令-TDISCON

14.3.3.3、SCL实例:创建一个TCP通信函数块块ComTCP

【1410】-创建一个TCP通信函数块块ComTCP

14.3.4、ModbusTCP通信

14.3.4.1、ModbusTCP协议简介

14.3.4.2、S7-1200/1500的ModbusTCP通信指令

14.3.4.2.1、MB_CLIENT指令

14.3.4.2.2、MB_SERVER指令

14.3.4.3、实例:CPU 1214FC与CPU ST20的Modbus-TCP通信

14.3.4.3.1、CPU ST20服务器端配置与编程

14.3.4.3.2、CPU 1214FC客户端配置与编程

【1411】Modbus-TCP服务器和客户端程序介绍

【1412】Modbus-TCP通信实例演示

14.3.5、UDP通信

14.3.5.1、UDP协议简介

14.3.5.2、S7-1200/1500的UDP通信指令

14.3.5.2.1、TUSEND指令

14.3.5.2.2、TURCV指令

14.3.5.3、SCL实例:创建一个UDP通信块comUDP

【1413】-创建一个UDP通信的函数块comUDP

14.4、PROFINET通信

14.4.1、PROFINET协议简介

14.4.2、PROFINET IO控制器与IO设备

14.4.3、实例:构建一个PROFINET IO系统

【1414】-构建一个PRFINET IO系统

14.4.4、智能设备(I-Device)

14.4.5、实例:CPU ST20作为CPU1214FC的智能设备

14.4.5.1、智能设备CPU ST20的组态

14.4.5.2、PROFINET IO控制器CPU1214FC的组态

14.5、Web服务器应用

14.5.1、Web服务器功能介绍

14.5.2、标准Web服务器

【1415】-Web服务器功能演示

第3篇 高级篇

第15章 高级语言C#与SCL的程序应用实例

15.1 C#语言简介

15.2 使用C#创建一个TCP服务器程序myTCPserver

15.3、使用myTCPServer与函数块FB5005_ComTCP通信

【1501】-myTCPServer与函数块FB5005_ComTCP通信

15.4、使用C#创建一个UDP通信程序myUDPTalker

15.5、使用myUDPTalker与函数块FB5006_ComUDP通信

【1502】-myUDPTalker与函数块FB5006_ComUDP通信

实拍展示

实拍展示

购买链接

用微信扫描下面的小程序二维码购买本书

实拍展示

京东、天猫、淘宝、当当等各大网站均可购买本书,你可以根据个人习惯自行搜索购买。

留言反馈

点击这里对本书的内容进行留言反馈,我会及时回答你的问题,你的宝贵意见也能使本书再版时变得更好,非常感谢!!

如果你已经购买本书,请加我个人微信"jack_is_professional",我拉你进读书群。(申请好友务必标明"SCL",否则不会通过)

致谢

本书在编写过程中得到了我家人的大力支持,特别是岳母、母亲和我妻子,她们分担了很多的家务,我才能有大量的时间静心写作。

感谢化学工业出版社的领导及参与本书编辑出版的工作人员,特别感谢宋辉女士、毛亚囡女士对本书出版所做的一切。

勘误

虽然在编写和校稿过程中我们都尽了最大的努力,但书中仍然存在一些错误和疏漏的地方。因此我使用腾讯在线文档将这些错误及疏漏记录下来,以便能及时纠正。该文档不定时更新,请点击下面的链接查看。

【腾讯文档】西门子S7-1200-1500SCL书籍勘误