西门子S7-300 PLC综合教程
第一部分:基础知识篇
在开始学习编程之前,我们必须先了解S7-300的基本构成和概念,这就像学开车前要先认识汽车部件一样。

什么是PLC?
- 全称: Programmable Logic Controller,可编程逻辑控制器。
- 作用: 一种专为工业环境设计的数字运算操作电子系统,它采用一种可编程的存储器,在其内部存储执行逻辑运算、顺序控制、定时、计数和算术运算等操作的指令,并通过数字式或模拟式的输入/输出,控制各种类型的机械设备或生产过程。
- 简单理解: 工业现场的“大脑”,通过接收传感器信号(输入),根据预设的程序进行逻辑判断,然后控制电机、电磁阀、指示灯等设备(输出)。
S7-300 PLC的硬件构成
S7-300采用模块化设计,非常灵活,一个基本的系统由以下几个核心部分组成:
| 模块类型 | 中文名称 | 功能描述 | 示例型号 |
|---|---|---|---|
| RACK | 机架 | 用于安装所有模块,提供模块间通信的总线连接。 | UR1, UR2, ER1 (通用机架), CR2 (导轨式机架) |
| PS | 电源模块 | 为整个PLC系统提供24V DC电源。 | PS 307 ( 5A, 10A) |
| CPU | 中央处理器模块 | PLC的核心,负责运行程序、处理数据、管理通信。 | CPU 313C-2 PtP, CPU 315-2 DP, CPU 317-2 DP |
| IM | 接口模块 | 用于连接多个机架,扩展系统。 | IM360 (主接口), IM361 (扩展接口) |
| SM | 信号模块 | I/O模块,负责连接现场设备。 | SM 321 (数字量输入), SM 322 (数字量输出), SM 331 (模拟量输入), SM 332 (模拟量输出) |
| FM | 功能模块 | 用于执行高速、复杂的任务,如计数、定位、闭环控制。 | FM 353 (步进电机定位), FM 354 (伺服电机定位) |
| CP | 通信处理器 | 负责PLC与PLC、PLC与上位机(如HMI、SCADA)、PLC与其他智能设备之间的通信。 | CP 343-1 (以太网), CP 343-5 (PROFIBUS) |
一个典型的S7-300系统配置示例:
+---------------------------------+
| 电源模块 (PS 307) |
+---------------------------------+
| CPU 315-2 DP |
+---------------------------------+
| (如果模块多) 接口模块 (IM360/361) |
+---------------------------------+
| 数字量输入 (SM 321) |
+---------------------------------+
| 数字量输出 (SM 322) |
+---------------------------------+
| 模拟量输入 (SM 331) |
+---------------------------------+
| 模拟量输出 (SM 332) |
+---------------------------------+
S7-300的软件环境
- STEP 7: 这是西门子PLC的官方编程软件,用于所有S7-300/400系列。
- 主要功能: 硬件组态、网络配置、编写程序(梯形图LAD、语句表STL、功能块图FBD)、调试、监控、归档等。
- 版本: 常见的版本有 STEP 7 V5.5 SPx,以及与博途融合的STEP 7 Basic (针对S7-1200/1500)。
- S7-PLCSIM: S7-300的软件仿真器,它可以在没有真实硬件的情况下,在计算机上模拟PLC的运行,用于程序的初步测试和调试,非常方便。
第二部分:软件入门与编程篇
安装与新建项目
- 安装软件: 安装 STEP 7 V5.5 和 S7-PLCSIM。
- 新建项目:
- 打开 STEP 7,选择
File->New...。 - 给项目命名,
MyS7300_Project。 - 在项目下,右键点击
Blocks,选择Insert New Object->S7 Program,这会自动创建一个包含OB1,SDB1等的标准程序块。
- 打开 STEP 7,选择
硬件组态
硬件组态是告诉软件你的PLC具体型号和配置了哪些模块。
- 在项目树中,双击
Hardware图标。 - 在右侧的硬件目录中,依次展开
SIMATIC 300->RACK-300,将Rail(导轨) 拖拽到左侧的窗口中。 - 展开
PS-300,选择你的电源模块型号,拖拽到导轨的插槽1。 - 展开
CPU-300,选择你的CPU型号,拖拽到插槽2。 - 根据你的实际配置,依次添加IM、SM、FM、CP等模块到对应的插槽。
- 组态完成后,点击
Save and Compile按钮,编译无误后关闭硬件组态窗口。
三种基本编程语言
S7-300支持三种标准的编程语言,你可以根据习惯选择或组合使用。

