사용자 도구

사이트 도구

English

moacon:startmodbusrtu:index

startModbusRtu

void startModbusRtu(u8 comCh, u8 modSlaveadr, u16 * modbusBufferRegister, u8 * modbusBufferCoil)

comCh : 통신 채널 (0 또는 1 또는 2 사용가능)
modSlaveadr : 모드버스의 슬레이브 어드레스
modbusBufferRegister : 레지스터 버퍼 시작번지
modbusBufferCoil : 코일 버퍼 시작번지

설명

MODBUS RTU 슬레이브의 시작을 알리는 함수입니다. openCom 함수 바로 아래에 작성해줍니다.

static u8 MDcoil[10];
static u16 MDregister[10];
openCom(2,38400, C8N1);
startModbusRtu(2,1,MDregister, MDcoil); 

comCh 위치에 사용할 채널을 기입합니다. 모아콘은 총 3 개의 통신포트를 사용할 수 있습니다. 이 중 한 곳에서만 MODBUS RTU 슬레이브 기능을 활성화 시킬수 있습니다. 3 채널 모두 동시에 사용은 불가능합니다.

modSlaveadr 에 슬레이브 어드레스를 기입합니다. 1 부터 255 사이 값을 사용할 수 있습니다. 0 번은 브로드케스트 모드로 할당되어 있으므로, 본 함수에서는 사용할 수 없습니다.

MODBUS RTU 를 사용하기 위해서는 16 비트 워드데이터를 저장하는 “레지스터 (Register)”영역과 1 비트 데이터를 저장하는 “코일(Coil)” 영역이 필요합니다. 데이터 교환을 위한 일종의 링크 영역이라고 생각하시면 됩니다.

이 공간을 위해 사전에 “static 형 배열”을 선언하고, 배열의 포인터를 함수에 넘겨줍니다. 1 비트 영역 (Coil)은 바이트형 배열로 선언하십시오.

배열의 1 번째 바이트에는 0 부터 7 번 비트가 포함되어 있습니다. 배열의 2 번째 바이트에는 그 다음 주소인 8 부터 15 번 비트가 포함되어 있습니다. 이런식으로 각각의 바이트에는 8 개의 비트가 배치되어 있는 것입니다.

배열의 크기는 유저가 필요한 만큼 확보하실 수 있습니다. 너무 많이 확보하는 것 보다 필요한 만큼 확보하시는 것이 좋습니다. 전체 메모리 사용량이 그 만큼 줄어들기 때문입니다.

*모아콘에서는 MODBUS ASCII 를 지원하지 않습니다.

사용예

static u8 MDcoil[10];
static u16 MDregister[10];
openCom(2,38400, C8N1);
startModbusRtu(2,1,MDregister, MDcoil); 

위 예제는 openCom 함수에서 38400 보레이트로 채널 2 를 오픈했기 때문에, MODBUS RTU 도 38400 으로 적용됩니다. MODBUS RTU 는 300 보레이트부터 사용가능합니다.

목록으로 가기

moacon/startmodbusrtu/index.txt · 마지막으로 수정됨: 2016/04/14 09:50 (바깥 편집)