반도체/기술

설정하는거임 연결

Clair_de_Lune 2024. 12. 13. 16:40
728x90

1. IP 주소 및 포트 설정

  • IP 주소:
    • PLC나 모터 드라이버의 IP 주소를 설정해야 합니다. 이 값은 시스템의 네트워크 환경에 따라 달라집니다.
    • 예를 들어, PLC나 모터 드라이버의 IP가 192.168.1.200이라면, 코드에서 modbus_new_tcp("192.168.1.100", 502)의 IP 부분을 "192.168.1.200"으로 변경해야 합니다.
  • 포트 번호:
    • Modbus TCP는 기본적으로 포트 502를 사용하지만, 일부 장비에서는 다른 포트를 사용할 수 있습니다. 예를 들어, 장비가 5020 포트를 사용한다면, 코드의 포트를 5020으로 수정해야 합니다.
     
mb = modbus_new_tcp("192.168.1.200", 5020);  // PLC 또는 모터 드라이버의 IP와 포트 번호

2. 레지스터 주소

  • 레지스터 주소는 PLC나 모터 드라이버의 제어 명령을 전송하는 메모리 주소입니다. 이 값은 사용 중인 장비에 따라 다릅니다.
    • 예를 들어, 모터의 이동 방향을 제어하는 레지스터 주소가 100이라면, 그 주소를 코드에서 수정해야 합니다.
    • 모터 제어를 위한 레지스터 주소은 사용 중인 하드웨어의 매뉴얼에 명시되어 있어야 합니다. 예를 들어, 모터 드라이버의 레지스터 주소가 2000일 수 있습니다.
     
int reg_address = 100; // 모터 제어 레지스터 주소 (사용 중인 하드웨어에 맞게 수정)

3. 레지스터 값 (모터 제어 명령)

  • 레지스터 값은 모터 제어를 위해 보내는 명령입니다. 예를 들어, home 위치로 이동할 때, 0을 보내는 경우도 있지만, 모터 드라이버에 따라 다를 수 있습니다. 이 값은 하드웨어 매뉴얼에 따라 다르게 설정해야 합니다.
    • 예를 들어, negative 방향으로 이동하려면 -1, positive 방향으로 이동하려면 1, home 위치로 이동하려면 0을 보낼 수 있습니다.
     
  •  
moveMotor(1);  // 1: positive 방향
moveMotor(-1); // -1: negative 방향
moveMotor(0);  // 0: home 위치

4. 슬레이브 ID 설정

  • Modbus TCP에서는 마스터(산업용 PC)가 여러 슬레이브 장치와 통신할 수 있습니다. 각 슬레이브 장치에는 고유의 슬레이브 ID가 할당되어 있습니다.
  • 예를 들어, 모터 드라이버의 슬레이브 ID가 2일 수 있습니다. 이 값을 설정해야 합니다.
  •  
  •  
int slave_id = 2;  // 모터 드라이버의 슬레이브 ID

5. 모터 드라이버의 통신 프로토콜 확인

  • 대부분의 모터 드라이버는 Modbus RTU 또는 Modbus TCP와 같은 표준 통신 프로토콜을 사용하지만, 일부 장비는 특정 프로토콜을 요구할 수 있습니다.
  • 예를 들어, Modbus RTUModbus TCP는 프로토콜이 다릅니다. 위의 코드는 Modbus TCP 예제입니다. 만약 Modbus RTU를 사용해야 한다면, modbus_new_rtu()와 같은 RTU 함수로 변경해야 합니다.

6. 타임아웃 및 오류 처리

  • Modbus 통신에서 타임아웃 설정을 조정할 수 있습니다. 네트워크 환경이나 장비 상태에 따라 타임아웃 시간을 적절히 설정해야 할 수 있습니다.
  • 예를 들어, 연결이 끊어졌을 때 재시도하거나 오류 처리하는 로직을 추가할 수 있습니다.
modbus_set_timeout(mb, 5, 0);  // 5초 후 타임아웃

7. 모터 드라이버의 특정 기능

  • 모터 드라이버의 제어 방식이나 기능에 따라 추가적인 명령을 필요로 할 수 있습니다. 예를 들어, 가속도나 감속도, 정밀도 제어와 같은 기능이 있을 수 있습니다.
  • 이러한 명령은 모터 드라이버의 문서에서 제공되며, 이를 코드에 추가해야 할 수 있습니다.

다른 시스템에서 코드 수정 예시

  1. 다른 PLC나 모터 드라이버 사용 시:
    • IP 주소 변경: 장비의 IP 주소를 새 장비에 맞게 변경합니다.
    • 레지스터 주소 수정: 새로운 장비에서 사용하는 레지스터 주소에 맞게 수정합니다.
    • 슬레이브 ID 변경: 연결할 장비의 슬레이브 ID를 확인하고 수정합니다.
    • 레지스터 값 수정: 각 모터 드라이버가 요구하는 방향 값이나 명령을 수정합니다.
  2. Modbus RTU를 사용하는 경우:
    • modbus_new_tcp() 대신 modbus_new_rtu()를 사용하고, 시리얼 포트Baud rate를 설정해야 합니다.
mb = modbus_new_rtu("/dev/ttyS0", 9600, 'N', 8, 1);  // RTU의 경우, 시리얼 포트, Baud rate 설정
modbus_connect(mb);  // RTU 연결
  1. 타임아웃 설정을 추가한 예시:
     
modbus_set_timeout(mb, 5, 0);  // 5초 후 타임아웃 발생

결론

  • IP 주소, 포트 번호, 레지스터 주소, 슬레이브 ID, 레지스터 값 등은 사용 중인 모터 드라이버 또는 PLC의 설정에 맞게 수정해야 합니다.
  • 하드웨어 매뉴얼에서 제공하는 레지스터 주소명령 값을 참고하여 코드를 조정해야 합니다.
  • Modbus RTUModbus TCP의 차이를 이해하고, 해당하는 통신 프로토콜을 사용해야 합니다.
728x90