您现在所在的是:

PLC论坛

回帖:11个,阅读:408次 [上一页] [1] [2] [下一页]
* 帖子主题:

沥青拌合机程序

581
微鑫科技
文章数:1331
年度积分:581
历史总积分:581
注册时间:2019/11/26
发站内信
发表于:2026/7/31 0:55:38
#10楼
我们那边有一个很大的搅拌站,去看过,用电脑显示器监控并操作的,看着蛮复杂的,具体的配电箱线路没有拆开研究过。
遇到SB,请不要和他争辩,认同他所有的观点,让他变成一个大SB。
142
qi.zhang
文章数:87
年度积分:142
历史总积分:142
注册时间:2026/10/29
发站内信
发表于:2026/10/30 17:32:58
#11楼
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编辑过]

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2026 Gkong.com, All Rights Reserved

152.8376