返回主站|会员中心|保存桌面

西门子(SIEMENS)服务商    

框架断路器、塑壳断路器、隔离开关、软启动、变频器、电机 、PLC、触摸屏

联系方式
  • 联系人:吴经理
  • 电话:18576370666
新闻分类
  • 暂无分类
站内搜索
 
首页 > 新闻中心 > 提供一份西门子S7-200 PLC控制多机组运行的程序示例!
新闻中心
提供一份西门子S7-200 PLC控制多机组运行的程序示例!
发布时间:2025-12-02        浏览次数:6        返回列表

西门子 S7-200 PLC 多机组运行(开机时长平均)完整程序示例

以下是 4 台机组(泵 / 风机 / 压缩机)的完整控制程序,基于 S7-200 CPU 226(S7-200 SMART 可直接适配,仅需调整寄存器地址标注),核心功能:累计运行时长自动均衡 + 最短时长优先启动 + 故障避让 + 手动 / 自动切换,包含梯形图(LAD)程序、寄存器分配、调试说明,可直接导入 PLC 测试。

一、核心参数与寄存器分配(关键!必须统一)

1. 输入输出(I/O)地址分配

类型地址功能描述备注
输入I0.0机组 1 运行反馈(常开)电机接触器辅助触点
输入I0.1机组 2 运行反馈(常开)同上
输入I0.2机组 3 运行反馈(常开)同上
输入I0.3机组 4 运行反馈(常开)同上
输入I0.4机组 1 故障反馈(常闭)故障时断开,自动屏蔽该机组
输入I0.5机组 2 故障反馈(常闭)同上
输入I0.6机组 3 故障反馈(常闭)同上
输入I0.7机组 4 故障反馈(常闭)同上
输入I1.0自动 / 手动切换(ON = 自动,OFF = 手动)旋钮开关
输入I1.1系统启动指令(自动模式有效)如压力低触发、定时启动
输入I1.2系统停止指令(自动模式有效)如压力高触发、紧急停止
输入I1.3手动启动机组 1手动模式有效
输入I1.4手动停止机组 1手动模式有效
输入I1.5手动启动机组 2手动模式有效
输入I1.6手动停止机组 2手动模式有效
输入I2.0手动启动机组 3手动模式有效
输入I2.1手动停止机组 3手动模式有效
输入I2.2手动启动机组 4手动模式有效
输入I2.3手动停止机组 4手动模式有效
输入I2.4累计时长清零(需长按 3 秒)加防误触逻辑
输出Q0.0机组 1 启动输出(控制接触器)线圈需串接故障保护触点
输出Q0.1机组 2 启动输出(控制接触器)同上
输出Q0.2机组 3 启动输出(控制接触器)同上
输出Q0.3机组 4 启动输出(控制接触器)同上
输出Q1.0系统运行指示灯至少 1 台机组运行时亮
输出Q1.1系统故障指示灯任意机组故障时亮
输出Q1.2自动模式指示灯自动模式时亮

2. 内部寄存器分配(V 区,掉电保持)

地址数据类型功能描述备注
VD0DINT机组 1 累计运行时间(秒)掉电保持,单位:s
VD4DINT机组 2 累计运行时间(秒)同上
VD8DINT机组 3 累计运行时间(秒)同上
VD12DINT机组 4 累计运行时间(秒)同上
VD16DINT机组 1 启动时刻时间戳(秒)记录启动时的系统总秒数
VD20DINT机组 2 启动时刻时间戳(秒)同上
VD24DINT机组 3 启动时刻时间戳(秒)同上
VD28DINT机组 4 启动时刻时间戳(秒)同上
VD32DINT临时存储当前时间戳(秒)计算运行时长用
VD36DINT临时存储单次运行时长(秒)计算运行时长用
VD40DINT系统当前总秒数(时间戳)从 2025-01-01 00:00:00 开始累计
VB44BYTE当前运行机组数量范围 0~4
VB45BYTE选中启动的机组编号(1~4)自动模式筛选结果
VB46.0BOOL机组 1 启动标志位避免重复启动
VB46.1BOOL机组 2 启动标志位同上
VB46.2BOOL机组 3 启动标志位同上
VB46.3BOOL机组 4 启动标志位同上
VB47.0BOOL自动启动允许标志避免同时启动多台
VB47.1BOOL清零触发标志长按 I2.4 后置 1
VB48.0BOOL机组 1 故障标志位(自锁)故障时置 1,复位需手动清除
VB48.1BOOL机组 2 故障标志位(自锁)同上
VB48.2BOOL机组 3 故障标志位(自锁)同上
VB48.3BOOL机组 4 故障标志位(自锁)同上

