国产堆垛机建议
操控过不同型号的堆垛机,如同交过不同类型的女朋友;粗略了解了一些各种的习性,略做总结如下:
1.按国家分: 国产的,进口的(细分:德系,日系)
2.按控制方式分:PLC的(细分:西门子,三菱),单片机的
3.按定位方式分: 认址片定位,激光定位,条码带定位,混合定位(水平激光+垂直条码带最为常见);
4.按任务控制方式分:from,to 一步控制; from,to 分两步控制;
5.按通讯协议方式分: PLC内部通讯的,自定义协议Socket通讯的;
6.按有无断电记忆分;
7.按有无初始化分;
下面从这6个角度的区分,谈谈自己的一些浅见:
1.按国家分: 国产的,进口的(细分:德系,日系)
国产不如进口的地方:
1.运行的流畅性不够,启动停止都不够流畅,进口的这块相对好些;
一次无意中看见某款进口料箱堆垛机运行的时候,像风一样飞驰,启动停止也很灵敏,感觉确实很高大上;
而且速度控制上,应该也是有讲究的,堆垛机根据路程的远近,自己控制速度,如果比较远,会明显分低速和高速阶段;
2.速度的智能性控制更好
某些进口堆垛机会根据繁忙情况来控制速度,如果不忙,就走普通速度,如果很忙,就走高速;
判断的原则大概是:是否有连续作业,比如堆垛机刚完成一个 任务,5秒内又收到新任务,可能这时候,它就认为是繁忙状态,自动走高速;
为什么不一直走高速,可能高速费电一下,如果不是很忙,尽量走低速;而且低速故障率要更小一些;
当然,这个速度的控制,很多进口堆垛机也开放给上位调度系统(这正是我想要的,上位才真正清楚该堆垛机还有多少待执行的任务);
这个参数一般有3个值 : 0-自动 1-高速 2-低速 ;其中 自动 表示堆垛机自己判断; 高速,低速 是由上位系统提供;
这个功能未必真的多好,不过确实反应了老外的工匠精神,很细腻;
2.按控制方式分:PLC的(细分:西门子,三菱),单片机的
市场上国产的和欧系的以西门子PLC为主;日系以三菱PLC为主; 部分国外堆垛机以单片机来控制;
个人感觉还时以plc控制,成本更低; 因为用单片机控制,考虑的问题太多;技术不过硬,很难做好;
当然如果单片机控制,肯定不是以前的MCS-51,至少也是ARM ,DSP之类,也可能是ARM+DSP混合控制;
不过单片机开发,未必就想象的那么难,现在嵌入式也是带操作系统的,程序可都是高级语言,所以开发起来也未必非常困难,估计难点是外围电路设计;
个人认为,那些用单片机开发的,可能是更多的为了考虑技术保密性,真正成本上节约不了多少;
至于两个经典的PLC, 西门子和三菱,用哪个更好,我不专业,但是跟电气工程师聊过一些;
西门子的优点:1.对于复杂一些的逻辑,LAD梯行图相对单薄,一般都辅助STL指令表, 很多老资格的电气工程师甚至完全使用STL;
STL类似汇编,从我的角度来看,感觉太低级,复杂的逻辑用汇编实现,研发效率可能比较低下;
我看老外开发堆垛机,很多地方用到了SCL, 语法和高级语言的PASCAL基本完全一样;
而且SCL可以在多种不同的PLC上通用,比如ABB,西门子可以共用相同的程序,这个还是挺好的,感觉以后SCL应该能普及;
2.背景块的使用,而且可以嵌套,这优点类似高级语言中的类的封装的感觉,不过控制不好,背景块也会让程序僵化不便扩展;
三菱的优点: 1.变址非常方便,变址是一个非常普遍的运作环节,据说西门子这块很麻烦;总之,三菱比西门子跟轻量级,如果不是太复杂的,往往三菱的开发周期更短;
3.按定位方式分: 认址片定位,激光定位,条码带定位,混合定位(水平激光+垂直条码带最为常见);
看过这么多堆垛机,感觉水平激光+垂直条码带 是看到的最多的控制方式;
据说,条码带精度最高,可达到1毫米的误差范围,激光在3毫米左右;
认址片定位,有个麻烦的地方,就是出故障恢复的时候,常常要原点复位,这是让我感觉有点不太能接受的地方,
这地方有两个弊病:
1.客户很忙的现场,原点复位很费时间;看着让人干着急;现在是体验为王的时代;好的产品体验很重要;
2.重新定位的时候,之前上位下发的指令很可能就自动清除,需要上位重新给新指令,增加了上位的复杂度;
我看过一款国外的堆垛机,虽然也是认址片地位,但是它尽可能的做到:不做原点复位;
判断的原则是:如果在离线的情况下,堆垛机被插上手动盒控制过了,那么所有信息清除,原点复位重做;
否则即便是离线操作情况下,堆垛机时刻记忆着自己的位置和状态,一旦打成在线,马上就能继续执行;
这一点也反映了老外对细节体验的把控;
当然,我还见过一个跟高大上的定位控制方式,就是:激光定位+认址片;
具体是这样的:水平方向上,大的定位是:激光定位; 不过 堆垛机下方有个光电感应装置,每列货架最下面的横梁上有个小圆点反光板,
每次堆垛机到位停止的时候,要定位到横梁上的这个小光点,这样就双保险了,而且这个圆点反光板貌似成本也不高;
当然这个小圆点定位,本质来说,是一个精度的定位,本质上不是认址片的计数定位;
4.按任务控制方式分:from,to 一步控制; from,to 分两步控制;
两种方式都用过,主流是前者,部分德系的用后面一种方式;
其实,对于上位,怎么控制都无所谓,不过如果下位,把from,to 分两步控制,可能程序会更简化,稳定性更强;
当然,为什么出现后者from,to两步控制的方式,最主要的原因是:双叉,双伸的堆垛机,取货,放货,是随机的;
可能 取货1->取货2->放货1->放货2 ;也可能是 取货1->取货2->放货2->放货1 ;就看堆垛机取放货在不在同一侧;
而且取货放货的位置也是可能不一样的,所以这种情况,一口气给堆垛机发完成的from,to就不太现实了;
就我使用下来,感觉分段控制,异常处理起来更灵活一些;
5.按通讯协议方式分:PLC内部通讯的,自定义协议Socket通讯的;
前者偏国内,后者偏国外;
个人喜欢直接访问plc内部点交互,缺点是,堆垛机的内部数据完全原始的开放给上位,如果上位乱读乱写,可能会下位搞乱;
自定义协议,是下位自己做了封装,再和上位交互;这样上位就只能通过既定的格式访问和交互,这样临时扩展功能就不太方便;
前者类似于做外科手术,直接看到内部;后者是给了既定通道,不能直接看到内部;
理论上,后者严谨,但对下位的要求比较高,前者开发成本低,但是有控制被上位搞乱的风险;
不管用何种控制方式,协议要尽量简化,国外的协议相对严谨些;国内的就五花八门,
如工作模式,工作状态,工作阶段,操作模式;搞定太复杂;从我的角度都想简化;
(缺图)
6.按有无断电记忆分;
从上位的角度看,当然希望断电记忆的好,这样只要指令发给下位,就不用管了,只要等下位的完成报告了;
如果下位不记忆,那就要任务再送,或任务取消,有些地方需要人工干预,确实给上位控制带来了麻烦;
每个厂家都不一样,国内外都有记忆和不记忆两种;
这个仁者见仁,不过话又说回来,为什么要断电呢? 所以在设计的时候,对付大部分异常,离线操作就行了,
不到万不得已,不要轻易断电清除数据;
7.按有无初始化分;
早期的堆垛机,一启动的时候,要和上位做很多次握手;比如:
下位说: 我要启动了,你允许吗?
上位说: 行吧,那你启动吧。
下位说: 那我现在要原点复位了,你同意吗?
上位说: 行吧,那你复位吧。
下位说 : 我原点复位好了,请问你有上次未做完的任务吗?
上位说: 没有,你继续吧
下位说 : 那我就通知你 我现在要变成作状态了,
上位说: 好吧,我知道了...
婆婆妈妈,烦死了; 以前做过一个堆垛机控制,启动的时候,要交互9次;搞得我现在还晕晕乎乎,好在现在的堆垛机很少这样做了;
貌似严谨,但是浪费精力,增加无谓的复杂度;就像现在有些国产堆垛机,要用一个点,来做CRC或和校验;
现在不是串口通讯时代;而且是直接内部点循环访问的,这些貌似严谨的地方,其实都有点画蛇添足;
说了这么多,对于国产堆垛机的研发,有什么建议呢?
简单想法:
1.单任务控制,不需要一口气接受上位多条任务,然后依次执行,这是个很糟糕的设计,上位肯定是一条条控制的;
如果取货 放货分开做,更简单稳定,就可以让上位分开调度;
2. 触摸屏做的更人性化,比如:任务号 可以 直接显示成 托盘号,是不是更让操作员明白;
3.通讯协议的简化,很多人设计的都有重复或啰嗦的地方;
4.减少掉电处理异常的概率,这样就和上位断开通讯,要让上位做通讯断开自动重连,而且任务信息可能也会丢失,增加上位的复杂度;
其他方便,就是我不熟悉的地方,比如:
1.货叉的选型;
2.堆垛机自学习的控制;
具体化的建议:
1.简化通讯协议
1.1.取消启动初始化,简化双方对接;
1.2.简化握手,建议取消两次握手,状态,from,to 保留到任务完成再清除,让协议做静态的所见所得,而不用动态交互清除;
1.3.取消堆垛机多任务处理,确保在空闲时,堆垛机才可以接受上位任务;简化控制;
1.4.可以考虑简化异常代码,把原始异常点开放给上位,而不是电控加工成4位编号后给,这样简化了双方的翻译过程(追求最原始的简化);而且堆垛机可能有多个异常同时生成,
1.5.WCS,PC数据块未必要独立,可以合在一起;简化控制;可以A方生成,B方清除;简化了各种双方数据点的互相拷贝;
1.6.可以考虑去掉模式信号,上位提供from,to即可;可以不用提供到底是入,出,站台间移动,货位间移动信号;堆垛机运作只需要from,to这样的物理信号即可,作业模式可有可无;
总结:使用奥卡姆剃刀原理,若无必要,勿增实体。追求不断的简化;多用物理信号,少用加工信号;对电控,对软件都降低要求;
2.完善通讯协议(主要考虑人性化的触屏提示 和逻辑异常的判断 )
2.1. 可以考虑提供一个PLC块给上位使用,目的: 上位可以自由发挥“人性化”的提醒:把文字打在堆垛机的触摸屏上;每个项目都可以根据客户要求做方便的定制,
最关键的是,降低电控的工作量,它可以不用设计触摸屏上对运作任务的提示
(电控只有 from,to信号;而上位可以提供要丰富很多:可以提示:物料号,数量,进度等;更重要的,如果需要在电脑上矫正的,可以再触屏上文字提醒操作员)
2.2. 我们堆垛机对物理异常控制的比较好,但是一些逻辑异常,它判断不了,或者断电后,它无法判断当时状况;所以我希望电控提供一个报警信号,给上位专用,
只要上位给这个信号设置为1,就报警;比如货叉上有一个莫名其妙的托盘,上位就可以通过这个信号点,让堆垛机报警;
2.3把速度等参数开放给上位,这样上位根据货位的形状,任务繁忙情况,来控制堆垛机走不同的速度;
总结:对人性化的追求,尽可能交给上位,让电控把精力从这里解放,触摸的部分显示交给上位处理;
3.上位自身控制的简化
3.1 简化入库站台调度的控制,以站台跟踪的条码为准,弱化任务的位置的作用(因为时序的问题,有时候任务的托盘位置可能不准)
3.2 简化入库分配的控制,去掉预先分配机制,提高异常处理的便捷性;
3.3 简化出库站台信号交互的处理,根据出库的有货信号 和 堆垛机的交出完毕信号,主动提供输送机条码,而不是由输送机电控去主动请求,时序就不需要电控去掌控了;
总结:简化堆垛机和输送机衔接处理;
4.对高低货位的处理建议(分段控制):
4.1我们很多项目都是高低货位(比如高中低三种类型),入库的时候,有很多框架检测(至少3组高中低光电),到了堆垛机上,堆垛机自身货叉也要检测高中低;
我觉得这样不但浪费,而且对机械和电控要求都搞,机械上要严格确保尺寸框架的位置和堆垛机货叉的位置吻合,电控上还要采样并准确的提供给上位,
而且因为框架未必和BCR位置在一起,电控还要做一段跟踪给上位,搞不好还跟踪错了;
具体控制如下:
1.托盘到达堆垛机入口,这时候谁都不知道该托盘的高度;
2.上位通知堆垛机取货
3.堆垛机取货完成,通过货叉上的多组光电判断高度级别,并把高度级别(高中低)反馈给上位;
4.上位根据这个高度级别,再分配货位,通知堆垛机放货;
说白了,就是把堆垛机的动作拆分成 取货,放货两个,让上位做更细致的控制,让电控调度更加简化;
总结:分段控制,可以更简化电控的逻辑,让上位更细致的更密集的做导航调整和跟踪;对于高度不一致,双叉双伸比较方便控制;
5.对电控自身的建议
5.1 减低原点复位的概率,现在是体验为王的时代;稳定性是第一位的,但不能一切问题都以稳定性作为挡箭牌;
5.2 多了解同行对堆垛机的控制思路,有些小的细节也许可以借鉴;
5.3 十多年前老程序,可以考虑保留,但可以考虑做大的瘦身手术;或者重新架构;可能很大程度的简化自身和对上位的对接;
5.4 对速度做更细腻的控制,比如无货移动中和有货移动时,速度控制可能是不一样的;
5.5 降低断电复位的概率,一旦断电,上位就和下位通讯断开,对上位控制还是有点麻烦的;
暂无评论