一、工艺介绍

市面上的智能车库大部分都建立在事业单位或者大型写字楼旁边,那么这两个地方有一个共同点—就是车主们基本上是在上班的时候存车多,下班的时候取车多,这就意味着车库的存取车模式也要适应使用者的上下班规律。
举个例子
1、某个写字楼早上9点上班,那么8:00—-9:30 这个时间段为存车高峰期,与此同时车库或者搬运器就应该优先执行存车任务(存车优先模式);
2、该写字楼下午5点30下班,那么17:00—18:30这个时间段为取车高峰期,与此同时车库或者搬运器应该优先执行取车任务(取车优先模式);
3、当天除开上述两个时间段外,既不需要优先存车也不需要优先取车,车库或者搬运器则根据先来后到的规则进行存取车任务(普通模式);
上面描述的这个存取车优先处理就是一个标准的工艺,而如何在PLC上面实现这个工艺,我们就需要用到堆栈技巧

二、程序简介

2.1 在PLC上导入时间

方式1:选择在PG/PC上调用时间,并且将时间读取出去
应用实例-立体车库 - 图1
方式2:通过上位系统给定PLC时间
通过设定的存取车上下班时间以及当前时间的对比来分析出当前模式为何种模式,然后通过当前的模式来对所有任务进行优先级的定义和分类
应用实例-立体车库 - 图2

2.2 调用功能块进行任务处理

处理完优先级后,调用功能块,对任务进行处理
应用实例-立体车库 - 图3

2.3 测试结果

2.3.1 任务管理测试

假设当前模式为3(取车优先模式),然后我们一次性输入7个类型随机的任务A11111—A11117

应用实例-立体车库 - 图4
在取车优先的情况下,这7个任务会按照会员卡—取车—存车来进行排序。
在这个任务管理规则下,我们不仅要考虑到任务的优先性,还要考虑到所有任务的执行权,比如A11111/A11114这两个存车任务,虽然现在模式为取车优先,但是该它们执行的时候他们依然享有执行权,换句话说,我可以给你们插队,但是你们不能一直插我的队。
下面的例图,我假设输出5次任务,只留下A11111/A11114两个任务
应用实例-立体车库 - 图5
我再输入7个任务,任务类型依然随机,结果是A11111/A11114依旧优先
应用实例-立体车库 - 图6
这样就能保证所有任务的执行顺序,拿捏住所有待执行任务的平衡点。

2.3.2 上下班模式处理测试

我们先建立四个变量,分别为“存/取车优先时间设定”,数据类型可以选择UDT,例如下图,根据当前时间我分别设定16:00—17:30和16:00—18:00为存/取车优先时间

应用实例-立体车库 - 图7

应用实例-立体车库 - 图8

应用实例-立体车库 - 图9

应用实例-立体车库 - 图10
因为时间是以接口模式给入FB块。所以说,时间设定值既可以编程者自行设定(不允许其他人员更改),也可以在触摸屏上添加设定(维护人员自行修改),这个可以根据现场情况来进行选择。在这个基础上,我们还可以将节假日也添加上去(当今日为节假日时,不启用存/取优先策略,但是会员卡优先性不变)。
应用实例-立体车库 - 图11

三、结论

而在上述的FB块中,我们就从常用的编程设计三个角度来分析它的优势
从编程者角度:编程者只需要调用该功能块以及配置参数即可使用,所有的接口都已经标准化,保证花最少时间来了解它的用法。
从维护人员角度:能够直观的对当前任务进行查看或者操作。
从业主的角度:优化了存取车策略,更方便使用,而且添加了该功能后,相信会员卡应该会卖得更好。
总的来说,利用堆栈原理就可以在车库存取车任务管理上实现很多功能,这些功能不仅提升了设备效率,也提高了系统的可靠性。