西门子1200/1500博途单部电梯程序,文件包含一个四层电梯程序,三个六层电梯程序,版本TIA16
西门子1200/1500博途单部电梯程序,文件包含一个四层电梯程序,三个六层电梯程序,版本TIA16。 仅一个六层电梯有触摸屏画面,程序仅限于用于参考对比。 博图版本V15.1及以上20
最近在工控圈里发现不少同行在找西门子1200/1500的电梯程序参考方案。刚好手头有一套从项目现场整理出来的博途电梯程序包,今天咱们就扒开看看里边到底藏着什么料。
程序包里最显眼的是那个四层电梯模板,说实在的这玩意儿比想象中要精简。它的核心逻辑用SCL写了段状态机切换,比如这段开门保持时间的处理:
IF #DoorOpenTimer.Q THEN #CurrentState := STATE_MOVING; #DoorOpenTimer.RESET; END_IF;其实就是个延时触发器,超过设定时间自动切到运行状态。不过要注意它的定时器用的是TON类型,实际项目里建议换成ISO_TIMER避免博途版本兼容问题。
三个六层电梯程序里有个带HMI的特别显眼。触摸屏上六个楼层的上下行箭头做成了矩阵排列,这里有个细节处理得挺巧妙——用二维数组绑定按钮状态:
FOR #i := 1 TO 6 DO #ExternalCall[#i].Up := "HMI".CallMatrix[#i,1]; #ExternalCall[#i].Down := "HMI".CallMatrix[#i,2]; END_FOR;不过实际测试发现这个方案在V16版本偶尔会丢数据,后来改成指针偏移寻址才稳定。所以参考时要注意,别直接照搬这种界面交互逻辑。
西门子1200/1500博途单部电梯程序,文件包含一个四层电梯程序,三个六层电梯程序,版本TIA16。 仅一个六层电梯有触摸屏画面,程序仅限于用于参考对比。 博图版本V15.1及以上20
程序结构方面基本都采用了分层架构:硬件层处理IO信号,调度层用FB做电梯运动控制,接口层处理HMI通信。有个有意思的设计是平层信号处理用了硬件中断+软件滤波的双重校验:
// OB40硬件中断组织块 IF #FloorSensor THEN "ElevatorFB".HardwareFloorDetect := TRUE; END_IF; // 主循环中的软件校验 IF "ElevatorFB".HardwareFloorDetect AND NOT #LastSensorState THEN // 执行平层校正 END_IF;这种设计可以有效防止传感器误触发,但也会增加约15ms的响应延迟,用在高速电梯上得慎重。
版本兼容性方面实测V15.1开V16的项目会出现DB块偏移,特别是HMI关联变量容易错位。建议用V17做中间版本过渡,或者直接上V18做全局重构。另外程序里的安全逻辑部分基本都是空架子,实际部署前得补上STOP安全回路和应急照明控制模块。
最后提醒下,这些程序里的报警记录功能都是基于临时变量做的,千万别直接拿去项目上用。之前有同行中过招——设备重启后故障记录全丢,被甲方追着骂了三天。真要参考的话,建议改造成用永久存储区+时间戳的方案,虽然麻烦但能保命。
(程序包里的急停按钮竟然接的是普通DI点...这操作只能说懂的都懂,建议看到这里的同行自己改成安全PLC模块吧)
