传送带突然加速?PLC程序员的翻车现场
基于PLC1200与Factory IO设计的模拟工厂设计 TIA Portal V15.1与Factory IO联机仿真运行系统不用实物PLC入下图 1、有设计程序和仿真环境 2、有演示视频。前两天在调试Factory IO的立体仓库模型时传送带突然像脱缰野马般狂奔料框直接飞出工作台。监控PLC1200变量表才发现速度设定值被某个脚本改成了250%——这得从我们的联机架构说起。TIA Portal里建了个名为速度过山车的DB块DATA_BLOCK Convoy_Control VAR ActualSpeed : Real : 0.0; // 实时转速 TargetSpeed : Real : 60.0; // 默认转速 EmergencyStop : Bool : False; END_VARFactory IO的Lua脚本里有个骚操作function onSensorTrigger() if plc.getBit(EmergencyStop) then conveyor.setSpeed(0) else -- 这里原本该用TargetSpeed结果手滑... conveyor.setSpeed(plc.getReal(ActualSpeed) * 2.5) end end当光电传感器触发时脚本误将实际转速当作目标转速读取还擅自加了增益。这种跨平台变量映射的坑比忘记喝咖啡还提神。基于PLC1200与Factory IO设计的模拟工厂设计 TIA Portal V15.1与Factory IO联机仿真运行系统不用实物PLC入下图 1、有设计程序和仿真环境 2、有演示视频。主程序OB1里的速度控制段更有意思Network 1: A 急停按钮 // 来自HMI的IO映射 EmergencyStop Network 2: A 自动模式 JNB _005 L TargetSpeed T ActualSpeed _005: NOP 0 Network 3 A ActualSpeed L 55.0 R JC _007 // 超速报警处理 _007: ...当TargetSpeed突然飙到150%时比较指令联机配置的魔法在于PLCSIM Advanced的虚拟网卡设置。记得那次IP地址冲突Factory IO的通信接口显示连接成功但变量死活不同步。最后用这条PowerShell命令才揪出元凶Get-NetIPConfiguration | Where-Object {$_.InterfaceDescription -like *PLCSIM*}现在的联机方案里我们给虚拟PLC单独划了192.168.5.x网段脚本里增加了速度渐变缓冲local SPEED_RAMP 0.3 -- 秒每百分比 function setGradualSpeed(target) local current conveyor.getSpeed() local steps math.abs(target - current)/0.1 for i1, steps do conveyor.setSpeed(current (target-current)*(i/steps)) coroutine.yield() end end这法子治好了传送带的癫痫发作虽然让响应时间多了300ms但总比现场表演天女散花强。下次试试用PID整定加速曲线或许能找到更优雅的解法。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2444024.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!