西门子S7-300PLC采用博途V14编程程序,附带博途WINCC上位机,项目内容甲醛生产线项目,模拟量处理,电机控制等。 含博途程序画面案例,PLC采用西门子300系列,画面组态软件采用博途WINCC,A13, 另有采用博途软件314C配料系统,程序有模拟量转换,配料配方控制。
最近在折腾一个甲醛生产线的PLC项目,用的西门子S7-300系列配博途V14平台。这玩意儿真是典型的工业现场大杂烩,从4-20mA信号处理到电机连锁控制,连带着WINCC上位机组态画面都得一把抓。老铁们都知道,这种项目最怕的就是模拟量飘移和配方参数乱跳,今天就跟大伙唠唠实战中遇到的几个典型场景。
先说说模拟量处理的套路。现场十来个反应釜的温度压力信号都要进314C-2PN/DP的AI模块,博途里直接甩个FC105块出来干活是真方便。不过要注意通道使能得手动拉高,别傻等着自动激活:
CALL "SCALE" , "DB_SCALE" IN := PIW256 //模拟量输入地址 HI_LIM := 1.000000e+002 //量程上限100度 LO_LIM := 0.000000e+000 //量程下限0度 BIPOLAR:= FALSE //单极性信号 RET_VAL:= MW200 //状态代码 OUT := MD204 //转换后的实数值这个FC105的RET_VAL要是返回0x0000才算转换成功,之前有个新来的兄弟没做状态判断,产线半夜突然报"温度超限",查了半天发现是某个通道使能掉了链子。
电机控制这块更讲究连锁逻辑。比如反应釜搅拌电机必须满足三个条件:进料阀门到位、温度低于80℃、急停未触发。用梯形图搭出来的安全回路比结构化文本更直观:
Network1: A( "进料阀到位" A "温度报警" AN "急停" ) = "搅拌电机启动允许" Network2: A "启动按钮" A "搅拌电机启动允许" S "搅拌电机运行" Network3: A "停止按钮" O "急停" R "搅拌电机运行"这种起保停电路配上置位复位操作,维护人员用监控表排查故障时一眼就能看出哪个条件没满足。之前试过用S7-Graph来写,结果调试时操作工说看不懂状态转移图,还是传统梯形图更接地气。
说到WINCC画面组态,A13版本的控件库是真香。特别是配方管理画面,用VBS脚本配合同步按钮实现不同生产阶段的参数切换:
Sub btn_LoadRecipe_Click() Dim curRecipe curRecipe = SmartTags("配方案例选择") HMIRuntime.Tags("配方号").Write curRecipe If HMIRuntime.Tags("配方状态") = 1 Then MsgBox "正在生产中,禁止切换配方!" Else ExecuteRecipeLoad End If End Sub这个脚本配合PLC里的配方数据块,能实现不停机切换生产参数。注意一定要做好配方版本校验,有次测试时新旧配方里的流量系数单位搞混了(kg/h写成了L/min),差点把反应釜灌成游泳池。
项目里还有个314C做的配料系统,核心是带死区控制的PID调节。这里有个骚操作——用OB35循环中断做定时采样,避免主程序扫描周期不固定导致积分项抽风:
//OB35中断程序 每100ms执行 CALL "PID_CP" , "DB_PID" SP_INT := #设定值 PV_IN := #实际值 MAN_ON := FALSE PVPER_ON := FALSE CYCLE := T#100ms GAIN := 2.0 TI := T#30s TD := T#5s LMN := #输出值这种固定周期的PID运算对付流量波动特有效,不过记得在WINCC画面上要把TI、TD参数的单位换算做好,调试时见过有工程师把30秒设成30分钟,结果系统响应慢得像树懒。
最后给新人提个醒:博途项目一定要做好版本管理!有次甲方临时要改个电机启动延时,结果现场工程师直接在线修改没归档,晚上突然断电重启后程序回滚,产线直接瘫痪两小时。现在我们都强制要求修改前必须创建修订版本,血的教训啊...