编写定制批分隔规则

注意: 关于创建定制规则所要求的步骤总结,请参见编写定制排产器规则。有关该主题中所述函数的详细信息,请参见排产自定义指南,该指南可从我们的技术支持网站下载。

“排产器”使用分割规则来定义到达作业分割进入批处理的方法。

批分割规则逻辑

在创建定制分割规则并编写相应的批分割函数前,应理解批分割函数使用的逻辑。当指定了批定义的作业到达工序时,即调用批分割函数。

调用批处理分割函数时,它将根据物料号、颜色等特性确定到达作业应进入的成形批处理。如果有其他作业等待被批处理,达到作业可与其结合。否则将创建一个新成形批处理。

命名函数

定制批分割函数可使用非标准用户可调用函数名的任何名称。

自变量


#include "factor.h"
FORMBAT *bsrl(ldp, batch)
LOAD *ldp;        /* pointer to the load */
BATCHDEF *batch;  /* pointer to the batch definition */

该函数接受两种公式,一个指向负荷(类型:LOAD *),一个指向批(类型:BATCHDEF *)。

返回值

该函数将返回作业应置入其中的成形批的指向,如果开始一个新的成形批(类型:FORMBAT *),应为空。

以下是基于物料的批分割函数的示例:


FORMBAT *bsrl (LOAD *ldp, BATCHDEF *batch)
/*-----------------------------------------------------------------
     Batch separation rule which separates arriving jobs into
     different batches based on the item number.
     ARGS:
       ldp - pointer to the arriving load (job)
       batch - pointer to the batch that this load will follow
     RETURNS: pointer to the forming batch
-----------------------------------------------------------------*/
{
     FORMBAT *fb;
     for ( fb = (FORMBAT *) csfsls(batch->btfmls);
           fb != NULL;
           fb = (FORMBAT *) csnxls((CSENTITY *) fb) )
     {
         /* Return this forming batch if its children have the same
            part as the load passed in, and the new quantity will be
            less than or equal to the maximum.  */
         if ((strcmp(fb->fbldp->loordp->orptpt->panum,
                     ldp->loordp->orptpt->panum) == 0) &&
             (fb->fbquant + sequfb(ldp, batch, batch->btqurl)
              <_ batch-="batch-">btmax))
         {
              Return(fb);
         }
     }
     /* return NULL if we couldn't find one */
     Return(NULL);
{
</_>

安装定制函数

要定制分割函数对“排产器”可用,必须调用函数 sedfsl 从 ucini1 函数将其“安装”。函数必须按以下顺序使用两个自变量:

  • 函数包括定制逻辑的批分割规则的数量。
  • 批分割函数的地址。

例如,要在规则位置 39 安装以上示例规则“bsrl”:


sedfsb (39, bsrl);
相关主题