2014-12-28 3 views
0

Modbus 프로토콜을 통해 장치를 인터페이스하고 있습니다.modbus에서 싱글 비트 쓰기

레지스터 읽기 및 쓰기 명령이 있습니다 (레지스터 = 2 바이트).

그러나 종종 레지스터에는 여러 구성 플래그가 비트로 포함되어 있으며 그 중 하나만 작성해야합니다.

나는 그것을 읽을 수 있고, 깃발을 수정하고 그것을 다시 쓸 수 있지만 그게 옳은가?

코일 작성에 대한 몇 가지 명령을 보았습니다. 코일이 무엇인지는 확실하지 않습니다. 조금입니까? 그렇다면 코일의 주소는 어떻게 얻습니까?

+0

전자 제품을 배우고 제어 할 실제 장비에 대해 알아볼 수 있습니다. –

+0

@JoachimPileborg 데이터 시트가 있지만 매우 혼란 스럽습니다. 중국에서 번역 한 것 같습니다. 내가 전자 제품을 배워야한다고 생각하는 이유를 모르십니까? 나는 "코일"이 "인덕터"를 의미하는 것은 의심 스럽지만, 릴레이를 사용하여 모든 것이 끝났을 때부터 단지 유물 일뿐입니다. – MightyPork

답변

1

이 명령을 마스크 쓰기 레지스터, 기능 코드 0x16이라고합니다. 불행히도 장치가 실제로이 기능을 지원하는지 확인해야합니다.

그렇지 않은 경우 원래 제안한 사항 (읽기/수정/쓰기)을 수행해야합니다. 이것은 결코 안전한 작업이 될 수 없다는 것을 알고 있어야합니다. 값을 읽는 시간과 수정 된 값을 다시 쓰는 시간 사이에 값이 변하지 않는다는 것을 보장 할 방법이 없습니다.

코일은 Modbus (홀딩 레지스터, 입력 레지스터, 코일, 이산 입력)의 네 가지 데이터 영역 중 하나이며, 예를 들어 부울/비트이지만 코일의 값이 맞는지는 중요하지 않습니다 읽기/쓰기가 레지스터에 비트로 저장됩니다.

관련 문제