- 인쇄
목적
이 가이드는 Tulip을 로크웰 오토메이션의 FactoryTalk Optix HMI 시각화 소프트웨어와 통합하는 방법을 단계별로 안내합니다.
Tulip 앱은 FactoryTalk Optix HMI에 완전히 통합될 수 있으며, 이는 Tulip 앱이 FactoryTalk Optix에서 직접 실행될 수 있고 소프트웨어 플랫폼 간의 양방향 통신이 가능하다는 것을 의미합니다. 이를 통해 작업자는 HMI에서 직접 Tulip에 액세스할 수 있으며, 동시에 Tulip은 기계 및 HMI의 모든 관련 데이터에 액세스할 수 있습니다.
사용 사례
이 통합 기능에 대한 데모는 Tulip 체험 센터(TEC)에서 바이오리액터 eBR 사용 사례를 통해 확인할 수 있습니다. 이 예에서는 라이브 머신 데이터, 개방 알람 및 현재 Optix 화면이 OPC UA를 사용하여 FTOptix HMI에서 Tulip으로 전송되고 있습니다. 이러한 데이터는 모두 Tulip에 Tulip 머신으로 표시되며, 앱, 자동화 또는 머신 트리거에서 해당 데이터를 기반으로 로직을 제공하는 데 사용할 수 있습니다. Tulip 커넥터는 설정값을 기계로 다시 전송하고 Optix HMI에 표시되는 화면을 제어하는 데 사용됩니다.
사용 방법
FactoryTalk Optix에서 Tulip 실행
Tulip 앱은 iframe 기능을 사용하여 FactoryTalk Optix에서 직접 실행할 수 있습니다. Optix를 사용하면 사용자가 웹 브라우저를 HMI에 직접 임베드하여 Tulip을 실행하는 데 사용할 수 있습니다.
- UI > 새로 만들기 > 콘텐츠 > 웹 브라우저를 마우스 오른쪽 버튼으로 클릭하여 Optix HMI에 웹 브라우저를 추가합니다.
- 웹 브라우저를 선택하고 화면 오른쪽의 속성 탭을 확인합니다.
- URL을
https://<귀하의 인스턴스>.tulip.co/player?appId=<귀하의 앱 ID>로
설정합니다.
앱 ID는 Tulip 인스턴스에서 원하는 앱을 연 다음 브라우저에 표시된 URL을 확인하면 찾을 수 있습니다. URL은 https://<귀하의 인스턴스>.tulip.co/w/<귀하의 앱 ID>/process/....
형식을 따릅니다.
특정 앱으로 실행하지 않으려면 URL을 https://<your-instance>.tulip.co/player로
설정할 수 있습니다.
Optix에서 Tulip으로 데이터 보내기
Tulip과 Optix 간에 데이터를 전송하는 데 사용할 수 있는 프로토콜은 여러 가지가 있습니다.
OPC UA를 사용하여 Optix에서 Tulip으로 데이터를 전송할 수 있습니다. Optix는 OPC UA 서버를 호스트하고, Tulip은 OPC-UA 클라이언트 기능을 활용하여 해당 데이터를 Tulip 머신으로 수신할 수 있습니다. Tulip 머신을 만들고 편집하는 방법에 익숙하지 않은 경우 .... 을 참조하세요.
- Optix에서 OPC-UA 폴더를 마우스 오른쪽 버튼으로 클릭한 다음 새로 만들기 > OPC UA 서버를 선택합니다.
- OPC UA 서버를 선택하고 화면 오른쪽에 있는 속성 탭을 확인합니다.
- 엔드포인트 URL을
opc.tcp://localhost:59100으로
입력한 다음 원하는 노드, 사용자 및 보안을 구성합니다. 구성에 대한 도움이 필요한 경우 FTOptix 도움말 센터를 참조하세요.
방법 1: 에지 디바이스 커넥터 호스트 사용
- Tulip 에지 장치를 설정하고 HMI와 동일한 네트워크에 연결합니다.
https://<your-instance>.tulip.co/machine_data_sources로
이동합니다. 이 페이지는 작업 현장 > 기계로 이동한 다음 왼쪽 패널에서 데이터 소스를 선택해도 찾을 수 있습니다.- '기계 데이터 소스 생성' 버튼을 선택합니다. 다음을 입력합니다: 이름:
<데이터 소스의 원하는 이름>
실행 대상:<사용 중인 에지 장치>
유형: OPC UA 에이전트 URL:<HMI의 IP 주소>
- Optix의 OPC UA 서버의 보안 옵션과 일치하도록 보안 옵션을 입력합니다.
- '테스트'를 선택하여 연결을 확인한 다음 '저장'합니다.
- Tulip에서 Optix 데이터 소스를 머신에 연결하려면 머신 추가 및 구성 방법을 참조하세요.
방법 2: 온프레미스 커넥터 호스트(OPCH) 사용
- HMI에서 OPCH를 설정합니다. 온-프레미스 커넥터 호스트(OPCH) 설정에 대한 지침은 온-프레미스 커넥터 호스트 개요를 참조하세요.
https://<your-instance>.tulip.co/machine_data_sources로
이동합니다. 이 페이지는 작업 현장 > 기계로 이동한 다음 왼쪽 패널에서 데이터 소스를 선택해도 찾을 수 있습니다.- '기계 데이터 소스 생성' 버튼을 선택합니다. 다음을 입력합니다: 이름:
<데이터 소스의 원하는 이름>
실행 대상:<귀하의 OPCH>
유형: OPC UA 에이전트 URL:<HMI의 IP 주소>
- Optix의 OPC UA 서버의 보안 옵션과 일치하도록 보안 옵션을 입력합니다.
- '테스트'를 선택하여 연결을 확인한 다음 '저장'을 선택합니다.
- Optix 데이터 소스를 Tulip의 머신에 연결하려면 머신 추가 및 구성 방법을 참조하세요.
Tulip에서 Optix로 데이터 보내기
- NetLogic 폴더를 마우스 오른쪽 버튼으로 클릭한 다음 새로 만들기 > 런타임 NetLogic을 선택합니다. 아래 스크립트를 사용하여 HTTP REST 서버를 호스팅합니다.@(Embed)(https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/RESTServer(1).cs){height="320" width="640"}
- 사용 사례에 맞게 869-1000 줄을 변경합니다. 현재
/targetValues
및/screen
경로에서 PUT 호출을 수신하도록 설정되어 있습니다. 수신된 값은ref_<변수
이름>에
저장됩니다(예:ref_TargetPressure
).
아래 코드는 PUT 호출을 수신하여 Optix의 별칭에 전달하는 데 사용됩니다.
924~955줄:```케이스 "PUT": switch (e.Path) { 케이스 "screen": // http://localhost:8081/screen byte[] payloadraw = (byte[])e.Data; string payload = System.Text.Encoding.UTF8.GetString(payloadraw, 0, payloadraw.Length); string screen = JObject.Parse(payload)["screen"].ToString();
((IUAVariable)LogicObject.GetAlias("refScreenToShow")).Value = screen; res = 1; break; case "targetValues": // http://localhost:8081/targetValues payloadraw = (byte[])e.Data; payload = System.Text.Encoding.UTF8.GetString(payloadraw, 0, payloadraw.Length); Log.Warning(payload); int targetPressure = int.Parse(JObject.Parse(payload)["targetPressure"].ToString()); int targetTemperature = int.Parse(JObject.Parse(payload)["targetTemperature"].ToString()); float targetpH = float.Parse(JObject.Parse(payload)["targetpH"].ToString()); int targetDO = int.Parse(JObject.Parse(payload)["targetDO"].ToString()); ((IUAVariable)LogicObject.GetAlias("ref_TargetPressure")).Value = targetPressure; ((IUAVariable)LogicObject.GetAlias("ref_TargetTemperature")).Value = targetTemperature; ((IUAVariable)LogicObject.GetAlias("ref_TargetpH")).Value = targetpH; ((IUAVariable)LogicObject.GetAlias("ref_TargetDO")).Value = targetDO; res = 1; break; default: break; } break;
1. Optix에서 REST 서버 넷로직을 선택한 다음 오른쪽의 속성 패널을 확인합니다. REST 서버의 코드에 할당된 별칭은 Optix의 변수에 할당할 수 있습니다. 예를 들어, 아래 이미지에서 `ref_TargetTemperature는` Optix 변수 `cfg_TargetTemperature에` 할당되어 있습니다.![image.png](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/image%28639%29.png){height="" width=""}
2. 튤립 인스턴스에서 앱 > 커넥터로 이동합니다.
3. '커넥터 만들기' 버튼을 선택합니다.
4. HTTP 유형으로 사용자 지정 커넥터를 만듭니다.
5. 연결 세부 정보는 다음과 일치해야 합니다: **실행 중:** `<사용자의 엣지 장치 또는 OPCH>` **호스트:** `<HMI의 IP 주소>` **포트:** `<옵틱스에서 REST 서버에 할당된 포트>` - *위 이미지에서는 포트 8081을 사용하고 있습니다.*
6. '테스트'를 선택하여 연결을 확인한 다음 '저장'을 선택합니다.
7. 함수를 생성하고 다음을 설정합니다: **유형:** PUT **경로:** 코드에서 경로로 설정한 것과 일치해야 합니다. 이전 예제에서는 `/targetValues` 또는 `/screen으로` 설정했습니다.
8. 요청 본문에 모든 관련 파라미터를 추가합니다:![image.png](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/image%28640%29.png){height="" width=""}
Tulip에서 커넥터 함수를 만드는 데 도움이 필요하면 [커넥터 구성 방법을](/r230/docs/how-to-configure-a-connector) 참조하세요.
## 요약
이제 Tulip 앱과 Optix HMI 간에 양방향 통신이 설정되어 두 앱 간에 자유롭게 데이터를 전송할 수 있습니다. 이 통합 데모에서는 OPC UA를 사용하여 라이브 머신 데이터, 열려 있는 알람 및 현재 Optix 화면을 Tulip으로 전송합니다. REST 서버를 사용하여 Optix 앱을 전환할 화면과 함께 기계의 목표 값을 전송합니다. 이렇게 하면 Tulip 앱의 트리거를 사용하여 기계뿐만 아니라 Optix 앱 자체를 모니터링하고 제어할 수 있습니다.
Tulip에서 Optix 화면을 제어하는 데 관심이 있다면 아래 런타임 넷로직 코드를 참조하세요. 이 코드는 메인창(유형)에 직접 배치해야 하며 패널 로더 및 화면 이름에 맞게 변경해야 합니다.@(Embed)(https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/MainWindowRuntimeLogic.cs){height="320" width="640"}