介绍:
在包装行业,需要在确保最小重量的情况下将产品装箱,如图 01 所示,三种不同重量的产品,需要确保优化为最小 300g 的重量。n
一个解决这种问题的方法为:比较每种情况下的重量组合,通过比较这些结果来决定最终优化的解决方案。
编号 | 选择物品组合 | 重量(总重) | 结果 |
1 | A | 150g | <300g |
2 | B | 160g | <300g |
3 | B+A | 310g | >=300g (优化结果) |
4 | C | 170g | <300g |
5 | C+A | 320g | >=300g |
6 | C+B | 330g | >=300g |
7 | C+B+A | 480g | >=300g |
表 01 n
这些组合可以用二进制等式显示。第一位对应于产品 A,第二位对应于产品 B,第三位对应于产品 C。在此例中,序号 3 拥有最优的 310g 组合。组合“B+A”对应于二进制代码“011”。n
Combination o. |
Binary code | Result | ||
1 | 001 | A | ||
2 | 010 | B | ||
3 | 011 | B | A | |
4 | 100 | C | ||
5 | 101 | C | A | |
6 | 110 | C | B | |
7 | 111 | C | B | A |
表02 n
“BestWahl”(“最优选择”)下载拥有两个 S7-SCL 源程序可以实现上面显示的功能。在 OB1 中使用它们的背景数据块,分别调用功能 FB1(源文件“all combinations”)及 FB2(源文件“selected combinations”)。n
编号 | 功能块描述: |
1 | FB1(源文件“all combinations”) FB1 根据特定的最小重量,测试所有的组合并选择最优的组合。最多可以输入 32 个需要组合的值。FB1 的参数如下: n
图02 显示了变量表 VAT_1 的第一部分。它用来监视和控制 FB1。对应于图 01中的例子,参数“Ex1”.No_Measures 接收到数值 3(产品数量为3),参数 “Ex1”.Min_Weight 接收到数值 300(最小重量300g)。A,B,C 每种产品的重量按照二进制代码(表 02)被赋给参数 “Ex1”.Measures[0],“Ex1”.Measures[1]及 “Ex1”.Measures[2]。n 优化的总重(此处为310.0)由变量表第二部分的参数 “Ex1”.Best_Weight 输出。变量 “Ex1”.Best_Choice[0],对应于产品 A (= TRUE)变量 “Ex1”.Best_Choice[1] 对应于产品B (= TRUE )。n |
2 | FB2(源文件“selected combinations”)
如果考虑单元的最小重量,如下公式可以用来计算达到最小重量所需的最多单元数n
在本例中,组合的数量即可由 7 减少到 4。如果这些组合被分为一些产品组,不同于 FB1(源文件“all combinations”)测试所有组合,FB2 仅测试选择的组。n FB2参数如下: n
图04 显示了变量表VAT_2 的第一部分,它用来监控及控制FB2。参数 “Ex2”.No_Measures 接收数值 8 (产品数为 8 ),参数 “Ex2”.Min_Weight receives 接收数值 300(最小所需重量 300g)。8 种产品的重量通过参数 “Ex2”.Measures[0]至 “Ex2”.Measures[7]输入。n 在变量监控表的第二部分,优化总重(此处为300.0)通过参数 “Ex2”.Best_Weight 来输出。当组合的二进制代码输出时,参数 “Ex2”.Best_Choice[0] 及“Ex2”.Best_Choice[2]至 “Ex2”.Best_Choice[6] 为 TRUE。n |
表03 n
性能:
程序块的运行时间取决于组合的数量,此数量和产品数量的关系可表达为:n
- 组合数量 =2^ 产品数量- 1
因此产品数量的增长会严重影响运行时间。下表显示了在 CPU 315-2 PN/DP 使用 FB1 的运行时间与产品数量的关系。
FB1 | |
产品数量 | 运行时间 |
2 | 4 ms |
3 | 5 ms |
4 | 10 ms |
5 | 17 ms |
6 | 33 ms |
7 | 68 ms |
8 | 132 ms |
9 | 263 ms |
表 04 n
FB2 的运行时间取决于产品数量及产品分组。表 05 提供了不同分组情况下,FB1 及 FB2 的一个运行时间比较表
产品数量 | FB1 运行时间 | FB2 运行时间 | ||||
1至9个产品分组 | 4至9个产品分组 | 8个产品分组 | 8个产品分组 | 30个产品分组 | ||
10 | 525 ms | 369 ms | 305 ms | 24 ms | 9 ms | 369 ms |
表 05
参考于表 04 及 05,当产品数量比较少时,推荐使用 FB1。当产品数量增长后,FB1 的运行时间变长。所以当有 10 个产品时,推荐使用 FB2。通过产品分组,FB2 的运行时间显著变少。
下载:
附件“BestWahl.zip”包括一个上面描述的STEP7项目。将此文件复制到一个单独目录,并双击打开。这个 STEP7 v5.3 项目会自动解压缩所有的子目录。可以使用 SIMATIC Manager 来打开和测试解包的项目。
BestWahl.zip ( 61 KB )
运行及测试环境:
程序例子可以被SIMATIC S7-300, S7-400, C7和 WinAC 的 CPU 使用,下表列出了在生成本条目及校验功能的过程中使用的组件。
测试环境: | 版本: |
PC 平台 | Intel(R) Pentium(R) M processor 1.73 GHz |
PC 操作系统: | Windows XP Professional SP2 |
STEP 7: | V5.3 SP3 |
S7-SCL: | V5.3 SP1 |
S7-PLCSIM: | V5.3 SP1 |
表 06
关键词:
重量分配
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc336873.html