3. 系统时钟相关寄存器

地址数据类型功能描述备注
VW100WORDRTC 年(如 25=2025)S7-200 RTC 默认存储地址
VW102WORDRTC 月(1~12)同上
VW104WORDRTC 日(1~31)同上
VW106WORDRTC 时(0~23)同上
VW108WORDRTC 分(0~59)同上
VW110WORDRTC 秒(0~59)同上

二、完整梯形图程序(分模块)

模块 1:系统时间戳转换(将 RTC 转为总秒数)

功能:读取 PLC 实时时钟(RTC),转换为 “从 2025-01-01 00:00:00 开始的总秒数”,存入 VD40(当前时间戳),为时长计算提供基准。

ladder

// 网络1:读取RTC实时时钟
LD     SM0.0
CALL   READ_RTC, &VB100, VW112  // 读取RTC到VW100~VW109,VW112存错误码
AN     VW112                    // 无错误时执行转换
JMP    LBL0
LD     SM0.0
=      Q1.1                     // 时钟读取错误,触发故障灯
LBL0:

// 网络2:RTC转总秒数(简化版,忽略平闰年,误差可接受)
LD     SM0.0
// 年:(年-25)*31536000秒(2025年为基准)
MOV_W  VW100, VW114
SUB_W  VW114, 25, VW114
MUL_I  VW114, 31536000, VD44
// 月:月*2592000秒(按30天计算)
MOV_W  VW102, VW116
MUL_I  VW116, 2592000, VD48
// 日:日*86400秒
MOV_W  VW104, VW118
MUL_I  VW118, 86400, VD52
// 时:时*3600秒
MOV_W  VW106, VW120
MUL_I  VW120, 3600, VD56
// 分:分*60秒
MOV_W  VW108, VW122
MUL_I  VW122, 60, VD60
// 秒:直接取RTC秒
MOV_W  VW110, VW124
MOV_I  VW124, VD64
// 总秒数=年+月+日+时+分+秒,存入VD40
ADD_DW VD44, VD48, VD40
ADD_DW VD40, VD52, VD40
ADD_DW VD40, VD56, VD40
ADD_DW VD40, VD60, VD40
ADD_DW VD40, VD64, VD40

模块 2:累计运行时间更新(4 台机组通用逻辑)

功能:实时更新每台机组的累计运行时间,启动时记录时间戳,运行中每 1 秒累加,停止时补全时长。

ladder

// 网络3:机组1累计时间更新
// 1. 启动时记录时间戳(上升沿)
LD     I0.0          // 机组1运行反馈
AN     VB46.0        // 未启动标志
EU
MOV_DW VD40, VD16    // 存储启动时刻时间戳
SET    VB46.0        // 置位启动标志

// 2. 运行中每1秒累加时长
LD     I0.0
LD     SM0.5         // PLC内置1秒脉冲
A      VB46.0
EU
MOV_DW VD40, VD32    // 当前时间戳存入临时寄存器
SUB_DW VD32, VD16, VD36  // 单次运行时长=当前-启动时刻
ADD_DW VD0, VD36, VD0    // 累计时间=原时长+单次时长

// 3. 停止时补全时长(下降沿)
LD     I0.0
ED
MOV_DW VD40, VD32
SUB_DW VD32, VD16, VD36
ADD_DW VD0, VD36, VD0
R      VB46.0        // 复位启动标志

