1.实现思路
采用状态机(State Machine)结构进行主流程控制,分为以下几个主要阶段:
初始化/复位:检查安全条件,清零计数器。
骨料供给与烘干:启动皮带机、燃烧器,监测干燥滚筒温度。
筛分与提升:启动提升机、振动筛,等待热骨料进入缓冲仓。
计量配料:依次对粗、细骨料、矿粉进行称重(通过模拟量或脉冲计数),达到设定值后关闭闸门。
干拌:启动搅拌缸,先加入骨料和矿粉干拌一定时间。
湿拌:喷入沥青,继续搅拌至均匀。
卸料:打开成品仓门,排空搅拌缸,循环结束。
2. 主程序网络 (OB1)
ladder
// Network 1: 系统初始化与安全检查
// 如果急停未按下且无故障,允许进入自动模式
LD I0.2 // 急停常闭触点
A NOT I0.6 // 假设 I0.6 为外部故障,此处简化
= M0.0 // 置位自动模式使能
// Network 2: 启动/停止逻辑
// 上升沿触发启动,设置状态为 1 (开始烘干)
LD I0.0
EU // 上升沿检测
A M0.0 // 自动模式使能
MOVE 1, DB1.DBW0 // 设置 CurrentState = 1
// 停止逻辑:完成当前循环后停止,不立即切断输出
LD I0.1
EU
MOVE 0, DB1.DBW0 // 设置 CurrentState = 0 (Idle)
// Network 3: 状态调度器 (Case Structure via Comparators)
// 这里使用比较指令来激活不同的子程序块或网络组
// --- 状态 1: 骨料烘干与提升 ---
LD DB1.DBW0 == 1
CALL "FB_DryingProcess" // 调用烘干子程序 FB
// --- 状态 2: 筛分与计量准备 ---
LD DB1.DBW0 == 2
CALL "FB_SievingMetering" // 调用筛分计量子程序 FB
// --- 状态 3: 干拌 ---
LD DB1.DBW0 == 3
CALL "FB_Mixing" // 调用搅拌子程序 FB (参数: Mode=Dry)
// --- 状态 4: 湿拌 (加沥青) ---
LD DB1.DBW0 == 4
CALL "FB_Mixing" // 调用搅拌子程序 FB (参数: Mode=Wet)
// --- 状态 5: 卸料 ---
LD DB1.DBW0 == 5
CALL "FB_Discharge" // 调用卸料子程序 FB
3. 功能块示例: FB_DryingProcess (烘干过程)
此 FB 负责控制皮带、燃烧器和提升机,并监测温度以推进状态。
ladder
// Input: Enable (BOOL), TargetTemp (REAL)
// Output: NextState (INT), BeltRun (BOOL), BurnerRun (BOOL), ElevatorRun (BOOL)
// Network 1: 启动辅助设备
// 只要 Enable 有效,保持皮带和提升机运行
LD Enable
= BeltRun
= ElevatorRun
// Network 2: 燃烧器控制 (简单阈值控制示例,实际应使用 PID)
// 读取模拟量 AIW0 (假设 0-27648 对应 0-1000度,需转换)
MOVW AIW0, VW100
ITD VW100, ID100 // 转换为整数
DTR ID100, RD100 // 转换为实数
MULR 1000.0, RD100 // 缩放因子 (假设量程)
DIVR 27648.0, RD100 // 归一化得到实际温度值
// 此时 RD100 为当前温度
// 如果温度低于目标值 - 滞后区,开启燃烧器
LT RD100, TargetTemp
SUBR TargetTemp, 10.0, RD102 // 计算下限
GT RD100, RD102 // 简单判断:如果当前温度 < 目标,则开火
// 更严谨的逻辑需要迟滞比较器
// 此处简化:若 Enable 且温度未达标,开启燃烧器
LD Enable
AND NOT (RD100 >= TargetTemp)
= BurnerRun
// Network 3: 状态转移条件
// 当温度达到设定值,且稳定一段时间,切换到下一状态 (2: 筛分计量)
LD RD100 >= TargetTemp
TON T37, 5s // 延时 5 秒确认温度稳定
Q T37
MOVE 2, NextState // 更新全局状态
4. 功能块示例: FB_Mixing (搅拌控制)
ladder
// Input: Enable, MixTimeSec (INT), AddAsphalt (BOOL)
// Output: MixerRun, AsphaltValveOpen
// Network 1: 搅拌机运行
LD Enable
= MixerRun
// Network 2: 沥青喷洒控制 (仅在湿拌模式下)
LD Enable
AND AddAsphalt
= AsphaltValveOpen
// Network 3: 计时与状态转移
LD Enable
TON T38, MixTimeSec // 搅拌定时
Q T38
// 如果是干拌结束,转湿拌;如果是湿拌结束,转卸料
// 需通过外部传入的 Mode 变量判断
[此贴子已经被cvlsam于2026/10/31 8:08:32编辑过]