참고: https://system-monitoring.readthedocs.io/en/latest/modbus.html
modbus — System monitoring 0.1 documentation
본 절은 wikipedia의 modbus 를 번역하면서 약간 살을 붙인 것이다. modbus는 1997년, 지금은 Schneider Electric인 Modicon 이라는 회사에서 만든 시리얼 통신 프로토콜이다. 제조공장이나 놀이공원의 기계들을
system-monitoring.readthedocs.io
1. 아마존 웹서비스에서 우분투를 생성했다.
혹시 몰라서 인바운드 아웃바운드 규칙에서 모든 tcp 포트를 허용했다.
보안상 원래는 이렇게 하면 안된다.

2. 깃허브 페이지에서 libmodbus 를 다운받는다.
나는 참고 링크에 있는대로 3.0.5 버전을 다운 받았다.
https://github.com/stephane/libmodbus
태그 누르고 원하는 버전 압축 파일 다운 받으면 된다.
* 압축파일 우분투 컴퓨터에 올리는 방법
modaxterm으로 ssl 접속한 다음, 좌측 지구모양 아이콘을 클릭하면 폴더 트리가 나온다. 여기에 압축파일을 끌어다 놓으면 된다.

3. socat으로 케이블을 연결한 것 같은 환경을 만든다.
실제로 케이블을 꽂으면 우분투에 /dev/usb0 이런식으로 연결된 케이블이 뜬다고 한다.
sudo apt-get install socat
socat -d -d pty pty

4. /libmodbus-3.0.5/tests 폴더의 샘플 server, client 소스코드에서 케이블 경로를 3에서 얻은 가짜 경로로 바꿔주고 컴파일한다.
컴파일 하는게 안 나와서 좀 헤멨는데 그냥 tests 폴더 경로에서 make만 치면 자동으로 되는 거 였다.
~/download/libmodbus-3.0.5/tests $ make
5. 컴파일한 코드를 실행한다. 가상케이블 환경 만들어주는 접속환경과는 별개로, 서버, 클라이언트 각각 새로 우분투에 접속을 해서 실행시켜야한다.
./unit-test-server rtu #서버 실행
./unit-test-client rtu #클라이언트 실행
여기서 또 삽질을 했다.
./unit-test-client rtu 이렇게만 하면 되는데,
./unit-test-client.c rtu로 해서 에러가 났다.
만약 실행할 때 권한 없음 에러 뜨면 명령어 앞에 sudo를 붙여주면 된다.
그리고 클라이언트보다 서버를 먼저 실행시켜야한다. 클라이언트부터 실행시켜서 또 한참 헤멨다.
클라이언트는 실행 후 조금 있다가 멈춘다.


그림으로 그려보면 이런 구조 인 것 같다.
이해가 잘 안되는데..서버, 클라이언트 코드 뜯어봐야겠다.

'네트워크 & 통신' 카테고리의 다른 글
| 라즈베리파이 <-> 안드로이드 블루투스 통신 예제 (1) | 2023.09.03 |
|---|---|
| c 소켓 프로그래밍 예제 (0) | 2023.07.23 |
| 스위치 vs 브릿지 (0) | 2023.03.25 |
| Modbus 공부 (2) | 2023.02.14 |