在光伏、半导体产线中,石墨舟(部分现场称石墨岛)搬移是扩散、PECVD 等工序的关键环节。上位机系统负责与 PLC、伺服机械手、传感器交互,完成任务调度、状态监控、报警联锁与数据追溯。本文从工程角度给出一种可落地的设计思路,并附核心代码。
典型架构为:上位机(C#/WPF 或 Python)通过 Modbus TCP、S7、OPC UA 与 PLC 通信;PLC 控制伺服轴、气缸夹爪、输送线;安全链路独立,急停、光栅、限位直接接入安全继电器或安全 PLC。上位机再与 MES/配方系统对接,记录舟号、批次、位置、时间、结果。
建议将 PLC 地址抽象为点表,避免硬编码。示例:
实际项目需增加心跳、超时、重连、写后读校验,防止通信假死。
搬移流程适合用有限状态机:Idle → Homing → Ready → Picking → Moving → Placing → Idle。任何安全条件不满足,立即进入 Error。状态机应单线程驱动或加锁,避免并发写 PLC。
public enum BoatState { Idle, Homing, Ready, Picking, Moving, Placing, Error }
public interface IPlcClient
{
Task<bool> ReadCoilAsync(ushort addr);
Task WriteCoilAsync(ushort addr, bool value);
Task WriteRegisterAsync(ushort addr, ushort value);
Task<bool> ReadInputAsync(ushort addr);
}
public class BoatMoveController
{
private readonly IPlcClient _plc;
private BoatState _state = BoatState.Idle;
public BoatMoveController(IPlcClient plc) => _plc = plc;
public async Task LoopAsync(CancellationToken ct)
{
while (!ct.IsCancellationRequested)
{
if (!await SafetyOkAsync())
{
_state = BoatState.Error;
await _plc.WriteCoilAsync(99, false);
await Task.Delay(500, ct);
continue;
}
switch (_state)
{
case BoatState.Idle:
if (await _plc.ReadCoilAsync(0)) _state = BoatState.Homing;
break;
case BoatState.Homing:
await _plc.WriteCoilAsync(10, true);
if (await _plc.ReadCoilAsync(11)) _state = BoatState.Ready;
break;
case BoatState.Ready:
if (await _plc.ReadCoilAsync(1)) _state = BoatState.Picking;
break;
case BoatState.Picking:
await _plc.WriteCoilAsync(20, true);
if (await _plc.ReadCoilAsync(21)) _state = BoatState.Moving;
break;
case BoatState.Moving:
await _plc.WriteRegisterAsync(30, 1000);
if (await _plc.ReadCoilAsync(31)) _state = BoatState.Placing;
break;
case BoatState.Placing:
await _plc.WriteCoilAsync(40, true);
if (await _plc.ReadCoilAsync(41)) _state = BoatState.Idle;
break;
case BoatState.Error:
await Task.Delay(1000, ct);
break;
}
await Task.Delay(50, ct);
}
}
private async Task<bool> SafetyOkAsync()
{
return await _plc.ReadInputAsync(0) // 急停
&& await _plc.ReadInputAsync(1) // 安全光栅
&& await _plc.ReadInputAsync(2); // 限位
}
}石墨岛搬移上位机系统的核心是稳定通信、清晰状态机、硬联锁与可追溯。代码骨架可直接扩展为 WPF/ASP.NET 服务,配合 PLC 点表和报警系统即可落地。先保证安全与可观测,再追求节拍优化。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。