// 网络4:机组2累计时间更新(仅地址偏移,逻辑同机组1)
LD     I0.1
AN     VB46.1
EU
MOV_DW VD40, VD20
SET    VB46.1

LD     I0.1
LD     SM0.5
A      VB46.1
EU
MOV_DW VD40, VD32
SUB_DW VD32, VD20, VD36
ADD_DW VD4, VD36, VD4

LD     I0.1
ED
MOV_DW VD40, VD32
SUB_DW VD32, VD20, VD36
ADD_DW VD4, VD36, VD4
R      VB46.1

// 网络5:机组3累计时间更新(地址偏移)
LD     I0.2
AN     VB46.2
EU
MOV_DW VD40, VD24
SET    VB46.2

LD     I0.2
LD     SM0.5
A      VB46.2
EU
MOV_DW VD40, VD32
SUB_DW VD32, VD24, VD36
ADD_DW VD8, VD36, VD8

LD     I0.2
ED
MOV_DW VD40, VD32
SUB_DW VD32, VD24, VD36
ADD_DW VD8, VD36, VD8
R      VB46.2

// 网络6:机组4累计时间更新(地址偏移)
LD     I0.3
AN     VB46.3
EU
MOV_DW VD40, VD28
SET    VB46.3

LD     I0.3
LD     SM0.5
A      VB46.3
EU
MOV_DW VD40, VD32
SUB_DW VD32, VD28, VD36
ADD_DW VD12, VD36, VD12

LD     I0.3
ED
MOV_DW VD40, VD32
SUB_DW VD32, VD28, VD36
ADD_DW VD12, VD36, VD12
R      VB46.3

模块 3:故障检测与自锁(故障避让基础)

功能:检测机组故障并自锁,故障时屏蔽启动,故障恢复后需手动复位(或自动复位,可修改)。

ladder

// 网络7:机组故障检测与自锁
// 机组1故障(I0.4为常闭,故障时断开)
LD     NOT I0.4
EU
SET    VB48.0
// 机组1故障复位(手动复位,可改为自动)
LD     I1.3          // 手动启动按钮(兼复位)
A      VB48.0
R      VB48.0

// 机组2故障
LD     NOT I0.5
EU
SET    VB48.1
LD     I1.5
A      VB48.1
R      VB48.1

// 机组3故障
LD     NOT I0.6
EU
SET    VB48.2
LD     I2.0
A      VB48.2
R      VB48.2

// 机组4故障
LD     NOT I0.7
EU
SET    VB48.3
LD     I2.2
A      VB48.3
R      VB48.3

// 系统故障灯(任意机组故障亮)
LD     VB48.0
OLD    VB48.1
OLD    VB48.2
OLD    VB48.3
=      Q1.1

模块 4:运行机组数量计数

功能:统计当前运行的机组台数,为自动启动 / 停止提供判断依据(如最多 3 台运行、最少 1 台运行)。

ladder

// 网络8:运行机组数量计数(每秒更新1次)
LD     SM0.5
MOV_B  0, VB44       // 初始化计数器
// 机组1运行,计数+1
LD     I0.0
AN     VB48.0
JMP    LBL1
ADD_B  VB44, 1, VB44
LBL1:
// 机组2运行,计数+1
LD     I0.1
AN     VB48.1
JMP    LBL2
ADD_B  VB44, 1, VB44
LBL2:
// 机组3运行,计数+1
LD     I0.2
AN     VB48.2
JMP    LBL3
ADD_B  VB44, 1, VB44
LBL3:
// 机组4运行,计数+1
LD     I0.3
AN     VB48.3
JMP    LBL4
ADD_B  VB44, 1, VB44
LBL4:
// 系统运行灯(运行数量≥1时亮)
LD     VB44
GT     0
=      Q1.0。
收缩
  • QQ咨询

  • 电话咨询

  • 18576370666
  • 添加微信客服