일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- kafka listener
- c#
- ssh log
- mssql table 용량
- springboot Gradle
- Java 버전 여러개 사용
- OPC
- Gradle JDK Path
- JOIN DBMS별 차이점
- Jar 경로
- MSSQL
- Xamarin
- ssh 접속 실패 로그
- ssh 접속 로그
- kafka
- MS-SQL
- table용량
- lock
- OPC UA Write
- CPU 사용량
- OPC DA
- OPC UA Client Write
- Gradle Jar
- delete truncate 차이
- SCM
- OPC UA
- 스마트공장
- OPC Write
- Gradle 빌드 오류
- c# 강의
- Today
- Total
IT’s Ha
[OPC] 3. OPC UA와 PLC 통신 예제 본문
안녕하세요. 지난시간에 이어 오늘은 상용 OPC UA서버와 PLC간의 연결을 하려고합니다. 오늘 사용 될 프로그램은 모두 상용프로그램으로 구매시 비용이 발생됩니다. 사용 될 서버는 KEPServerEX와 클라이언트는 UaExpert를 사용합니다. 그리고 PLC는 LS산전 PLC(없어도 무관)를 사용합니다. Kepware와 UaExpert의 설치주소는 아래에 있습니다.
KEPServerEX(서버) : https://www.ptc.com/ko/products/kepware/kepserverex/demo-download
UaExpert(클라이언트) : https://www.unified-automation.com/products/development-tools/uaexpert.html
설치 관련하여 설명은 건너뛰겠습니다. 기본적으로 Next를 눌러 셋팅을 하시면 됩니다.
1. KEPServerEX
서버를 설치 완료하시면 아래와 같이 프로그램이 나타납니다. 만약 안나타나시면 작업표시줄에 KEPServerEX라고 더블클릭하시면 됩니다. 그래도 없으시면, 시작에서 KEPServerEX 6 Configuration을 실행 시켜 주시면 됩니다.
KEPServerEX 6의 구성은 Channel - Device - Tag 의 관계로 되어있습니다 . Channel의 의미는 간단하게 생각하셔 PLC와의 연결 방식 또는 PLC 기종이라고 생각하시면 됩니다. 두번째는 Device입니다. Device는 PLC입니다. 마지막 Tag는 PLC에서 사용 할 데이터영역입니다. 각 트리구조로 되어있습니다. Data Access 설정이라고 보시면 됩니다.
PLC별로 통신 규약은 모두 다르게 구성되어 있습니다. KEPServerEX 6에 아쉽게도 저희가 준비한 LS산전 PLC 통신프로토콜은 정의가 되어있지 않습니다. 그래서 저희는 Modbus통신프로토콜을 통하여 통신 하려고 합니다. 모드버스 관련하여 추가로 정리하여 올리겠습니다. Modbus는 PLC 통신 프로토콜이라 생각하시고 넘어가도록 하겠습니다.(참고 아래에는 LS산전 통신 모듈 사용설명서입니다.)
LS산전 Ethernet카드 모듈 사용설명서 : https://sol.ls-electric.com/uploads/document/16401342439630/XGL-EFMTB_T8_Manual_V3.2_202011_KR.pdf
※ PLC 연결 셋팅
1) KEPServerEx 6 Configuration을 실행시킨 다음 왼쪽 Connectivity 또는 오른쪽 Channel 정보에 우클릭후 New Channel을 선택합니다.
2) Modbus TCP/IP Ethernet을 선택합니다. (만약 다른 PLC로 셋팅을 하실려면, 리스트에서 선택하시면 됩니다.) 만약 준비된 PLC가 없다면 Simulator를 선택하셔서 아래와 비슷하게 사용하시면 됩니다.
3) 이름을 설정 후 Next 하여 완료 처리합니다.
4) 설정이 완료되면 Channel이 생성됩니다. 좌측 Tree에서 생성된 채널을 선택한 뒤 우클릭 후 New Device를 합니다.
5) Device 이름을 선택하고 Next를 선택합니다. Model은 Modbus를 선택합니다. 다음 ID는 해당 PLC IP를 입력하시면 됩니다. 예) <192.168.0.200>.0 괄호 사이에 있는건 IP를 의미하고 뒤에 0은 국번을 의미합니다. PLC에서 모드버스 셋팅을 하게 되면 국번을 확인 할 수 있습니다. 그리고 Port 설정이 있습니다. Modbus 기본 포트는 502입니다. 중요한 셋팅은 여기 끝입니다. 셋팅 내용이 없는건 그냥 다음하고 넘어가시면 됩니다.
6) Devie까지 정상적으로 생성하였습니다. 이제는 데이터 맵을 연결 해야합니다. 모드버스는 총 4가지 영역으로 나눠집니다.
범위 | Data Type | 기능 |
1 ~ 065536 | Bit | 읽기 |
100001 ~ 165536 | Bit | 읽기/쓰기 |
300001 ~ 365536 | Word | 읽기 |
400001 ~ 465536 | Word | 읽기/쓰기 |
우리가 설정 할 영역은 400001 Word의 읽기/쓰기영역입니다.
Name에 설정할 Tag명으로 입력합니다. Tag명은 간략하고 표현 가능한 이름으로 지정하시는게 편합니다. 저는 예제이기 때문에 Tag1로 칭하겠습니다. 그리고 Address에 400001을 입력하겠습니다. Ok를 눌러 마무리를 합니다. 저는 추가로 3개를 더 등록하여 테스트 하겠습니다.
7) 정상 구동 확인을 하기 위해서는 KEPServerEX 6에서 기본으로 제공하는 Quick Client를 사용하겠습니다. 해당 그림에 따라 선택하시면 프로그램이 나타납니다. 정상적인 동작이라면 아래와 같이 데이터가 나타납니다.
8) 시작표시줄에 KEPServerEX 6에 우클릭 후 OPC UA Configuration 을 선택해주시고, Server Endpoints의 영역이 나오게 됩니다. 그리고 더블클릭하면 상세 내역으로 표시가 됩니다. 테스트를 위해 모두 체크해제 후 OK를 설정합니다.
9) KEPServerEX6에서 Project를 선택 후 우클릭을 선택 후 설정을 선택해주세요. 그리고 OPC UA를 선택후 Client Sessions에 Allow anonymous login 을 Yes로 바꿔줍니다. 이 설정은 User 체크를 해제 하는 설정입니다.
여기까지 OPC UA 서버의 설정이 완료 되었습니다.
2. UaExpert
UaExpert를 실행하시면 아래와 같이 프로그램이 실행됩니다.
1) Server를 선택하여 우클릭후 Add를 합니다. 이름은 Test로 입력후 Endporint Url은 위에 KEPServer에 UA Server Configraution에 있는 주소와 포트를 입력하시면 됩니다. 그리고 OK 버튼을 누르면 정상적으로 생성이 됩니다. 그리고 생성된 객체에 우클릭후 Connect를 하시면 창이 뜹니다. 이건 서버의 접속을 인증하는걸 물어보는건데 Trust하여 진행하시면 정상적으로 연결이 됩니다.
2) 정상 적으로 연결되면 Project 아래에 리스트가 나옵니다. 우리가 설정한 Channel 아래에 Device가 있고 Tag들이 있는것을 확인 하실수 있습니다. 해당 Tag를 끌어 Data Access View에 넣으시면 데이터가 정상적으로 올라오게 됩니다. KEPServer의 Qick Client와 비교하여도 데이터가 정상적으로 들어오는걸 확인 하실수 있습니다.
이번 포스팅은 KEPServerEX의 설정과 UaExpert로 UA통신으로 데이터를 수신하는 테스트를 해보았습니다. 위 예제를 통하여 OPC UA에 대한 이해가 조금 더 잘되었으면 합니다. 궁금하신 점이나 잘못된 점은 메일 또는 댓글에 남겨 주시면 수정 또는 답변 드리도록 하겠습니다. 감사합니다.
'OPC' 카테고리의 다른 글
[OPC] 5. C#을 통한 OPC UA Client 개발 - Write (1) | 2024.02.15 |
---|---|
[OPC] 4. C#을 통한 OPC UA Client 개발 (31) | 2023.03.30 |
[OPC] 2. OPC UA와 OPC DA의 차이, PLC와 OPC통신 (0) | 2023.03.15 |
[OPC] 1. OPC UA 서버의 이해 (0) | 2023.03.08 |
[OPC]OPC (0) | 2023.02.15 |