이전 글에서 1) libmodbus 윈도우 빌드하기. 2) 적절한 함수 사용 및 modbus 이해하기. 로 나눠서 글을 쓰기로 했었죠?
그런데 제가 노션에 정리한 글이 있어서 대체합니다.
(다시 정리하기 귀찮아서 그런건 아닙니다!)
https://cjw7823.notion.site/LibModbus-8447e2debd3149ca97db362e4f1eeb3c
LibModbus 사용하기
1. Serial 통신과 Modbus
cjw7823.notion.site
누가 정리했는지 깔끔하게 정리했는데, 빠진 내용만 보충하겠습니다.
1. RTU 통신이지만 소켓을 설정해야 한다.
modbus_read_input_registers() 로 값을 읽기 전에 연결 과정을 거치는데, modbus_set_socket()으로 내부 변수를 세팅해야 합니다.
modbus_t* ctx;
//modbus_mapping_t* mb_mapping;
int rc = 0;
ctx = modbus_new_rtu("COM4", 9600, 'N', 8, 1);
if (modbus_set_slave(ctx, 1) == -1) {
fprintf(stderr, "modbus_set_slave failed: %s\n", modbus_strerror(errno));
modbus_free(ctx);
return -1;
}
printf("\n setted slave!!!!\n");
modbus_set_socket(ctx, 1);
2. RealSYS 메모리 맵
modbus를 사용하는 모든 분들이 RealSYS를 사용하는 건 아니지만 참고삼아 써봅니다.
제가 사용한 신호 변환기 입니다. RM6053 사용했어요.
채널이 16개 있습니다. 0~15bit까지 2bite로 신호가 오게 됩니다.
예를 들어 0번과 5번 채널에 값이 on이면 1111 1111 1110 1110(2) == 65,518(16) 을 읽습니다.
끝.
'외부 라이브러리 > Modbus' 카테고리의 다른 글
LibModbus RTU(serial) Windows 사용기. RealSYS.-(1) (0) | 2022.12.06 |
---|
댓글