| 语言类型 | 中文名称 | 特点 | 适用场景 |
|---|---|---|---|
| LAD | 梯形图 | 类似电气继电器控制电路图,直观易懂,电气工程师上手快。 | 逻辑控制、联锁保护。 |
| STL | 语句表 | 类似计算机汇编语言,是CPU直接执行的指令,执行效率高,功能强大。 | 复杂数学运算、程序优化、底层控制。 |
| FBD | 功能块图 | 使用逻辑门(与、或、非)等图形符号连接,适合描述信号流。 | 过程控制、数据处理。 |
我们以最常用的LAD(梯形图)为例进行讲解。
LAD编程基础
一个梯形图程序由网络组成,每个网络完成一个特定的逻辑功能。
- 电源轨: 梯形图两侧的垂直线,左侧为“左电源轨”或“L+”,右侧为“右电源轨”或“地”,电流从左流向右。
- 触点: 代表输入条件,如传感器、按钮的状态。
- 常开触点: 在其线圈得电时闭合,符号:
- 常闭触点: 在其线圈得电时断开,符号:
- 线圈: 代表输出结果,如控制继电器、指示灯、电机等。
- 输出线圈: 当左侧逻辑为真时,线圈得电,符号:
- 置位/复位线圈: 用于将某一位设置为1或0,并保持状态,符号:
-(S)-/-(R)-
一个简单的“启动-停止”电路示例:
- 要求: 按下启动按钮,电机启动(指示灯亮);按下停止按钮,电机停止(指示灯灭),启动信号自锁。
- I/O分配:
- 输入 I0.0: 启动按钮 (常开)
- 输入 I0.1: 停止按钮 (常闭)
- 输出 Q4.0: 电机/指示灯
梯形图程序:

