사용자 도구

사이트 도구


commands:reference:imodbusrtumaster

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

다음 판
이전 판
commands:reference:imodbusrtumaster [2026/09/01 20:04] – 만듦 - 바깥 편집 127.0.0.1commands:reference:imodbusrtumaster [2026/10/25 11:33] (현재) – 바깥 편집 127.0.0.1
줄 11: 줄 11:
 ^ 명령어 ^ 인수 ^ 반환값 ^ 동작 ^ ^ 명령어 ^ 인수 ^ 반환값 ^ 동작 ^
 | ''ImodbusRTUmaster(serialPort, slaveId, functionCode, address, quantity, data, timeoutMs)'' | ''HardwareSerial& serialPort'' — RS-485에 연결된 Serial\\ ''uint8_t slaveId'' — Slave 주소\\ ''uint8_t functionCode''\\ ''uint16_t address''\\ ''uint16_t quantity''\\ ''uint16_t* data''\\ ''uint16_t timeoutMs = 100'' | ''uint8_t'' | 하나의 Master 요청을 즉시 실행합니다. | | ''ImodbusRTUmaster(serialPort, slaveId, functionCode, address, quantity, data, timeoutMs)'' | ''HardwareSerial& serialPort'' — RS-485에 연결된 Serial\\ ''uint8_t slaveId'' — Slave 주소\\ ''uint8_t functionCode''\\ ''uint16_t address''\\ ''uint16_t quantity''\\ ''uint16_t* data''\\ ''uint16_t timeoutMs = 100'' | ''uint8_t'' | 하나의 Master 요청을 즉시 실행합니다. |
 +
  
 ===== 예제 ===== ===== 예제 =====
  
 <code cpp> <code cpp>
-uint16_t data[2]; +uint16_t data[10]; 
-uint8_t result = ImodbusRTUmaster( +uint16_t readValue0; 
-  Serial2, 1, 3, 0, 2, data, 200);+uint16_t readValue1; 
 + 
 +void setup() { 
 +  ImodbusRTUmasterInit(Serial2, 9600);  // Master 통신 포트와 보레이트를 설정합니다. 
 +} 
 + 
 +void loop() { 
 +  uint8_t result; 
 + 
 +  result = ImodbusRTUmaster(Serial2, 1, 0x03, 0, 2, data);  // 하나의 Master 요청을 즉시 실행합니다. 
 +  if (result == IMODBUS_RTU_SUCCESS) { 
 +    readValue0 = data[0]; 
 +    readValue1 = data[1]; 
 +  } 
 + 
 +  data[0] = 1234; 
 +  ImodbusRTUmaster(Serial2, 1, 0x06, 10, 1, data);  // 하나의 Master 요청을 즉시 실행합니다. 
 +}
 </code> </code>
  
 ===== 주의사항 ===== ===== 주의사항 =====
  
-  * Slave 또는 Master 실행 함수를 ''loop()''에서 계속 호출합니다. +  * Slave 또는 Master 실행 함수는 ''loop()''에서 계속 호출해야 합니다. 
-  * 데이터 배열 크기는 요청 quantity 이상이어야 합니다. +  * 데이터 배열은 요청된 데이터 개수(quantity) 이상의 항목을 담을 수 있어야 합니다. 
-  * 반환 코드의 BUSY와 IDLE을 통신 실패로 처리하지 않습니다. +  * 반환 코드 BUSY와 IDLE은 통신 실패로 처리하지 않아야 합니다. 
-  * Cnet/MC Protocol과 ''M'', ''D''를 공유하면 최종 크기와 초기화 순서를 하나로 정합니다. ''ImodbusRTUMem()'' 또는 ''ICnetMem()''을 실행 중 다시 호출하지 않습니다. +  * Cnet/MC Protocol과 ''M'', ''D''를 공유하면 최종 메모리 크기와 초기화 순서를 하나로 정해야 합니다. ''ImodbusRTUMem()'' 또는 ''ICnetMem()''을 실행 중 다시 호출하지 않아야 합니다. 
-  * 메모리 할당 함수는 성공 여부를 반환하지 않으므로 크기가 0이 아니면 ''M'', ''D''가 ''nullptr''이 아닌지 확인한 뒤 사용자 코드에서 접근합니다.+  * 메모리 할당 함수는 성공 여부를 반환하지 않으므로 크기가 0이 아니면 사용자 코드에서 접근하기 전에 ''M'', ''D''가 ''nullptr''이 아닌지 확인해야 합니다. 
 + 
 +===== 같은 카테고리의 내장 명령어 ===== 
 + 
 +  * [[commands:reference:imodbusrtumasterinit|ImodbusRTUmasterInit() 상세 설명 보기]] 
 +  * [[commands:reference:imodbusrtumasteradd|ImodbusRTUmasterAdd() 상세 설명 보기]] 
 +  * [[commands:reference:imodbusrtumasterrun|ImodbusRTUmasterRun() 상세 설명 보기]]
  
 [[commands:builtin|← 내장 명령어 리스트]] [[commands:builtin|← 내장 명령어 리스트]]
  
commands/reference/imodbusrtumaster.1788260661.txt.gz · 마지막으로 수정됨: 저자 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki