본문 바로가기
  • IT & Factory Automation
Factory Automation

Codesys Modbus TCP Slave (Server) 설정방법

by EasyMotion 2023. 2. 28.
반응형

안녕하세요. 자동화 제어 유용한 정보를 하나하나 쉽게 알려드리는 이지원 입니다.

 

이번 시간에는 Codesys Controller를 Modbus TCP Slave (Server)로 설정하는 방법에 대해 소개하겠습니다.

 

Codesys Controller를 Modbus TCP Master (Client)로 사용하려면 아래 포스팅을 참고하시기 바랍니다. 

 

Codesys에서 ModbusTCP Master (Client) 설정방법

 

 

1. 프로젝트 생성

Codesys에서 새 프로젝트를 만듭니다. 

"Standard project" 템플릿을 이용하여 새 프로젝트를 생성합니다.

 

 

 

 

 

내 Codesys Controller를 선택합니다. 

 

 

 

 

 

[Device] 를 선택하고, 마우스 오른쪽 버튼을 클릭하여 [Add Device] 를 선택합니다.

 

 

 

 

[Modbus] 를 선택하지 않고, [Ethernet Adapter] 의 하위메뉴에 있는 [Ethernet] 을 선택합니다. 

[Add Device] 를 클릭하고 창을 닫습니다.

 

 

 

 

 

추가된 장치 [Ethernet] 을 더블클릭하면 설정창이 나타납니다. 

[General] 탭에서 IP 주소를 설정할 수 있습니다. 내 Codesys Controller의 IP를 설정합니다. 

 

 

 

 

2. Modbus TCP Slave 설정

1) 장치 추가

[Ethernet] 장치를 선택하고, 마우스 오른쪽 버튼을 클릭하여 [Add Device] 를 선택합니다. 

 

 

 

 

[Modbus TCP Slave Device] 하위메뉴에 있는 [ModbusTCP Slave Device] 를 선택합니다. 

[Add Device] 를 클릭하여 장치를 추가하고 창을 닫습니다.

 

 

 

2) Modbus TCP Slave 설정

추가된 장치 [ModbusTCP_Slave_Device] 를 더블클릭하면 설정화면이 나타납니다. 

[General] 탭에서는 데이터 길이와 시작주소를 설정할 수 있습니다.

[Slave port] 항목은 "502" 그대로 두어야 합니다. 

'읽기 데이터' 10워드, '쓰기 데이터' 10워드를 설정하려면  [Holding registers] 에 "20" 을 입력하고, 

[Writeable] 를 체크합니다. 체크를 해야 데이터 쓰기가 가능해집니다.

 

 

 

 

[Modbus TCP Slave Device I/O Mapping] 탭에서는 주고 받을 데이터 영역에 변수를 할당할 수 있습니다. 

변수 할당을 위해서는 먼저 변수를 생성해야 합니다. 

 

 

 

 

[PLC_PRG] 프로그램을 더블클릭하여, 변수를 선언해 줍니다. 

'읽기 데이터' 와 '쓰기 데이터' 를 각각 10 워드 배열로 선언했습니다.

 

 

 

 

선언한 변수들을 [Modbus TCP Slave Device I/O Mapping] 에서 할당해 주었습니다.

주의하실 점은 [Holding Register] 에 '읽기 데이터'와 '쓰기 데이터'를 모두 할당해야 한다는 것입니다.

그래서 처음 10개의 워드에는 '읽기 데이터'를 할당하고, 그 다음 10개의 워드에는 '쓰기 데이터'를 할당하였습니다.

 

 

3. 통신 테스트

통신 테스트를 하기 위해 내 Codesys Controller에 접속해보겠습니다.

① [Device] 에서 장치를 클릭하고, ② [Communcation Settings] 탭을 선택합니다.

③ [Scan Network] 를 실행하면, ④ 검색된 장치를 선택하고 ⑤ [OK] 를 클릭합니다. 

⑥ 온라인 접속을 위해 아이콘을 클릭하면, ⑦ 경고창이 나타납니다. [Yes] 를 클릭하여 다운로드를 진행합니다. 

 

 

 

 

프로그램을 실행해보았습니다. 아직 Modbus TCP 연결이 되지 않았기 때문에 경고 표시가 보입니다. 

 

 

 

 

 

시뮬레이터를 실행하여 Modbus TCP Slave (Server) IP 주소를 설정하고 연결하였습니다. 

(시뮬레이터 사용방법은 아래 포스팅을 참고해주시기 바랍니다.)

 

Modbus TCP 무로 시뮬레이터 다운로드

 

시뮬레이터 실행 후, 경고 표시가 연결표시로 바뀌었습니다.

이제 데이터를 주고 받기 위해 변수 값을 넣어보겠습니다.

 

 

 

 

'쓰기 데이터'에 입력한 값들이 시뮬레이터 [Holding Register] 영역의 Register 11~20에 나타났습니다. 

이번에는 시뮬레이터에서 값을 쓰고, Codesys Controller에서 읽어보겠습니다. 

 

 

 

 

Codesys는 프로그램에서 사용하지 않는 변수가 비활성화 됩니다. 

'읽기 데이터'를 임시 변수에 옮기는 코드를 추가하여 '읽기 데이터' 변수가 프로그램 상에서 활성화 되도록 하였습니다. 

 

 

 

 

수정된 프로그램을 다운로드 하고 다시 실행하였습니다. 

시뮬레이터에서 [Holding register] 의 Register 1~10 에 임의의 값을 입력하였더니,

Codesys Controller의 '읽기 데이터' 영역에 해당 값들이 나타났습니다. 

 

 

 

이번 시간에는 Codesys Controller를 Modbus TCP Slave (Server)로 설정하는 방법을 소개했습니다. 

Modbus TCP Master (Client)로 설정하는 방법은 아래 포스팅을 참고해주시기 바랍니다. 감사합니다. 

 

Codesys에서 ModbusTCP Master (Cline) 설정방법

반응형

댓글