Network 1: 电机启停控制
| | |
| | |
L+----| |----( )----| |----M
| | |
I0.0 Q4.0 I0.1
启动 自锁 停止
程序逻辑解释:
- 当按下启动按钮
I0.0时,电流流过,使输出线圈Q4.0得电。 Q4.0得电后,其常开触点Q4.0(在自锁回路中) 闭合。- 即使松开启动按钮
I0.0,电流也可以通过自锁回路Q4.0继续为Q4.0供电,保持电机运行。 - 当按下停止按钮
I0.1(常闭触点) 时,电路被断开,Q4.0失电,电机停止,自锁回路也断开,松开停止按钮后,电机也不会再启动。
第三部分:核心指令与程序结构篇
常用基本指令
- 位逻辑指令:
A(与),O(或),NOT(取反),X(异或)。 - 定时器指令: S7-300提供多种定时器。
- SD型: 接通延时定时器。
SD T1, 5s(当输入为1时,开始5秒计时,时间到输出为1)。 - SF型: 断开延时定时器。
SF T1, 5s(当输入从1变0时,开始5秒计时,时间到输出为1)。 - SP型: 脉冲定时器。
SP T1, 5s(当输入为1时,立即输出一个5秒的脉冲)。
- SD型: 接通延时定时器。
- 计数器指令:
S_CU(加计数器),S_CD(减计数器)。
数据类型与寻址
- 位: 存储单元中的某一位,如
I0.0(输入字节0的第0位)。 - 字节: 8位,如
MB10(存储区B的10号字节)。 - 字: 16位,如
MW10(由MB10和MB11组成)。 - 双字: 32位,如
MD10(由MB10到MB13组成)。 - 定时器字: 16位,用于存储定时器当前值。
- 计数器字: 16位,用于存储计数器当前值。
程序结构
为了使程序清晰、可复用,S7-300使用“块”的概念。
- 组织块: 由操作系统调用,用于处理事件,最重要的组织块是
OB1(主循环组织块),PLC上电后,会循环执行OB1中的程序。 - 功能块: 带有“背景数据块”,有记忆功能。
FB41(标准PID控制块)。 - 功能: 不带“背景数据块”,无记忆功能,类似于子程序。
FC10(一个自定义的加法运算)。 - 数据块: 用于存储数据。
DB1是系统数据块,存放硬件组态信息,用户可以创建自己的DB来存放变量。
创建并调用一个功能块:
- 在
Blocks文件夹上右键,Insert New Object->Function Block,命名为FB1_Motor_Control。 - 在
FB1的接口区定义输入、输出和临时变量。 - 在
FB1的网络中编写电机控制逻辑。 - 在
OB1的某个网络中,调用FB1,并传递实际参数(如I/O地址)。
第四部分:调试与实战篇
下载程序到PLC
- 硬件连接: 使用编程电缆(如USB/MPI适配器)将电脑与CPU的MPI/DP接口连接。
- 设置PG/PC接口: 在STEP 7中,通过
Options->Set PG/PC Interface选择你使用的编程电缆。 - 在线连接: 在项目树中,右键点击
Blocks或Hardware,选择Online。 - 下载: 如果连接成功,会显示PLC的在线状态,右键点击
Blocks,选择Download,将硬件组态和程序下载到PLC中。
程序调试
- 监控/修改变量:
- 在LAD/STL/FBD视图中,选中某个变量(如
I0.0),右键选择Monitor/Modify Variable。 - 在弹出的窗口中,可以强制置位/复位该变量,观察程序运行结果。
- 在LAD/STL/FBD视图中,选中某个变量(如
- 断点: 在程序行左侧的灰色区域点击,设置断点,程序运行到断点时会暂停,便于观察中间状态。
- 跟踪: 使用
View->Online->Single Scan或Multiple Scan来逐条或逐个循环地执行程序,跟踪逻辑变化。
一个综合实战示例:水箱水位控制
控制要求:
- 水箱有高、中、低三个液位传感器(常开触点)。
- 启动按钮按下后,进水泵开始注水。
- 当水位达到中位时,进水泵停止。
- 当水位低于中位时,进水泵再次启动。
- 当水位达到高位时,报警灯闪烁并停止进水泵。
- 停止按钮按下后,系统停止工作。
I/O分配:
- I0.0: 启动按钮
- I0.1: 停止按钮
- I0.2: 高位传感器
- I0.3: 中位传感器
- I0.4: 低位传感器
- Q4.0: 进水泵
- Q4.1: 报警灯
程序设计思路:
- 在
OB1中实现启停逻辑。 - 使用
I0.2和I0.3的状态组合来控制Q4.0。 - 当
I0.2为1时,置位一个内部标志位(如M10.0)并复位Q4.0。 - 用
M10.0来控制Q4.1(使用定时器实现闪烁效果)。
第五部分:进阶学习资源
当你掌握了以上基础后,可以继续探索以下领域:
- PROFIBUS通信: 学习如何配置CPU和CP模块作为主站或从站,实现PLC之间的数据交换。
- PID控制: 学习使用功能块
FB41或FB58进行模拟量(如温度、压力、流量)的闭环控制。 - WINCC组态: 学习使用西门子的上位机组态软件,创建人机界面,监控PLC数据。
- SCL编程: 学习结构化控制语言,这是一种类似Pascal的高级语言,特别适合编写复杂的算法和数据处理程序。
学习建议
- 理论与实践结合: 不要只看书,一定要安装STEP 7和PLCSIM,亲手去创建项目、编写程序、模拟调试。
- 从简单开始: 先掌握最基本的启停、自锁、互锁,再逐步学习定时器、计数器和复杂逻辑。
- 勤做笔记: 记录常用的指令、编程技巧和遇到的问题及解决方法。
- 多看示例: STEP 7软件自带的示例程序是很好的学习材料。
希望这份详细的教程能帮助你顺利入门西门子S7-300 PLC!祝你学习愉快!
