본문 바로가기
PLC/LS (XGT)

LS PLC XGB (XBC-DN32U) MODBUS RTU 통신

by 쪼렙엔지니어 2020. 5. 13.
반응형

오늘은 MODBUS(모드버스) 통신에 대해 얘기해 볼까 합니다.

MODBUS통신은 Searial통신과 Ethernet통신을 이용한 통신프로토콜의 종류중에서

가장 범용적으로 많이 사용되는 OPEN Protocol 입니다.

거의 모든 대부분의 PLC나 DCS, HMI등에서 지원하고 있으며,

중소업체의 경우 자체적인 통신프로토콜을 제작하려면 시간과 돈이 많이 드는 점

타 메이커와 호환이 힘든점등의 단점을 보완하기 위해

MODBUS통신만 사용하는 경우도 많이 있습니다.

MODBUS는 크게 Ehternet을 이용한 MODBUS-TCP와

Searial을 이용한 MODBUS-RTU, MODBUS-ASCII를 예로 들 수 있습니다.

아스키 코드를 이용하는 MODBUS-ASCII보다는

BINARY를 직접 이용하는 MODBUS-RTU를 많이 사용하는 편입니다.

오늘은 LS산전 PLC XGB시리즈를 이용하여 CIMON SCADA와 MODBUS-RTU 통신을

해보겠습니다.

먼저 XG5000을 실행하여 새 프로젝트를 생성하고 실제PLC와 연결시켜 보겠습니다.

XG5000을 이용하는 법은 아래 포스팅 두개를 참조해 주십시오.

https://mech19.tistory.com/20?category=807456

 

XG5000을 이용한 XGB(XGT) PLC 프로그래밍

PLC의 여러가지 언어들 중 레더언어를 이용하여 프로그래밍 하는 기초를 포스팅 해볼까 합니다. ​ 더불어 XG5000의 시뮬레이터 이용등 좀 더 다양한 사용법도 함께 알아보도록 하겠습니다. ​ XG50

mech19.tistory.com

https://mech19.tistory.com/3?category=807456

 

XGT XGB ( XBC-DN32U ) PLC 시작하기 / PLC-PC 접속하기

PLC 기종 중 국내 LS산전의 XGT 시리즈에 대하여 시작하여 보겠습니다. 먼저 LS산전에서 해당 XGT시리즈의 프로그래밍 프로그램인 XG5000을 다운받습니다. 현재기준 최신버전은 아래와 같이 4.3입니다

mech19.tistory.com

 

새 프로젝트를 생성하고 PLC와 연결하면 아래와 같은 화면을 볼 수 있습니다.

여기서 왼쪽 프로젝트 창에서 NewPLC [B0S0 내장 Cnet]을 더블클릭하면 아래와 같은 Cnet 설정화면이

나옵니다.

여기서 485를 이용할것이므로 아래 화면처럼 채널2번의 국번을 1로 수정하고

하단의 동작모드에서 채널2번을 모드버스 RTU 서버로 설정합니다.

그리고 위 화면에서 모드버스 설정을 클릭하게 되면

아래화면과 같은 모드버스 설정화면이 나오게 됩니다.

여기서 우리는 비트는 M address / 워드는 D address를 사용할 것이고,

M0 / D0 부터 사용할 것이니 상기와 같이 주소값을 수정해주고 확인을 눌러줍니다.

그리고 [고급설정] 탭으로 들어가면 아래와 같은 설정화면이 나오는데,

하기와 같이 설정하시면 됩니다.

예전 포스팅에서 9600, 8, N, 1을 항시 외워두는게 좋다고 말씀드렸었습니다.

동일한 설정입니다.

(물론 본 내용은 기본이고, 상대편 설비의 설정에 따라 맞추어 변경하면 됩니다.)

그리고 확인을 눌러 빠져 나옵니다.

이제 LS산전의 XGB시리즈 XBC PLC의 MODBUS RTU 통신 설정은 끝이 났습니다.

이제 프로그램을 간단히 작성하여 보겠습니다.

위 프로그램은 M0 address가 1회 ON시에 D0의 값이 1씩 증가하는 프로그램입니다.

======================================================

이 기회에 INC 명령어와 INCP 명령어의 차이도 알아두시는게 좋을것 같네요.

예를 들어 INC는 M0가 ON되어 있으면 매 스캔타임마다 D0값이 증가합니다.

즉 M0를 버튼을 만들어 사용한다고 가정했을때 길게 누르면 D0값이 그만큼 많이 증가하고

짧게 누르면 D0값이 그만큼 적게 증가하는 것입니다.

INCP명령어는 M0를 아무리 길게 누르고 있어도 D0의 값이 단 1만 증가합니다.

짧게 누르든 길게 누르든 상관없이 D0의 값이 ON되는 횟수에 따라 단 1씩만 증가하는 것입니다.

위 프로그램과 동일한 내용을 INC 명령어를 이용하여 작성하고 싶다면

M0 address를 일반 A접점이 아닌 Pulse On A접점 (양변환 검출 접점)을 사용하고 INC명령어를

사용한다면 동일한 동작을 얻을 수 있습니다.

======================================================

자 이제 다시 본 내용으로 돌아와서 위까지 작성한 프로그램과 설정들을 연결된 PLC에 [쓰기] 합니다.

그리고 CIMON SCADA를 프로그래밍 해보겠습니다.

먼저 새 프로젝트를 생성합니다.

기본적인 CIMON SCADA 사용 방법은 아래 포스팅을 참조해 주시기 바랍니다.

https://mech19.tistory.com/7?category=807459

 

CIMON 기본작화 및 사용법 (1)

