No.839 基于三菱PLC和MCGS组态3x4书架式堆垛式立体库
最近在搞一个3x4的书架式立体库项目,用的是三菱FX3U系列PLC配MCGS触摸屏。这玩意儿看着像大号快递柜,实际藏着不少工业自动化的门道。先带大伙儿看看硬件布局:三列四层的钢结构架,每格都装着光电开关做占位检测,升降电机用的三菱MR-JE伺服,货叉伸缩是气缸带磁耦传感器定位。

PLC程序里最核心的是仓位寻址算法。这里用了个挺巧妙的坐标转换方法,把仓位编号转成X/Y坐标。比如要把货物送到B列第3层,咱们的梯形图里是这么玩的:
ladder
LD M8000 // 常开触点
MOV K2 D10 // 列号存入D10
MOV K3 D11 // 层号存入D11
MUL D10 K4 D12 // 计算基础偏移量(列号*4)
ADD D12 D11 D13 // 加上层号得到绝对地址
MOV D13 D100 // 最终仓位地址存到D100
这堆MOV指令看着简单,其实暗藏玄机。比如当D10=2(B列)、D11=3时,D13算出来是(2*4)+3=11,刚好对应B3仓位的绝对地址。比起用二维数组,这种线性寻址更适合PLC的寄存器操作。
MCGS这边主要搞人机交互。做了个动态仓位显示界面,用指示灯组态实时反映货物状态。这里有个骚操作------用脚本动态改变元件颜色:
vb
Sub Button1_Click()
If Device.ReadTag("Q0") = 1 Then
Shape1.FillColor = RGB(255,0,0)
Else
Shape1.FillColor = RGB(0,255,0)
End If
End Sub
这脚本比常规的动画构件更灵活,特别是处理异常状态时能玩出花来。有次调试时发现货叉偶尔会卡在中间位,后来在PLC里加了段互锁逻辑:
ladder
LD X002 // 升降到位信号
AND X003 // 货叉伸出到位
OUT Y005 // 允许取货信号
LDI X004 // 急停按钮常闭
ANB
OUT Y006 // 总使能输出
重点在ANB指令的应用,相当于把两个条件串成硬线联锁。调试时拿螺丝刀故意触发X004,果然整个系统立马断电,安全回路稳如老狗。

通信配置踩过个大坑------PLC的MODBUS地址和MCGS对不上。后来发现三菱的D寄存器要加40001偏移量,改完通信脚本后数据刷刷的。现在回头看,这种立体库最吃工况的是防抖动处理,特别是光电开关受环境光影响时,得在PLC程序里加20ms的延迟判断,这比硬件滤波省钱多了。
项目交付前搞压力测试,模拟连续存取100次没出幺蛾子。有个细节值得说:在MCGS里做了个隐藏的维护界面,长按仓位图标5秒能调出IO监控,这招在后期运维时帮了大忙。总的来说,这种规模的中小型立体库,用三菱+MCGS的方案性价比确实能打,下次试试加个视觉定位应该更带劲。
