三种数据队列的传输方式场景
①带节拍的整体前移,输送形式常见滚床,物流皮带机,滚子线等,通常首位由mes系统输入信息,但现在罗克韦尔的系统,有个对接it和物联网的iot系统,所以,首位也可能是对接这个
②不带节拍的,暂存数据队列,先入先出,涂装到总装的BDC数据队列,总装sps数据配送队列
不带节拍的,
③冒泡发数据传送,比如焊装车间分拼线(发舱、底板)等往主线转运,我们需要在分拼的末端工位通过自主改善增加自动螺柱焊、涂胶、视觉检测等功能,检测完成后,主线的输送系统比如空中小车吊走到主线进行合并,分拼的倒数第二个工位是11,改善工位是12,需要将12工位的产品配置config、型号spilit等传递给改善工位,也就是12工位,我们可以采用冒泡队列传送,当12工位自动拍照完成或者进行补焊完成(持续2S),将堆栈1数据清零,堆栈5存取的是11工位在它的机器人工作完成后发出的配置号。




11工位的产品信息,会像逐渐上升的气泡一样,以PLC的循环扫描为一个时间点,从堆栈5,上升到堆栈4,.......并最终到达堆栈1, 数据从堆栈5上升到堆栈4,堆栈5为从有数据变为0,堆栈4从0变为之前堆栈5的数据,在4个扫描周期后,堆栈5的数据传到堆栈1,且此时堆栈2-5的数据都是零。
| 对比维度 | 整体迁移(同步移位) | 冒泡法(逐级上浮) | FIFO队列(先入先出) |
|---|---|---|---|
| 核心目的 | 物理位置同步:使每个工位的"数据"与"工件"的物理位置始终保持一致。 | 快速可靠接力:将一个关键数据(如车型)在毫秒级时间内从A点传递到B点,保证不丢失、不错位。 | 缓冲与排序:存储多个数据,解决上下游节拍差异,保证"先到先处理"的顺序。 |
| 数据结构 | 数组,每个索引对应一个固定工位。 | 固定深度的数组,数据"上浮"填补空白。 | 通常是循环队列,有头指针和尾指针。 |
| 数据移动方式 | 全体同步移动:一个触发信号(如步进),所有工位的数据同时向后(或向前)复制一位。 | 逐级填补空位:每个扫描周期,若上一级为空,则本级数据上浮,自身清零。 | 指针移动:入队时尾指针+1,出队时头指针+1,数据本身在内存中不动。 |
| 数据数量 | 每个工位都有独立数据(可以是同一车型,也可以是不同车型)。 | 同时只有一个有效数据在队列中移动(其他堆栈为空或瞬态)。 | 队列中可同时存在多个有效数据(例如10个待排序车身)。 |
| 空位处理 | 不允许有空位:每个工位都有数据(值为0表示无工件)。 | 主动填补:有空白立即填补,数据快速向上移动。 | 不填补:队列中间有空位(出队后),新数据只从队尾加入,不会跳到中间。 |
| 触发方式 | 通常由设备动作完成信号(如滚床到位、升降机到位)触发整体移位。 | 由下游数据被读取/清零触发上浮(如机器人涂胶完成)。 | 由入队条件 (新工件到达)和出队条件(下游取走)触发。 |
| 典型深度 | 等于工位数量(几十到上百)。 | 很小(3~6级)。 | 可大可小(几十到几千)。 |
| 应用场景 | 主线工位间车身数据跟踪(焊接、涂装、总装流水线)。 | PLC内部高可靠性短距信号接力(如跨程序块、跨扫描周期的关键数据)。 | 缓存区 (BDC车身库)、订单队列 (SPS)、排序区(涂装→总装排序)。 |
| 优缺点 | 优点:逻辑直观,与物理设备一一对应,便于调试。缺点:每个节拍都要搬运大量数据,效率较低。 | 优点:逻辑极简,响应快,可靠。缺点:不适合存储多个数据,深度小。 | 优点:存储效率高,适合大量数据缓存。缺点:逻辑稍复杂,需要管理指针,且不主动填补空 |
| 总结 | 对应模式 | 核心逻辑 |
|---|---|---|
| 整体前移,用FOR循环+指针,从i-1传到i,入口清零 | 整体迁移(同步移位) | 所有工位数据同步移动,适用于流水线 |
| 当前层为0,下层不为0,则下层上传并清零 | 冒泡法(逐级上浮) | 数据逐级"上浮"填补空位,适用于短距接力 |
| FIFO是大容量暂存,谁先进谁先出 | FIFO队列(先入先出) | 存储多个数据,适用于缓存区/排序区 |
| PLC也能做FIFO,但成百上千的数据更适合Java服务器 | FIFO的工程实现权衡 | PLC内存有限,大型队列由MES/服务器管理 |