본문 바로가기
외부 라이브러리/Modbus

LibModbus RTU(serial) Windows 사용기. RealSYS.-(2)

by 공작사 2022. 12. 6.

이전 글에서 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) 을 읽습니다.

 

 

 

 

 

 

 끝.

댓글