긴 시간 동안 5초 간격으로 Historian 데이터를 추출하여 많은 행의 데이터 테이블을 만들었습니다. 처음에 이 데이터 테이블에는 두 개의 열이 있었습니다(이 테이블을 "2205 - 2209 PD3102"라고 하고 dtPDTag로 참조함).
1. 날짜/시간 스탬프
2. 데이터 값(히스토리안 태그용)
다른 데이터 테이블(아래 JSL 구문의 dt)에는 PO 식별자와 레시피 기호가 있는 제작의 시작 및 종료 시간이 있습니다. (따라서 네 개의 열: 1. 시작 날짜/시간, 2. 종료 날짜/시간, 3. PO 번호, 4. 레시피 기호.)
dtPDTag에서 PO 번호와 레시피 기호(날짜/시간 스탬프 기준)를 추가하려는 두 개의 열(PO 및 기호)을 추가했습니다.이 작업을 수행하는 데 사용한 JSL 코드는 아래에 있지만 이 작업을 관리하는 데 매우 비효율적인 방법이라고 가정합니다.(내 컴퓨터는 요구 사항에 너무 건전하게 응답하지 않는 것 같습니다!) 앞으로 그러한 작업에 접근할 수 있는 더 나은/더 효과적인 방법을 듣는 것이 좋을 것입니다.
Names Default To Here(1);
dt = Current Data Table();
nr = N Rows(dt); // show(nr);
lstPO = dt:PO << Get Values;
lstSymbol = dt:Symbol << Get Values;
lstStartTime = dt:StartTime << Get Values;
lstEndTime = dt:EndTime << Get Values; // show(lstPO,lstSymbol,lstStartTime,lstEndTime);
dtPDTag = data Table( "2205 - 2209 PD3102" );
nrPD = N Rows(dtPDTag); // show(nrPD);
For(j=1,j<=nr,j++,
_start = lstStartTime[j]; _end = lstEndTime[j]; // show(_start,_end);
_PO =lstPO[j]; _symbol = lstSymbol[j];
For(i=1,i<=nrPD,i++,
If( ( dtPDTag:DateTime[i] > lstStartTime[j] ) & ( dtPDTag:DateTime[i] < lstEndTime[j] ),
dtPDTag:PO[i] = lstPO[j];
dtPDTag:Symbol[i] = lstSymbol[j];
,
);
);
);