MODBUS 버스 제어 시스템의 기술적 특성

무료무료 기술 자료

이 글은 바로 읽을 수 있으며 기초 학습과 검색 유입에 적합합니다.

MODBUS 버스 제어 시스템의 기술적 특성

MODBUS总线控系统的기술特征
MODBUS통신 프로토콜是一种工业现场总线통신 프로토콜,它定义的是一种设备제어기可以识别和使用的信息帧结构,独立于物理层介质,可以承载于多种네트워크유형中。

MODBUS프로토콜把통신参与者规定为“마스터”(Master)和“슬레이브”(Slave),데이터和信息的통신遵从主/从모드,当它적용于표준MODBUS네트워크时,信息被直接传送。

MODBUS总线네트워크中的各个智能设备通过异步串行总线연결起来,只允许一个제어기作为마스터,其余智能设备作为슬레이브。

采用命令/应答的통신방식,마스터发出请求,슬레이브应答请求并送回데이터或状态信息,슬레이브不能够自己보내기信息。

MODBUS프로토콜定义的各种信息帧형식,설명了마스터제어기访问슬레이브设备的过程,规定슬레이브怎样做出应答响应,以及检查和보고서传输错误等。네트워크中的每个从设备都必须分配给一个唯一的주소,只有符合주소要求的从设备才会响应主设备发出的命令。


由于MODBUS总线系统개발成本低,简单易用,并且现在已有很多산업 제어器、PLC、变频器、显示屏等都具有MODBUS통신 인터페이스,所以它已经成为一种公认的통신표준。

通过MODBUS总线,可以很方便地将不同厂商生产的控制设备连成工业네트워크,进行集中监控。

MODBUS最初为PLC통신而设计,它通过24种总线命令实现PLC与外界的信息交换。这些总线命令对应的통신功能主要包括AI/AO、DI/DO的데이터传送。

但不是很多MODBUS设备的控制只使用其中的几条命令,对其余命令不做反应。

MODBUS통신형식

MODBUS프로토콜定义了两种传输모드,即RTU(Remote TerminalUnit)和ASCII。

在RTU모드中,1바이트的信息作为一个8位문자被보내기,而在ASCII모드中则作为两个ASCII문자被보내기,如보내기문자“20”时,采用RTU모드时为“00100000”,然而采用ASCII모드则成为“00110010”+“00110000”(ASCII문자的“2”和“0”)。

可见,보내기同样的데이터时,RTU모드的效率大约为ASCII모드的两倍。

一般来说,데이터量少而且主要是文本时采用ASCII;통신데이터量大而且是2진수数值时,多采用RTU모드。
마스터一次可向一个或所有슬레이브보내기통신请求(或指令),主设备通过消息帧的주소域来选通从设备。

마스터보내기的消息帧的콘텐츠和顺序为:슬레이브 주소、기능 코드、데이터域(데이터시작주소、데이터量、데이터콘텐츠)、CRC 검증码;슬레이브应答的信息콘텐츠和顺序与마스터信息帧基本相同。

MODBUS除了定义통신기능 코드之外,同时还定义了出错码,标志出错信息。마스터수신到错误码后,根据
错误的原因采取相应的措施。슬레이브应答的데이터콘텐츠依据기능 코드进行响应,例如功能代码03要求읽기슬레이브设备中유지 레지스터的콘텐츠。

CRC 검증的实现

MODBUS통신的RTU모드中,规定信息帧的最后两个바이트用于传递CRC(Cyclic RedundancyCheck,循环冗余체크섬)码。

보내기方将信息帧中주소域、기능 코드、데이터域的所有바이트按规定的방식进行位移并进行XOR(异或)계산,即可得到2바이트的CRC码,并把包含CRC 검증码的信息帧作为一连续的流进行传输。

수신方在收到该信息帧时按同样的방식进行계산,并将结果同收到的CRC码的双바이트比较,如果一致就认为통신正确,否则认为통신有误,슬레이브将보내기CRC错误应答。
RTU모드一般采用CRC-16冗余체크섬方法,CRC-16的체크섬为16位(2바이트),其中低바이트在前,高바이트在后。

实现CRC 검증有两种方法:根据CRC 검증的定义公式进行계산,或者在程序中建立CRC 검증值表。

在程序中使用前者更容易实现,这里需要使用CRC生成多项式X16+X15+X2+1。

该多项式对应的码组스케일 계수为18005H(16진법),去除最高位,对应的16位余数为8005H,即为CRC-16상수。

CRC-16체크섬过程如下:

将CRC레지스터的每一位预置为1;把该레지스터 값与8bit的信息帧데이터进行异或,结果存于该레지스터;对CRC레지스터从高到低进行移位,在最高位(MSB)的位置补零,而最低位(LSB,移位后已经被移
出CRC레지스터)如果为1,则把레지스터与CRC-16상수进行异或,否则如果LSB为零,则无需进行异或。重复上述的由高至低的移位8次,第一个8bit데이터处理完毕,用此时레지스터的值与下一个8bit데이터异或并进行如前一样的8次移位。

所有的문자处理完成后CRC레지스터内的值即为最终的CRC值。CRC추가到消息中时,先加入低바이트,然后高바이트。

链路特征

MODBUS표준的物理层可以采用RS-232串行통신방식,但在长距离통신中常采用RS-422或RS-485代替。在多点통신情况下只采用RS-485방식,所以RTU모드下的MODBUS系统采用屏蔽双绞线,통신距离可达1000m。一条总线上最多可설정31个슬레이브设备。

传输线上的信息交换是半双工的,即同时只能有一台设备允许보내기信息,마스터在보내기下一条指令之前대기슬레이브回应,从而避免了线路的冲突。
RTU모드的传输형식是1个데이터 비트,2个정지 비트,没有奇偶패리티。통신데이터安全由控制매개변수CRC-16码保证。RTU수신设备依靠수신문자间经过的时间判断一帧的开始,如果经过3个半的문자时间后仍然没有新的문자或者没有完成帧,수신设备就会放弃该帧,并设下一个문자为新一帧的开始。

실제 프로젝트에 이 자료를 활용하시겠습니까?

도구 센터에서 프레임 분석, CRC 검증, 장비 디버깅을 진행하거나 요청을 제출하여 선정 및 연동 제안을 받아보세요.

엔지니어 회원

이 글을 실행 가능한 디버깅 자료로 활용하세요

가입하면 고급 프레임 분석, 자료 패키지 다운로드, 코드 예제, 엔지니어링 사례, 우선 기술 지원을 이용할 수 있어 실제 프로젝트 납품에 적합합니다.

고급 도구 무제한 이용
자료 패키지와 코드 패키지
완전한 엔지니어링 사례 라이브러리
우선 기술 지원 채널

답글 작성

이메일 주소는 공개되지 않습니다. 必填项已用 * 标注