西门子300PLC 分时产量计数程序,在地址不冲突情况下,改个启动计数条件,就可以拿来在项目上直接使用,间接寻址,程序直观明了,触摸屏有系统时间更改功能。
凌晨两点半的车间里,PLC柜蓝色指示灯规律性闪烁。操作工老张叼着烟戳了戳触摸屏:"这产量统计能按早中晚班分开显示不?"——这问题问得我CPU差点烧了,西门子300PLC的分时产量程序其实早就在咱们口袋里揣着了。
直接上干货。先整数据存储区,DB10里建个结构体数组,12个元素对应三班倒的四小时时段(图1)。STEP7里长这样:
L "SystemTime".Hour //读取系统小时数 SLD 3 //乘8(每个时段占8字节) T #nTempPointer //间接寻址指针 L DB10.DBD[#nTempPointer] //当前时段产量 L 1 +I T DB10.DBD[#nTempPointer] //产量+1这骚操作核心在间接寻址。当产线传感器触发时,程序自动根据系统时间找到对应时段的内存地址。比如早上8点的指针计算:8点属于早班(0-8点时段),8小时*8字节=64,直接定位到DB10.DBD64地址。
西门子300PLC 分时产量计数程序,在地址不冲突情况下,改个启动计数条件,就可以拿来在项目上直接使用,间接寻址,程序直观明了,触摸屏有系统时间更改功能。
触摸屏搞时间同步更带劲。在WinCC Flexible里拖个日期时间控件,属性里勾选"允许操作员输入",背后自动绑定S7-1200的时钟存储器。重点来了:记得在OB35里加个时钟同步程序:
CALL "WR_SYS_T" //写系统时间 REQ :=#HMI_TimeChange //屏上触发信号 DT :=#HMI_DateTime //屏设置的时间 RET_VAL:=#ErrorCode有个坑得注意:系统时间被修改时可能导致时段跳变。解决方案是在DB10里加个双缓冲机制——当前时段存产量,前一小时数据自动归档,这招能防住突然调时间导致的统计错乱。
实际项目落地时,把启动计数条件从I0.0(传感器信号)改成M10.0(设备运行信号),立马适配新产线。上周在注塑车间实测,连续运行72小时时段产量误差不超过±3,比之前用的定时器方案稳多了。
改完程序顺手给触摸屏加了个时段颜色标记:早班黄、中班蓝、晚班红。老张现在逢人就显摆:"这玩意比打卡机还准!"——要的就是这种甲方觉得钱花值的的效果。