MODBUS RS-232 통신 예제2 (SEND 명령어 이용)
SEND명령어를 이용하여 통신결과를 확인해 보도록 합니다.
(전반적인 내용은 이전 예제 와 같습니다. 예제 4번과 비교하면 쉽게 이해 할 수 있습니다.)
프로그램 방법
1. 예제 MODBUS RS-232 통신 예제 1과 동일하게 프로그래밍 하기 위하여 PLC-S 2개를 준비하고 2개의 PLC-S를 동작시키기 위하여 2개의 CICON프로그램을 실행시킵니다.
Serial 통신을 하기 위하여 상단 메뉴 바의 새 프로그램 메뉴를 이용하여 아래의 그림과 같이 스캔프로그램과 MODBUS RTU/MASTER 프로그램을 생성합니다.
스캔프로그램에서 SEND명령어를 이용하여 1초 주기로 데이터를 보내주는 프로그램을 작성합니다.
(CICON 도움말 또는 PLC교육 자료집을 이용하면 쉽게 해결 할 수 있습니다.)
그림 1) 예제 4-1 스캔 프로그램
예제 4번과 같이 MODBUS/RTU Master 설정을 해주고 그에 맞게 위와 같이 스캔프로그램을 설정해 줍니다. 그 후 다운로드 하여 결과를 확인해보도록 하겠습니다.
위의 예제와 다른 점을 보자면 M00으로 들어오는 신호를 다시 입력으로 사용하여 값을 1씩 증가하여 D80영역에 저장하고 있습니다. 마찬가지로 M01으로 들어오는 신호를 다시 입력으로 사용하여 값을 1씩 증가하여 D90영역에 저장하고 있습니다.
SEND명령어 설명에서 보면 M00영역의 자리는 통신결과를 나타내주는 영역을 의미 합니다. (위의 SEND명령어 설명을 참조하세요.)
자세한 내용을 아래에서 계속하겠습니다.
그림 2) SEND 명령에서 설정해 준 통신결과 값 확인
송신결과(M00)은 송신에 성공하면 1번째 Bit(Bit 0)이 1 Scan ON합니다. 글쓴이는 1 Scan ON하는 과정을 보여주기 위하여 다음과 같이 M00에 저장되는
송신 성공이라는 신호 값을 D80영역으로 전송하여 값을 확인하고 있습니다.
이번에는 송신 실패에 대하여 확인해보도록 하겠습니다. 글쓴이는 송신실패를 하기 위하여 고의적으로 Master 단과 Slave 단의 국번을 다르게 설정해 주었습니다.
(Master 국번 : 0번, Slave 국번 : 1번)
그림3) 고의적인 송신 실패를 위한 국번 변경
국번을 다르게 해주었더니 SEND 명령어의 M00영역에 H0102라는 값이 들어오는 것을 확인 할 수 있습니다.
메모리 모니터를 통해 확인해보면 M01, M08영역에 값이 들어오는 것을 확인 할 수 있습니다. 통신결과 영역에서 2번째 Bit(Bit 1)의 ON은 송신 실패를 의미 합니다. (SEND명령어 설명 참조)
그림3) 송신실패 후 메모리 M영역 메모리 모니터
송신결과 성공했을 경우와 같은 방식으로 D90영역에 값이 계속 들어오는 것을 확인할 수 있습니다.
그림 4) 송신실패 후 D영역 메모리 모니터