基于PLC的自动药片装瓶机控制系统设计报告及仿真分析
基于plc的自动药片装瓶机控制系统设计 报告+仿真
最近在搞一个自动化项目挺有意思的想说叨说叨。药片装瓶机这玩意儿看着简单,真要让PLC控制得严丝合缝还真得费点心思。咱这次从硬件配置到程序调试整了个全套,最后还用仿真验证了一把,整个过程跟坐过山车似的。
硬件选型那些事儿
药瓶传送带上的伺服电机选了台达的ASDA-B3系列,这货带电子凸轮功能是真香。光电传感器得重点说说,OMRON的E3Z-T61在检测半透明药瓶时不会误触发,实测隔着5mm亚克力板都能稳定捕捉。PLC用的西门子S7-1200,1215C这个型号自带16DI/16DO,刚好够用还省扩展模块。
传送带电机和振动盘的控制回路得单独划个区域,不然干扰起来能让你怀疑人生。接地线这事儿千万别图省事,之前测试时有个电磁阀突然抽风,查了三天才发现是接地没做好。
梯形图里的门道
装瓶核心逻辑就这段:
Network1: LD StartButton //启动信号 ANDN EmergencyStop //急停未触发 AN BottleReady //瓶子到位 = M0.0 //主控继电器 Network2: LD M0.0 TON T1, PT#2S //振动盘预热2秒 Network3: LD T1.Q = Q0.0 //启动振动送料这玩意儿其实就是个启动保持停止电路,但要注意定时器得用保持型的TONR。有次调试时发现振动盘总提前停,后来发现是定时器类型选错了。
基于plc的自动药片装瓶机控制系统设计 报告+仿真
药片计数这块用了高速计数器HSC1,配合欧姆龙E6B2编码器。关键代码得这么写:
HSC1.CONFIG(模式4, 预设值100); //AB相计数 HSC1.ENABLE;注意预设值要根据药瓶容量动态修改,程序里搞了个配方选择功能,用指针变量切换预设值表格。
仿真翻车实录
用PLCSIM Advanced做仿真时,振动盘动作总比预期慢半拍。后来发现是OB35中断周期设的500ms不合适,改成200ms后立马流畅。TIA Portal里的3D仿真更带劲,直接能看到药瓶排队被推走。
最坑的是装瓶完成信号逻辑,仿真时明明显示装瓶完成,机械手就是不动作。后来在变量表里监控发现是某个中间变量没复位,这bug藏得够深。建议仿真时把关键变量都拖到趋势图里实时看着,比在线监控效率高。
异常处理要够骚
针对卡瓶问题写了段骚操作:
IF "VibratorJam" AND NOT "MotorOverload" THEN "ReverseConveyor"(TP脉冲:=t#500ms, Cycle:=3); END_IF;让传送带倒转三次,每次半秒,实测能解决80%的卡瓶情况。还有个妙招是在HMI上搞了个振动盘力度调节滑块,直接映射到PWM输出,不同药片硬度都能适配。
这次项目最大的收获是发现仿真时得多造点异常情况,比如突然断电恢复测试,结果还真测出配方数据丢失的坑。现在系统里加了两个保持寄存器轮流备份数据,稳得一批。下次想试试用Python脚本自动生成测试用例,应该能省不少调试时间。
