核心内容摘要
LeetCode经典算法面试题 #98:验证二叉搜索树(递归法、迭代法等五种实现方案详解)
X
西门子200SMART水处理程序案例具体为120吨双级反渗透程序加混床程序实例项目内有程序画面和电气原理图供初学者学习和研究。
程序有注释。
刚拿到这套120吨双级反渗透水处理项目时我对着控制柜里整整齐齐的SMART200 PLC数了五秒输入输出点——这玩意儿真不是新手村的配置。
好在程序注释写得比大多数自嗨式代码强多了至少能看懂每个子程序块在搞什么飞机。
先看主程序结构典型的模块化设计。
主OB1里直接调用三个子程序这波操作对维护人员相当友好。
重点看RO反渗透控制部分的SBR_0里边用了个挺有意思的定时器接力方案// 一级RO冲洗计时 TON(T101,
; // 30秒正冲 TON(T102,
; // 45秒反冲 IF T
DN THEN Q
3 : 0; // 关闭正冲电磁阀 T
IN : 1; END_IF;这里用两个定时器实现自动切换冲洗模式比单个长定时器分段控制更灵活。
新手可以注意下TON指令的使能端处理很多人在仿真时容易卡在这——记得在调试模式手动触发T
IN的复位。
混床再生程序里有个水量累计的小设计挺实用。
流量计脉冲信号接入I
4用下面这段做累计MOVW AIW16, VW200; // 读取瞬时流量 ITD VW200, VD202; // 转双整数 DTR VD202, VD206; // 转实数 MUL
1, VD206; // 量程转换 A I
4, EU; // 检测上升沿 R VD206, VD210; // 累计总水量这里有个细节要注意流量计信号建议加硬件滤波之前现场遇到过电磁阀动作导致脉冲信号抖动结果半小时累计出三天的用水量...后来在程序里补了个上升沿延时检测才解决。
X
西门子200SMART水处理程序案例具体为120吨双级反渗透程序加混床程序实例项目内有程序画面和电气原理图供初学者学习和研究。
程序有注释。
程序画面里有个动态效果挺有意思——用柱状图模拟RO膜压力变化。
关键代码在HMI连接里MOVR VD300, HMI
压力显示; // 实时压力值 CMPR VD300
5, 50; // 超压报警但实际调试发现压力传感器量程和画面显示范围没对齐导致柱状图动不动就顶格。
后来在数据块里加了标度变换才正常所以说HMI组态和程序变量一定要对表操作。
电气图部分重点关注反渗透高压泵的星三角启动回路程序里对应的输出点Q
2和Q
3有互锁保护。
有个隐藏知识点在PLC输出端并接的RC吸收回路现场维护时别手贱拆了上次有个学徒工觉得那玩意儿没用结果一个月烧了三个接触器线圈。
这套程序最值得学的是异常处理逻辑比如在SBR_2里用状态字实现了分级报警。
当VW500的某位置1时不只是简单触发报警还会执行对应的降级运行模式。
这种设计比单纯亮故障灯高明得多特别是看到用异或指令做报警确认的地方XORW 16#0001, VW500; // 确认一级报警最后给个实战建议拿仿真器跑程序时先把所有的M
0强制置1不然你会发现所有自动流程都动不了——这个急停复位信号在真实项目里通常接硬线仿真时容易漏掉。
源码里还有几个没启用的PID控制块估计是给升级预留的。
有兴趣的可以试着把混床的PH值控制改成闭环记得把FB41的背景数据块分配好别直接调用SMART200的PID挺挑食的。