이제 CIMON의 기본 작화 및 사용법에 대해 알아보겠습니다. CIMON은 SCADA이지만 작화 및 사용법은 일반 HMI와 크게 다르지 않습니다. PLC도 한 기종을 배우면 다른 기종도 금방 습득할 수 있지만 HMI나

mech19.tistory.com

https://mech19.tistory.com/8?category=807459

 

CIMON 기본작화 및 사용법 (2)

지난번 포스팅에서는 버튼 하나와 램프 하나로 버튼을 누르면 램프에 불이 들어오는것을 확인했습니다. 다만 버튼을 누르고 있는 동안에만 불이 들어왔었습니다. ​ 이제 이번 포스팅에는 버튼

mech19.tistory.com

 

 

[도구] - [I/O디바이스]를 실행하면 아래와 같은 I/O디바이스 설정창이 뜹니다.

새 디바이스 버튼을 누르면 아래와 같은 I/O 디바이스 종류 선택을 하는 창이 뜨고,

여기서 MODICON의 MODICON Modbus RTU Mode를 선택해 줍니다.

디바이스 이름은 아무거나 사용해도 상관없습니다.

저는 XGB#1로 작성하였습니다.

그리고 확인을 누르면 아래와 같은 MODBUS RTU MODE 드라이버 설정 창이 뜹니다.

먼저 통신포트 설정을 하겠습니다.

통신포트 탭을 클릭하면 아래와 같은 설정화면을 볼 수 있습니다.

상기와 같이 9600, 8, N, 1로 설정을 해주고,

안정적인 통신을 위해 통신블록에 등록된 태그만 읽기를 설정해 줍니다.

위에서 통신포트 COM3은 CIMON SCADA가 설치되어 있는 PC의 설정을 따라가야합니다.

PC의 설정은 아래화면과 같이 [장치 관리자] 옵션에서 [포트] 항목을 통해 확인 할 수 있습니다.

통신포트 설정을 마치고 다시 [스테이션] 탭으로 돌아와서 이제 스테이션 추가를 해주도록 하겠습니다.

우측의 [스테이션 추가] 버튼을 클릭하면 아래와 같은 [스테이션 설정] 창이 뜹니다.

여기서 [스테이션 이름]은 아무거나 사용하셔도 됩니다.

그리고 확인 버튼을 눌러 빠져나오도록 합시다.

그럼 아래와 같은 ST#1의 스테이션이 추가된것을 확인 할 수 있습니다.

이제 통신블록을 추가해 보겠습니다.

위 화면에서 [Block 추가] 버튼을 클릭해 보시면 아래와 같은 [통신 Block 추가] 창이 뜹니다.

먼저 데이터의 종류를 선택해야 하는데,

먼저 간단하게 데이터의 종류와 그에 따른 모드버스 주소에 대해 알아보겠습니다.

구분

사용 용도

MODBUS Address

Digital Output

비트 읽기/쓰기

00001 ~

Digital Input

비트 읽기

10001 ~

Analogue Input

워드 읽기

30001 ~

Analogue Output

워드 읽기/쓰기

40001 ~

PLC의 비트를 읽어 오기만 할때는 1번을 지정하고 읽기 쓰기를 같이 할때는 0번을 지정하면 됩니다.

워드를 읽어 오기만 할때는 3번을 지정하고 읽기 쓰기를 같이 할때는 4번을 지정하면 됩니다.

그럼 통신블럭을 생성해 보겠습니다.

먼저 비트인 M0 address를 읽기/쓰기 하기 위해 데이터 종류는 0번을 지정합니다.

선두 Address는 1 데이터 개수는 16개를 지정하겠습니다.

(그럼 선두 address 부터 총 16개의 비트를 읽고 쓰겠다는 의미이며

즉 우리가 PLC에서 비트는 M0부터로 설정을 했으니 M0부터 M15까지 16개의 비트 주소를 사용할 수 있습니다.)

확인을 눌러 저장해 줍니다.

다음 워드인 D0 address를 읽기/쓰기 하기 위해 데이터 종류를 4번을 지정합니다.

그리고 마찬가지로 선두 Address는 1부터로 하고 데이터 개수는 1개만 하겠습니다.

그럼 D0만 사용할 수 있습니다.

확인을 눌러 저장해 줍니다.

그럼 아래와 같이 통신블럭이 생성된 것을 확인 할 수 있습니다.

여기서도 확인을 누르면 아래와 같이 I/O 디바이스 설정이 완료된 것을 확인 할 수 있습니다.

그리고 [도구] - [데이터베이스]를 실행하여 태그를 생성해 주겠습니다.

먼저 M0입니다. 여기서 중요한것은 I/O 어드레스를 MODBUS 주소값으로 설정해 주어야 한다는 점입니다.

우리가 위에서 M0부터 사용하기로 했고, 모드버스의 비트 주소값은 00001부터 시작하니

00001로 설정해 주어야 합니다.

즉 M0는 00001, M1은 00002, M3은 00003이 되는 것입니다.

워드 주소값인 D0로 M0로 같은 개념으로 아래와 같이 설정해 줍니다.

워드의 읽고 쓰기는 40001부터 시작인것을 기억하도록 합시다.

데이터베이스에서 아래와 같이 태그가 생성된 것을 확인할 수 있습니다.

그리고 아래와 같이 작화해 보겠습니다.

네모박스는 M0 버튼으로 사용하고 D0 태그값을 그대로 볼 수 있도록 작화하였습니다.

아래와 같이 CIMONX를 실행하여 작동시켜 보면 잘 되는것을 확인 할 수 있습니다.

오늘은 여기까지 이며, 다음 포스팅에서는 Ethernet을 이용한 MODBUS-TCP에 대하여 알아보겠습니다.

감사합니다.

반응형

댓글