2017-02-03 8 views
1

JavaFX의 데스크탑 응용 프로그램 용 USB 포트 (USB-to-RS-485 변환기 사용)를 통해 RS-485 인터페이스를 통해 일부 데이터 수집기 ​​장치에서 데이터를 읽어야합니다. 그래서 나는 연결을 확인하고 적당한 값을 얻는 것에 누적했다.USB로 연결된 RS-485에서 데이터를 얻는 방법

데이터 수집기 ​​장치는 PV 모듈 (태양 에너지)에서 생성 된 전류, 전력 등의 정보를 수집합니다. 이 장치에는 유일한 RS-485 포트가 있습니다. 설명서에서 읽으면서 Modbus RTU 프로토콜 (설정 : 9600-8N1)을 사용합니다.

솔직히 말해서 COM 포트 및 장치에서 작업 한 것은 처음 경험입니다. 그래서 핀을 올바르게 연결하는지조차 알지 못합니다. RS-485, Modbus와 관련된 많은 것을 읽었습니다. 그러나 여전히, 나는 첫발을 내딛고있다.

그래서 간단한 UTP 케이블을 사용하여 연결합니다. 그리고 나는 무엇을했는지 :

  1. This is how I connect USB-to-RS485 converter
  2. And this is about Data Aggregator Device

윈도우는 PC에 USB를 연결 한 후, 가상 "COM3"포트를 발견했다. 그런 다음 Bray가 Terminal 1.9와의 연결을 확인하려고합니다. 나는 뭔가를 보내려고 노력한다. 그리고 메시지를 받으면서 나에게 몇 가지 데이터를 보냈습니다. 그러나 모든 것이 잘 연결되어 있다는 것을 의미하지는 않습니다. 또한 터미널도 나를 보여줍니다 프레임 오류. "마스터 - 슬레이브"방식에 기반한 Modbus 프로토콜입니다. 따라서 클라이언트로서의 PC는 "Master"이고 서버로서의 장치는 "Slave"입니다. 나는 예상되는 응답을 얻기 위해 노예에게 어떤 요구를 보내야한다. 하지만, 어떻게?! 제발 내 연결을 확인하십시오! 나는 다음에해야할 일을 모른다.

답변

1

RS-485는 차동이며 단 2 개의 와이어 만 있으면 접지 와이어 (GND)를 안전하게 제거 할 수 있습니다. 그런 다음 USB-to-RS485 변환기의 R + 및 R-에 전선을 연결하십시오.

아무 것도 보내지 않았습니까? Modbus에는 최종 바이트 인 CRC가 필요합니다.이 CRC는 직접 결정하기가 어렵습니다. 유효한 Modbus 패킷을 만들었습니까?

유효한 모드 버스 패킷은 수신기 주소, 페이로드 길이, 데이터 자체와 최종 CRC가 필요

+0

답장을 보내 주셔서 감사합니다. GND를 제거했습니다. 그래서, 내가 올바르게 이해한다면 USB 변환기의 A와 B 대신 R +와 R-에 전선을 연결해야합니까? 그리고 그 장치는 어떨까요? 같은 것을해야합니까? – catscoolzhyk

+0

방금 ​​아무 것도 보내지 않았습니다. 물론, 좋은 경우는 아닙니다. 방금 가상 포트에 대한 반응을 보려고했습니다. 나는 보내는 법을 모른다. 나는 그 패킷이 헤더, PDU, 체크섬을 포함한다는 것을 안다. 적절한 패킷을 보내는 방법을 몇 가지 기본 예제로 보여 주면 좋을 것입니다! P.S. : Java로 프로젝트를 만들고 싶습니다. 그래서 Java로 만들 수 있습니까? 나는 많은 도서관을 발견했다. 그러나 가장 좋은 것은 무엇입니까? PSS : http://forum.easyelectronics.ru/download/file.php?id=30525&sid=a73ca588be24d221b7ffe32118de379a&mode=view 터미널 – catscoolzhyk

+0

에서 수행 한 작업은 먼저 태양에 의해 예상되는 정확한 패킷 형식을 알아야합니다. 인버터. 설명서를 확인하십시오. 거기에 있어야합니다. –

1

내가 자바에 대해 알고하지 않습니다,하지만 당신은 장치 프로토콜의 규격이있는 경우, 당신은 분명히 사용할 수 있습니다 modbus에 메시지를 보내고 다시 읽는 터미널 프로그램. 그렇게하면 프로토콜 테스트를 거치게되고 맞춤 소프트웨어를 나중에 만들지 않아도됩니다. 그러나 당신이 메시지를 보내고 터미널 소프트웨어를 사용하여 의미있는 메시지를 얻을 때까지 나는 그것에 충실 할 것을 권한다. https://www.youtube.com/watch?v=OvRD2UvrHjE

가장 어려운 부분은 CRC마다 시간을 계산한다 :

이 YouTube 동영상 모드 버스 RTU 패킷 포맷에 대해 필요한 기본 지식을 제공 할 것입니다. 그러나 운좋게도 Docklight 터미널을 다운로드 할 수 있습니다. 실제로 Modbus를 위해 CRC를 자동으로 계산하고 패킷의 마지막 위치에 추가하는 옵션이 있습니다. 홈페이지에서 무료 버전을 다운로드 할 수 있습니다.

docklight.de

매우 간단합니다. Bray 터미널과 동일합니다. 그리고 모든 패키지에 대해 Modbus CRC 계산을 설정하는 예제입니다. https://docklight.de/manual/sendingmodbuscommandswithc.htm

나는 또한 훌륭한 지원을 알고 있습니다. 일단 장치에 성공적으로 메시지를 보내고 대답을 얻으면 프로토콜이 실제로 작동하는 방식을 이해할 수 있으므로 작업이 훨씬 쉬워집니다. Modbus RTU는 매우 성숙한 프로토콜이지만 많은 기존 시스템이이를 사용하기 때문에 여전히 사용되며 일부 장치에 추가하는 것은 매우 간단합니다. 모든 장치는 Modbus에 연결하기 위해 직렬 포트 (UART)가 필요합니다. 따라서 그것을 이해하고 사용하는 것은 그렇게 어렵지 않습니다. 이 메시지에서 링크를 제공 한 모드 버스 전용 설명 비디오와 터미널을 확인하십시오.

+0

대단히 감사합니다. @ 블라디미르! 그것은 매우 중요한 정보입니다. 어떻게 작동하는지 이해하지 못했고 매일 내 마음이 부러 졌기 때문에 불행히도이 장치를 만든 회사는 프로토콜 사양을 공유하고 싶지 않습니다. 그래서 다음 단계가 거절되었습니다. – catscoolzhyk