DPM 시작하기 > 데이터 자동화 설정
데이터 자동화 설정
DPM 자동화 통합을 사용하면 연결된 페이스메이커의 데이터를 DPM에서 거의 실시간으로 수신할 수 있습니다. 페이스메이커는 작업 센터에 대한 생산 속도를 설정하는 작업 단위입니다. DPM 자동화 통합은 작업 지시서 변경(생산 시작, 생산 중지 또는 작업 지시서 변경), 생산 및 스크랩 개수, DPM에서 기계어 코드가 이유 코드에 매핑되어 발생하는 가용성 이벤트를 지원합니다. 연결된 페이스메이커에서 데이터를 수신하면 ThingWorx에서 속성 변경이 발생합니다. 양호 품질 데이터가 있는 모든 속성 변경은 가치 스트림에 저장됩니다. 이러한 트랜잭션은 5분 간격으로 시간순으로 읽어들여지고 DPM에서 해당하는 이벤트 테이블에 기록됩니다.
예를 들어, 모든 데이터 자동화 속성이 구성되면 DPM은 작업 지시서에 대해 생산을 시작하는 데이터를 수신할 수 있습니다. 작업 지시서가 생산 중인 동안, 데이터를 수신하여 작업 지시서에 대한 생산 개수 및 스크랩 개수를 추가하고, 고장 또는 정전과 같은 기계의 가동 중지 시간 이벤트를 기록하고, 기계가 실행 상태로 돌아갈 시점을 기록할 수 있습니다. 그러면 DPM은 첫 번째 작업 지시서를 완료하고 다음 작업 지시서에서 생산을 시작하는 데이터를 수신할 수 있습니다.
시스템이 15분 미만 동안 연결 해제 상태이면 해당 시간 동안 발생한 이벤트가 캡처됩니다. 시스템이 15분 넘게 연결 해제 상태이면 15분을 경과한 이벤트가 무시됩니다. 이는 작업자가 해당 시간에 대한 데이터를 수동으로 입력했을 수 있기 때문에 데이터의 중복을 피하기 위한 것입니다. 자세한 내용은 수동 데이터 입력 및 자동화된 데이터 입력를 참조하십시오.
DPM에 대한 데이터 자동화를 설정하려면 다음 단계를 완료하십시오.
1. 데이터 소스를 설치하고 ThingWorx에 연결합니다.
Kepware에 대한 자세한 내용은 KEPServerEX Version 6 Install Guide(KEPServerEx 버전 6 설치 안내서)를 참조하십시오.
Azure IoT Hub에 대한 자세한 내용은 Azure IoT Hub Connector Help Center를 참조하십시오.
2. ThingWorx Composer에서 산업 연결을 생성하거나 사용합니다. 새 산업 연결을 생성하려면 IndustrialGateway 사물 템플릿을 기본 사물 템플릿으로 사용하여 새 사물을 작성합니다.
3. 데이터 자동화는 각 작업 센터에 대한 페이스메이커에서 구성할 수 있습니다. 다른 장비 유형(엔터프라이즈, 지역, 사이트, 영역 또는 작업 센터)은 자동화할 수 없습니다.
페이스메이커에 대한 작업 단위 사물에서 다음 단계를 완료하십시오.
a. 구현된 형태 필드에서 다음 사물 형태를 추가합니다.
PTC.OperationKPI.AutomationEventsModelLogic_TS
IndustrialThingShape
b. 가치 스트림 필드를 PTC.OperationKPI.Automation_VS로 설정합니다.
c. 속성 및 경고에서 IndustrialThing 속성을 2단계의 산업 연결로 설정합니다.
d. 사용하려는 데이터 자동화 활동에 대한 속성을 설정합니다. 이러한 각 속성에 대한 정보는 다음과 같은 연결된 섹션에서 제공됩니다.
e. 저장을 클릭하여 변경 내용을 작업 단위 사물에 저장합니다.
4. 자동화하려는 각 페이스메이커에 대해 3단계를 반복합니다.
5. PTC.OperationKPI.AutomationEventProcessor_TI 타이머로 이동합니다. 활성화됨 확인란을 선택한 다음 저장을 클릭합니다. 이렇게 하면 데이터 자동화를 위한 일괄 처리가 시작됩니다.
기존 작업 지시서 시작
데이터 자동화를 사용하여 기존 작업 지시서를 시작하려면 ThingWorx Composer에서 다음 단계를 완료하십시오.
1. 페이스메이커에 대한 작업 단위 사물의 속성 및 경고에서 PTCJobOrderID 속성을 해당 태그에 바인딩합니다. 이 속성은 STRING 값을 허용합니다.
2. 저장을 클릭하여 변경 내용을 사물에 저장합니다.
PTCJobOrderID 속성 값이 변경될 때마다 지정된 작업 지시서가 시작됩니다. 속성이 변경될 때 작업 지시서가 현재 실행 중인 경우 해당 작업 지시서는 완료되고 새 작업 지시서가 시작됩니다. 해당 ID를 가진 작업 지시서가 없으면 작업자에게 오류가 표시됩니다. 작업 지시서는 관리작업 지시서 페이지에서 작성됩니다. 자세한 내용은 작업 지시서 작성를 참조하십시오.
PTCJobOrderID 속성이 0 값(PTCJobOrderIDNullValue 속성의 기본값)을 수신하면 현재 실행 중인 작업 지시서가 완료되고 새 작업 지시서가 시작되지 않습니다.
작업자가 PTCJobOrderID 속성 변경에 대한 타임스탬프 이후에 한 번에 생산을 시작하거나 생산을 중지하여 생산 대시보드에서 작업 지시서 상태를 수동으로 변경하면 속성 변경이 무시되고 작업자에게 오류가 표시됩니다. 자동화된 이벤트는 발생 후 처리되며, 작업자가 장비에서 어떤 작업이 발생하고 있는지 실시간으로 인식하고 있는 것으로 간주됩니다.
지정된 재료를 기반으로 작업 지시서 작성
재료 실행이라고도 하는 데이터 자동화를 사용하여 지정된 재료를 기반으로 작업 지시서를 작성하려면 ThingWorx Composer에서 다음 단계를 완료하십시오.
1. 페이스메이커에 대한 작업 단위 사물의 속성 및 경고에서 PTCMaterialMasterID 속성을 해당 태그에 바인딩합니다. 이 속성은 STRING 값을 허용합니다.
2. 저장을 클릭하여 변경 내용을 사물에 저장합니다.
PTCMaterialMasterID 속성 값이 변경될 때마다 기본 목표 수량이 1인 지정된 재료에 대해 작업 지시서가 작성됩니다. 이 속성이 변경될 때 작업 지시서가 현재 실행 중인 경우 해당 작업 지시서는 완료되고 새로 작성된 작업 지시서가 시작됩니다. 재료 마스터 ID와 일치하는 재료가 없으면 오류가 발생합니다.
작업자가 PTCMaterialMasterID 속성 변경에 대한 타임스탬프 이후에 한 번에 생산을 시작하거나 생산을 중지하여 생산 대시보드에서 작업 지시서 상태를 수동으로 변경하면 속성 변경이 무시되고 작업자에게 오류가 표시됩니다. 자동화된 이벤트는 발생 후 처리되며, 작업자가 장비에서 어떤 작업이 발생하고 있는지 실시간으로 인식하고 있는 것으로 간주됩니다.
PTCMaterialMasterID 속성이 0 값(PTCMaterialMasterIDNullValue 속성의 기본값)을 수신하면 현재 실행 중인 작업 지시서가 완료되고 새 작업 지시서가 시작되지 않습니다.
작업 지시서에 대한 목표 수량 업데이트
PTCTargetQuantity 속성은 PTCMaterialMasterID 속성을 사용하여 작성된 작업 지시서의 목표 수량을 설정하는 데 사용됩니다. PTCMaterialMasterID 속성이 설정된 후에는 항상 이 속성을 설정해야 합니다. 이 속성 값이 변경되면 현재 실행 중인 작업 지시서에 대한 목표 수량이 업데이트됩니다.
* 
동일한 목표 수량으로 실행되고 있는 후속 재료가 두 가지인 경우 두 번째 목표 수량 값을 전송하기 전에 -1 값(PTCTargetQuantityResetValue 속성에 대한 기본값)을 전송하여 PTCTargetQuantity 속성을 재설정합니다. 시스템은 데이터 변경으로 동일한 값이 다시 수신되는 것을 인식하지 못합니다. 두 번째 작업 지시서의 목표 수량을 첫 번째 작업 지시서에 설정된 값과 동일한 값으로 업데이트하려면 속성 값을 재설정해야 합니다.
데이터 자동화를 사용하여 작업 지시서의 목표 수량을 업데이트하려면 ThingWorx Composer에서 다음 단계를 완료하십시오.
1. 페이스메이커에 대한 작업 단위 사물의 속성 및 경고에서 PTCTargetQuantity 속성을 해당 태그에 바인딩합니다.
2. 저장을 클릭하여 변경 내용을 작업 단위 사물에 저장합니다.
생산 개수 기록
생산 카운터는 페이스메이커에서 발생하는 양호 생산 개수를 기록합니다. 총 생산 개수는 양호 생산 개수에 스크랩 개수를 더한 값으로 계산됩니다.
데이터 자동화를 사용하여 생산 개수를 기록하려면 ThingWorx Composer에서 다음 단계를 완료하십시오.
1. 페이스메이커에 대한 작업 단위 사물의 속성 및 경고에서 PTCProductionCount 속성을 해당 태그에 바인딩합니다. 이 속성은 숫자 값을 허용합니다.
2. 절대 및 롤오버 생산 카운터가 모두 지원됩니다. 기본적으로 생산 카운터는 절대값입니다. 생산 카운터를 롤오버 카운터로 설정하려면 PTCIsProductionCountRollover 속성을 TRUE로 설정하고 PTCProductionRolloverCounter 속성을 카운터에 대한 롤오버 값으로 설정합니다.
* 
절대 카운터는 수신한 새 개수를 그대로 기록합니다. 예를 들어, 개수로 3, 5, 2가 수신되면 총 10이 기록됩니다.
지정된 롤오버 숫자에 도달하고 카운터가 재설정될 때까지 롤오버 카운터는 이전 개수와 새 개수 간의 차이를 기록합니다. 카운터가 재설정되면 이전 개수와 롤오버 숫자 간의 차이에 새 개수를 더한 값이 기록됩니다. 예를 들면, 다음과 같습니다.
개수 0, 2, 5가 순차적으로 롤오버 카운터에 수신되는 경우, 2가 수신되면 2가 기록됩니다(2와 0 간의 차이). 5가 수신되면 3이 기록됩니다(2와 5 간의 차이).
개수 990, 998, 3이 순차적으로 롤오버 카운터에 수신되는 경우, 롤오버 숫자로 먼저 999이 기록됩니다. 998이 수신되면 8이 기록됩니다(998과 990 간의 차이). 3이 수신되면 4가 기록됩니다(999와 998 간의 차이에 새 개수 3을 더한 값).
작업 지시서가 작업 단위 사물에서 변경되는 경우 롤오버 카운터가 재설정되지 않습니다.
3. 기본적으로 생산 카운터는 0부터 시작합니다. 생산 카운터를 다른 번호로 시작하려면 다음 값을 사용하여 PTCLastAutomationProcessedValues 인포테이블 속성에 행을 추가합니다.
propertyName - PTCProductionCount
value - 생산 카운터를 시작하는 데 사용할 값입니다.
jobOrderUid - 이 필드는 DPM에서 무시됩니다.
4. 저장을 클릭하여 변경 내용을 작업 단위 사물에 저장합니다.
* 
절대 카운터의 경우, 동일한 후속 생산 개수가 두 개인 경우 두 번째 생산 개수 값을 전송하기 전에 -1 값(PTC.ProductionCountResetValue 속성에 대한 기본값)을 전송하여 PTCProductionCount 속성을 재설정합니다. 시스템은 데이터 변경으로 동일한 값이 다시 수신되는 것을 인식하지 못합니다. 동일한 값의 두 번째 생산 개수가 새 생산 개수로 인식되도록 하려면 속성 값을 재설정해야 합니다.
스크랩 개수 기록
스크랩 카운터는 페이스메이커에 발생한 스크랩된 생산 개수를 기록합니다. 단일 페이스메이커에 여러 개의 스크랩 카운터가 있을 수 있습니다. 페이스메이커의 스크랩 개수는 모든 스크랩 카운터의 값을 사용하여 계산됩니다.
DPM의 각 스크랩 카운터는 페이스메이커에서 생성되는 단일 스크랩 기계어 코드에 매핑됩니다. 따라서 페이스메이커에 서로 다른 개수에 대해 다른 기계어 코드를 생성할 수 있는 단일 스크랩 카운터가 있는 경우, 개수를 유지하려는 각 기계어 코드에 대해 데이터 소스에 고유한 스크랩 카운터 태그를 생성해야 합니다.
각 스크랩 기계어 코드는 DPM의 스크랩 이유 코드에 매핑됩니다.
데이터 자동화를 사용하여 스크랩 개수를 기록하려면 다음 단계를 완료하십시오.
1. 스크랩 기계어 코드가 각 페이스메이커에 있고 적절한 스크랩 이유 코드에 할당되어 있는지 검증합니다. 기계어 코드 및 할당된 이유 코드는 장비 목록의 작업 단위에 대한 기계어 코드 설정 탭의 관리에서 확인할 수 있습니다.
* 
기계어 코드가 페이스메이커에 없거나 이유 코드에 매핑되지 않은 경우 해당 기계어 코드에 대해 데이터 자동화를 통해 수신된 모든 이벤트는 이벤트 카테고리(eventCategory) 및 손실 카테고리(reasonCategory) 값이 Invalid인 이벤트로 기록됩니다. 이러한 잘못된 이벤트는 생산 대시보드 이벤트 로그에 나타나지 않고 스크랩 개수에 추가되지 않으며 데이터 계산에서 고려되지 않습니다.
2. ThingWorx Composer의 페이스메이커 작업 단위 사물에서 속성 및 경고 아래에서 계속 계산하려는 각 스크랩 기계어 코드에 대한 속성을 생성합니다. 각 스크랩 속성은 DPM에서 스크랩 카운터로 간주됩니다.
3. 절대 및 롤오버 스크랩 카운터가 모두 지원됩니다. 기본적으로 스크랩 카운터는 절대값입니다. 페이스메이커 롤오버 카운터에 스크랩 카운터를 생성하려면 사물의 PTCIsScrapCounterRollover 속성을 TRUE로 설정합니다.
* 
절대 카운터는 수신한 새 개수를 그대로 기록합니다. 예를 들어, 개수로 3, 5, 2가 수신되면 총 10이 기록됩니다.
지정된 롤오버 숫자에 도달하고 카운터가 재설정될 때까지 롤오버 카운터는 이전 개수와 새 개수 간의 차이를 기록합니다. 카운터가 재설정되면 이전 개수와 롤오버 숫자 간의 차이에 새 개수를 더한 값이 기록됩니다. 예를 들면, 다음과 같습니다.
개수 0, 2, 5가 순차적으로 롤오버 카운터에 수신되는 경우, 2가 수신되면 2가 기록됩니다(2와 0 간의 차이). 5가 수신되면 3이 기록됩니다(2와 5 간의 차이).
개수 990, 998, 3이 순차적으로 롤오버 카운터에 수신되는 경우, 롤오버 숫자로 먼저 999이 기록됩니다. 998이 수신되면 8이 기록됩니다(998과 990 간의 차이). 3이 수신되면 4가 기록됩니다(999와 998 간의 차이에 새 개수 3을 더한 값).
작업 지시서가 작업 단위 사물에서 변경되는 경우 롤오버 카운터가 재설정되지 않습니다.
4. 2단계에서 생성한 각 스크랩 속성을 포함하도록 PTCScrapEventProperties 속성을 업데이트합니다. PTCScrapEventProperties 속성에 대한 값은 인포테이블입니다. 각 스크랩 속성에 대해 다음 정보가 포함된 인포테이블에 행을 추가합니다.
propertyName - 스크랩 속성의 이름입니다.
machineCode - 스크랩 속성과 연관된 기계어 코드입니다.
rolloverCounter - 롤오버 값입니다. 작업 단위 사물의 PTCIsScrapCountRollover 속성이 FALSE인 경우 롤오버 값이 무시됩니다.
reallocateFromGoodCount - 이 속성에 대해 받은 스크랩 개수를 이미 기록된 품질 양호 개수에서 재할당해야 하는 경우 확인란(TRUE)을 선택합니다. 이 속성에 대해 받은 스크랩 개수를 품질 양호 개수에서 재할당할 필요가 없는 경우 확인란(FALSE)을 선택하지 마십시오.
스크랩 카운터에서 보고한 스크랩 개수를 양호 생산 개수에서 재할당해야 하는지 여부를 결정할 때 스크랩 카운터의 위치를 고려해야 합니다. 스크랩 개수는 스크랩 카운터가 생산 카운터와 관련하여 물리적으로 위치한 위치에 따라 품질 양호 개수가 기록되기 전과 후에 모두 기록할 수 있습니다. 다음 이미지에서는 페이스메이커에 두 개의 스크랩 카운터가 있는 간단한 예를 보여줍니다. 스크랩 카운터 1이 생산 카운터 앞에 배치되고 스크랩 카운터 2가 생산 카운터 뒤에 배치됩니다.
스크랩 카운터 두 개와 생산 카운터 하나를 사용하여 페이스메이커를 표시하는 다이어그램. 스크랩 카운터 1은 생산 카운터 앞에 배치되고 스크랩 카운터 2는 생산 카운터 뒤에 배치됩니다.
스크랩 개수가 스크랩 카운터 1에서 기록된 경우 품질 양호 개수는 생산 카운터에서 아직 기록되지 않았습니다. 결과적으로, 품질 양호 개수에서 스크랩 개수를 재할당될 필요가 없습니다. 여기에서는 스크랩 카운터 1에서 계산되는 스크랩된 제품이 생산 카운터에서 기록한 품질 양호 개수에 포함되지 않는다고 가정합니다. 이 스크랩 카운터에 대해 reallocateFromGoodCountFALSE로 설정합니다.
스크랩 개수가 스크랩 카운터 2에서 기록된 경우 품질 양호 개수는 생산 카운터에서 이미 기록되었습니다. 지금 스크랩되고 있는 제품은 생산 카운터에서 기록된 품질 양호 개수에 포함되어 있기 때문에 품질 양호 개수에서 재할당해야 합니다. 이 스크랩 카운터에 대해 reallocateFromGoodCountTRUE로 설정합니다.
* 
스크랩 속성과 기계어 코드가 PTCScrapEventProperties 인포테이블에 올바르게 매핑되지 않은 경우 해당 스크랩 속성에 대해 수신된 모든 데이터는 이벤트 카테고리(eventCategory) 및 손실 카테고리(reasonCategory) 값이 Invalid인 이벤트로 기록됩니다. 이러한 잘못된 이벤트는 생산 대시보드 이벤트 로그에 나타나지 않고 스크랩 개수에 추가되지 않으며 데이터 계산에서 고려되지 않습니다.
5. 기본적으로 각 스크랩 카운터는 0부터 시작합니다. 스크랩 카운터를 다른 번호로 시작하려면 다음 값을 사용하여 PTCLastAutomationProcessedValues 인포테이블 속성에 행을 추가합니다.
propertyName - 스크랩 속성의 이름입니다.
value - 스크랩 카운터를 시작하는 데 사용할 값입니다.
jobOrderUid - 이 필드는 DPM에서 무시됩니다.
6. 2단계에서 생성한 각 스크랩 속성에 대한 데이터 변경 이벤트에 대한 가입을 추가합니다. 구독에서 추가를 클릭합니다. 다음 정보를 지정합니다.
구독 정보에서 구독의 이름을 입력하고 활성화됨 확인란을 선택합니다.
입력 아래에서 DataChange 이벤트를 선택하고 구독을 작성하려는 스크랩 속성의 이름을 선택합니다.
스크립트 편집기에서 다음 코드를 붙여넣습니다.
me.AddPTCValueStreamEntry({
propertyName: sourceProperty,
newEventData: eventData.newValue
});
완료를 클릭합니다.
7. 저장을 클릭하여 변경 내용을 작업 단위 사물에 저장합니다.
* 
절대 카운터의 경우, 지정된 스크랩 속성에 대해 동일한 후속 스크랩 개수가 두 개인 경우 두 번째 스크랩 개수 값을 전송하기 전에 -1 값(PTC.ScrapCountResetValue 속성에 대한 기본값)을 전송하여 스크랩 속성을 재설정합니다. 시스템은 데이터 변경으로 동일한 값이 다시 수신되는 것을 인식하지 못합니다. 동일한 스크랩 속성에 대해 동일한 값의 두 번째 스크랩 개수가 새 스크랩 개수로 인식되도록 하려면 속성 값을 재설정해야 합니다.
* 
페이스메이커 작업 단위 사물에서 스크랩 개수 속성이 삭제된 경우에도 PTCScrapEventProperties 속성에서 해당 속성을 삭제해야 합니다. PTCScrapEventProperties 속성에 나열된 존재하지 않는 스크랩 개수 속성은 가치 스트림의 모든 이벤트가 해당 사물에 대해 처리되는 것을 방지합니다.
가용성 이벤트 기록
가용성 이벤트는 이유 코드에 매핑된 시스템의 기계어 코드를 수락하여 시스템의 현재 상태를 기록합니다.
데이터 자동화를 사용하여 가용성 이벤트를 기록하려면 다음 단계를 완료하십시오.
1. 결함 기계어 코드가 각 페이스메이커에 있고 적절한 이유에 할당되어 있는지 검증합니다. 여기에는 Running 이유 트리에서 이유 코드가 할당된 Running 기계어 코드가 포함됩니다. 기계어 코드 및 할당된 이유 코드는 장비 목록의 작업 단위에 대한 기계어 코드 설정 탭의 관리에서 확인할 수 있습니다.
* 
기계어 코드가 페이스메이커에 없거나 페이스메이커에 할당된 이유 트리의 이유 코드에 매핑하지 않는 경우 이벤트는 알 수 없음 이유 코드로 기록됩니다.
2. ThingWorx Composer에서, 각 페이스메이커에 대한 작업 단위 사물의 속성 및 경고에서 PTCAvailabilityEventFaultCode 속성을 해당 태그에 바인딩합니다.
3. 저장을 클릭하여 변경 내용을 작업 단위 사물에 저장합니다.
도움이 되셨나요?