编写定制批分隔规则
“排产器”使用分割规则来定义到达作业分割进入批处理的方法。
批分割规则逻辑
在创建定制分割规则并编写相应的批分割函数前,应理解批分割函数使用的逻辑。当指定了批定义的作业到达工序时,即调用批分割函数。
调用批处理分割函数时,它将根据物料号、颜色等特性确定到达作业应进入的成形批处理。如果有其他作业等待被批处理,达到作业可与其结合。否则将创建一个新成形批处理。
命名函数
定制批分割函数可使用非标准用户可调用函数名的任何名称。
自变量
#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);