设计模式——命令模式实战之WCS详细设计与实现(三)

WCS仓库(分拣)控制系统 案例介绍 一、WCS仓库控制系统是什么 WCS全称是Warehouse Control System,中文意思是仓库控制系统。也叫仓库分拣控制系统。是介于WMS系统和PLC系统之间的一层管理控制系统。可以协调各种物流设备,如输送机、码垛机、穿梭车以及机器人、引导车等物流设备之间的运行。主要实现对各种设备系统接口的集成、统一调度和监控。 二、WCS仓库控制系统流程介绍 自动仓储系统大致可分为三个层次,最上层是... 阅读详情

在这里插入图片描述

上一篇设计模式——命令模式实战之WCS概要设计(三)基于WCS的逻辑进行了简单抽象,并基于命令模式进行了概要设计。接下来,基于实际仓内情况,进行比较详细的设计。

基础信息

在这里插入图片描述

从上图仓库内的情况很复杂,在进行概要设计的时候,需要进行高度的抽象,在详细设计的时候,需要对很多细节进行明确的设计和实现。

这里只基于仓库中的两种设备进行抽象,对场景进行一定的抽象。具体场景如下:

  • 五条巷道,一条巷道里面有一台堆垛机(Stacker)
  • 每条巷道口有接驳口,要放入当前巷道的货物由输送线(ConveyorLine)送至接驳口

这里涉及到两种设备Stacker和ConveyorLine,两种设备的关系是任务执行过程中的两个阶段。文章重点对Stacker进行设计。

Stacker 控制详细设计

更直观的看一下堆垛机。
在这里插入图片描述
图中就是堆垛机,底部是在轨道上的,带有可上下移动并且可以内外伸缩的叉子。

功能点

  1. 堆垛机的健康状态监控
    监控堆垛机的健康状态,确保堆垛机一直在线,对上游的分货位进行通知等逻辑
  2. 堆垛机的工作线程的健康状态
    堆垛机获取到执行命令以后,会有一个执行命令的执行中的一个时间段,需要对工作线程保持监控,如果线程发生异常,需要即时重建工作线程,保证流水线的正常运转。
  3. 即时获取命令去执行
    工作线程要及时获取,待执行的任务或命令,去执行。保证任务被读取到以后,可以准确及时执行。
  4. 即时反馈命令执行结果
    堆垛机执行完以后,需要及时的反馈执行结果,给上游业务逻辑,更新进数据库;以便后续对异常任务人工修复。

分析上述功能点以后,第一思路产生的是实现所有功能,需要多线程、定时任务、阻塞队列、锁 等Java技术实现。

基于队列模型实现

代码流程 如图:
在这里插入图片描述

从流程中可以看到核心控制命令顺序和并发性是通过阻塞队列完成的。阻塞队列可以实现任务的有序性和工作线程的阻塞监听。
接下来详细介绍关键类的实现:
堆垛机的实例

// 存放堆垛机实例,
    private Map<String/*stacker id*/, Stacker> stackerMap=new HashMap<>();

使用map保存堆垛机的实例,key为堆垛机的id,值为堆垛机实例。

任务队列的声明

	// 任务队列
    private Map<String/*stacker id*/, LinkedBlockingQueue<StackerTask>> taskQueueMap =new HashMap<>();

使用map声明任务队列,key为堆垛机的id,值为此堆垛机的任务队列,这里使用阻塞队列,工作线程可以利用阻塞队列的阻塞等待特性,实现监听。

堆垛机工作线程监听阻塞队列的核心实现如下 :

Thread thread = new Thread(new Runnable() {
   
   
            @Override
            public void run() {
   
   
                LinkedBlockingQueue<StackerTask> q = taskQueueMap.get(stacker.getId());
                // 阻塞等待任务
                while (q.peek() != null) {
   
   
                    StackerTask task = q.poll();
                    // 执行任务
                    stacker.action(task, taskCallbackMap.get(task.getTaskId()));
                }
            }
        }, "stacker-"+stacker.getId());

