某果仁公司APS+MES+WMS系统

我要开发同款
proginn21291207572023年02月25日
200阅读
所属分类 PC网站

作品详情

项目目标:APS排产+MES打标+WMS系统调度 AGV 搬运小车 进行成品仓储管理运行环境:Windows Server2019 + linux 子系统数据库:SQL server2008R2 + Redis6开发工具:Visual Studio2019项目架构:分布式架构功能模块:1、APS 排产模块2、APS 排产看板3、MES 生产打标软件+产线硬件采集4、WMS 仓储管理模块5、WMS 手持 PDA 进出仓功能模块6、WMS 仓位调度服务模块7、AGV 系统的信息对接模块个人负责模块内容:1、项目架构初步设计2、数据库初步设计3、项目全部模块软件开发的实现4、硬件采集通信对接主要用到的技术:ADO.NET、Linq、EF ORM 仓储模式、读写分离、分布式缓存、分布式锁,WebApi+JWT 认证,多线程线程池,消息队列中间件:Redis、RabbitMQ、Consul、Nginx、Ocelot、ELK 等分布式中间件项目难点或关键点:1、AGV 的调度方案。 问题1:大华 AGV 提供了 WebApi 端口进行点对点调度方式,但是同一列的仓位多个任务的调度很慢,需要等上一个任务搬起货物才开始第二个任务的 AGV 启动,时间较久。 问题2:跨楼层进出仓需要对接货物提升机。当从提升机出来多个货物的时候,货物靠里面的任务的 AGV 先到达提升机取走货物,造成任务与货物条码无法对应,而且提升机靠里面的任务通常放在目标仓位靠外的位置,会堵塞靠里面的仓位任务的路径,导致放最里面的任务执行失败 解决方式:通过设置每一列列头为等待点,让 AGV 在等待点时触发 WebApi 请求,获取到当前这一列的第一个进仓位或第一个出货位作为目标点。利用锁的原理,多个 AGV 进行抢锁,当某个 AGV 首先到达该列第一个的锁,就能获得第一个目标点。2、防止多线程同时操作同一个仓位或列 首先在进出仓任务生成目标仓位与起点仓位的时候,需要先对仓位的列进行 Redis 分布式锁,不让其他线程同时操作同一列的数据造成数据错乱,然后再对需要的仓位在 SQL SERVER 中进行预锁定操作,记录锁定的时间与批次,操作完成后进行解锁。
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论