堆垛机的监控实现

	if(healthCheckLock.isLocked()){
   
   
	   
设计模式——命令模式实战之WCS概要设计(二) WCS中的硬件控制概要设计 阅读详情

相关推荐

仓储控制系统(WCS)设计

WCS系统设计方法

cetclyb的博客 2万+

设计模式-命令模式实战之WCS核心控制重构(四)

基于命令模式实现的硬件控制框架,解决命令的可靠执行和顺序执行,以及横向扩展等

FF-ZERO 1438

【笔记篇】11仓管系统WCS系统——之《实战供应链》

仓库管理系统之自动化设备控制系统(WCS)

两条线-twolines 1680

提示词工程的几个参数

低 temperature + 低 top-p:输出最稳定、最可靠,适合需要准确性和一致性的场景。高 temperature + 高 top-p:输出最多样化、最富有创意,适合需要灵感和探索的场景。Max Length:您可以通过调整max length来控制大模型生成的 token 数。指定 Max Length 有助于防止大模型生成冗长或不相关的响应并控制成本。是一个字符串,可以阻止模型生成 token,指定是控制大模型响应长度和结构的另一种方法。例如,您可以通过添加 “11” 作为。

weixin_44212787的博客 1829

Python 实战:高效绕过 reCAPTCHA v3 的自动化策略

本文深入探讨了使用Python高效绕过reCAPTCHA v3验证的实战策略。文章首先解析了reCAPTCHA v3无感验证的评分机制,随后详细介绍了两种核心解决方案:一是利用CapSolver等专业API服务直接获取有效token,二是通过Playwright模拟真人浏览器行为以提升评分。文中提供了从定位关键参数到代码实现的完整流程,并强调了合规操作与请求频率控制的重要性,为自动化开发者提供了切实可行的技术指南。

weixin_29057065的博客 491

mfcc总结,这个mel三角滤波器分组到底是如何起作用的呢?

先看fft频谱图(这是4096字节取样fft计算,横轴频率是从0到512,后边意义不大,未取,纵轴是振幅),那些我随便画的蓝色线,你有什么联想?: 再看,这绿色线,是否有一种上升后,便逐渐式微的感觉,都是三角形的,这或许也是mel当初和绝大多数人看到的: 如果在振幅上加上一条限制的黑线(振幅门槛限制),黑色线以下很多频率就没有意义了,你看,有用的频率连一半(512/2=256)都占不到...

ganggangwawa的博客 9911

python + QXDM5高通平台通过自动化截取log方法及代码

python + QXDM5高通平台通过自动化截取log方法及代码

dgzj2001的博客 1822

不修改MMDetection源码使用自定义数据和模型

以目标检测为例,用非侵入式的模型和MMDetection数据的方法进行配置。也就是不改动MMDetection的任何源码或目录的条件下,使用自定义数据训练自定义模型。

Dlite的技术笔记 1344

闲鱼虚拟商品自动发货神器XianYuAutoDeliveryX:从配置到对接大模型的完整指南

本文提供了一份关于闲鱼虚拟商品自动发货神器XianYuAutoDeliveryX的完整配置与实战指南。详细介绍了从环境搭建、账号安全配置到核心自动化流程的设置,并重点讲解了如何对接大语言模型API,实现智能对话回复,从而构建一套无人值守的闲鱼店铺自动化运营系统。

gray5的博客 1378

STM32独立实现CANOpen主机功能:从零构建轻量级控制方案

本文详细介绍了如何在STM32上不依赖CanFestival库,从零构建一个轻量级的CANOpen主机方案。文章深入剖析了CANOpen主机的三大核心功能——NMT网络管理、SDO参数配置与PDO过程数据交换,并提供了从硬件准备、驱动层构建到协议实现的完整代码实战。该方案代码精简,资源占用低,特别适合在资源受限的STM32平台上实现工业控制、电机驱动等场景的稳定通信。

potato的博客 1072

[Python图像处理] 十.形态学之图像顶帽运算和黑帽运算

数学形态学(Mathematical morphology)是一门建立在格论和拓扑学基础之上的图像分析学科,是数学形态学图像处理的基本理论。其基本的运算包括:腐蚀和膨胀、开运算和闭运算、骨架抽取、极限腐蚀、击中击不中变换、形态学梯度、Top-hat变换、颗粒分析、流域变换等。本篇文章主要讲解Python调用OpenCV实现图像形态学转化,包括图像顶帽运算和图像黑帽运算,基础性知识希望对您有所帮助。

杨秀璋的专栏 1万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

上一篇: 环境快速配置
下一篇: shell 截断字符串
五之
博客等级 码龄15年 257粉丝 28原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五之

真实案例以及商业项目技术

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值