什么是 Modbus 以及它如何工作?

무료무료 기술 자료

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

什么是 Modbus 以及它如何工作?
什么是 Modbus 以及它如何工作?插图

什么是 Modbus?

Modbus 是一种串行통신 프로토콜,由 Modicon 公司于 1979 年发布,用于与其可编程逻辑제어기(PLC)一起使用。简而言之,它是用于在电子设备之间的串行线路上传输信息的方法。请求信息的设备被称为 Modbus 클라이언트,提供信息的设备是 Modbus 服务器。在표준 Modbus 네트워크中,有一个클라이언트和多达 247 个服务器,每个服务器都有从 1 到 247 的唯一服务器주소。클라이언트还可以向服务器쓰기信息。

它用于什么?

Modbus 是一种开放프로토콜,这意味着制造商可以在其设备中构建它,而无需支付专利费用。它已成为工业界的표준통신 프로토콜,并现在是연결工业电子设备的最常见手段。它被广泛用于许多制造商的各个行业。Modbus 通常用于从仪器和控制设备传输信号到主제어기或데이터采集系统,例如用于测量온도和湿度并将结果传输到계산机的系统。Modbus 通常用于将监控계산机与远程终端单元(RTU)연결在一起,这在监控和데이터采集(SCADA)系统中使用。Modbus 프로토콜的버전存在于串行线路(Modbus RTU 和 Modbus ASCII)和以太网(Modbus TCP)中。

它如何工作?

Modbus 是在设备之间通过串行线路传输的。最简单的设置是单个串行电缆연결两个设备的串行포트,即클라이언트和服务器。

什么是 Modbus 以及它如何工作?插图1

데이터被보내기为一시리즈称为位的一和零。每个位都作为电压보내기。零以正电压보내기,而一以负电压보내기。这些位보내기得非常快。典型的传输速度为 9600 통신 속도(每秒位数)。

什么是16진수?

在解决문제时,보기实际的原始데이터被보내기是有帮助的。长串的1和0很难阅读,所以位被组合并以16진수形式显示。每个 4 位块由从 0 到 F 的十六个문자之一表示。

什么是 Modbus 以及它如何工作?插图2

每个 8 位块(称为바이트)由从 00 到 FF 的 256 个문자对之一表示。

데이터如何存储在표준 Modbus 中?

信息存储在服务器设备中,有四种不同的表。两个表存储开/关的离散值(코일),而另外两个表存储数字值(레지스터)。코일和레지스터都有只读表和读写表。每个表有 9999 个值。每个코일或接点都是 1 位,并分配了데이터주소从 0000 到 270E。每个레지스터都是 1 字 = 16 位 = 2 바이트,也有데이터주소从 0000 到 270E。

什么是 Modbus 以及它如何工作?插图3

코일/레지스터번호可以被看作是位置名称,因为它们不出现在实际的消息中。데이터주소用于消息中。例如,第一个유지 레지스터,번호为 40001,具有데이터주소 0000。这两个值之间的差异是偏移量。每个表都有不同的偏移量,分别为 1、10001、30001 和 40001。

服务器 ID 是什么?

네트워크中的每个服务器都被分配一个唯一的单元주소,从 1 到 247。当클라이언트请求데이터时,它보내기的第一个바이트是服务器주소。这样,每个服务器在第一个바이트后就知道是否要忽略消息。

什么是기능 코드?

클라이언트보내기的第二个바이트是기능 코드。这个数字告诉服务器要访问哪个表,以及是从表中읽기还是쓰기。

什么是 Modbus 以及它如何工作?插图4

CRC 是什么?

CRC 代表循环冗余检查。它是추가到每个 Modbus 消息末尾以用于错误检测的两个바이트。消息中的每个바이트都用于계산 CRC。수신设备还계산 CRC 并将其与보내기设备的 CRC 进行比较。如果消息中的一个位수신错误,CRC 将不同,将导致错误。

Modbus 命令和响应的형식是什么?

데이터유형是什么?

FC03 的예제显示,레지스터 40108 包含 AE41,它转换为 16 位 1010 1110 0100 0001。但这是什么意思?嗯,它可以表示几种不同的 16 位데이터유형:

  • 16 位无符号整数(介于 0 到 65535 之间的整数)레지스터 40108 包含 AE41 = 44609(16진수转10진수)
  • 16 位有符号整数(介于 -32768 到 32767 之间的整数)AE41 = -20927(将16진수转换为10진수后的包装,如果大于 32767,则减去 65536)
  • 两个문자的 ASCII 문자串(2 个문자字母)AE41 = ® A
  • 离散的开/关值(与 16 位整数相同,具有值 0 或 1。16진수데이터将是 0000 或 0001)레지스터 40108 还可以与 40109 结合以形成这些 32 位데이터유형中的任何一种:
  • 32 位无符号整数(介于 0 到 4,294,967,295 之间的数字)40108,40109 = AE41 5652 = 2,923,517,522
  • 32 位有符号整数(介于 -2,147,483,648 到 2,147,483,647 之间的数字)AE41 5652 = -1,371,449,774
  • 32 位双精度 IEEE 浮点数。这是一个允许使用约七位小数的 32 位数表示任何实数(带有小数点的数字)的数学公式。AE41 5652 = -4.395978E-11。这是一个用于 4 바이트或 2 个字的입력的 IEEE 浮点계산器。要下载副本,请右键单击并选择“另存为…”。
  • 四个문자的 ASCII 문자串(4 个문자字母)AE41 5652 = ® A V R更多레지스터可以组合以形成更长的 ASCII 문자串。每个레지스터用于存储两个 ASCII 문자(两个바이트)。

바이트和字排序是什么?

Modbus 사양没有精确定义데이터存储在레지스터中的방식。因此,一些制造商在其设备中实现了 Modbus 以存储和传输高바이트,然后是低바이트(AE 在 41 之前)。

另外,其他设备存储并传输低바이트(41 在 AE 之前)。同样,当레지스터组合以表示 32 位데이터유형时,一些设备将高 16 位(高字)存储在第一个레지스터中,剩下的低字存储在第二个레지스터中(AE41 在 5652 之前),而其他设备则相反(5652 在 AE41 之前)。

바이트或字以任何顺序보내기无所谓,只要수신设备知道期望的방식是哪一种。例如,如果要将 29,235,175,522 作为 32 位无符号整数보내기,它可以以这四种방식之一排列。

AE41 5652 高바이트在前 高字在前

5652 AE41 高바이트在前 低字在前

41AE 5256 低바이트在前 高字在前

5256 41AE 低바이트在前 低字在前

什么是 Modbus 映射?

Modbus 映射只是为一个个体服务器设备定义的列表,它定义了데이터是什么(例如压力或온도读数),데이터存储在哪里(哪个表和데이터주소)

데이터如何存储(데이터유형、바이트和字排序)

一些设备内置了制造商定义的固定地图。而其他设备允许操作员설정或编程自定义地图以满足其需求

Modbus ASCII 和 Modbus RTU 之间有什么区别?

Modbus RTU 和 Modbus ASCII 使用相同的프로토콜。唯一的区别是在电线上传输的바이트与 RTU 以2진수形式呈现,并且使用 Modbus RTU 时以可读的 ASCII 形式呈现。需要注意的是,RTU 消息没有Start_of_text 标志。통신中的수신方使用“静默”时间来确定新消息的开始。ASCII 具有文本기호。2진수消息比 ASCII 消息要短,因此在理论上传输/수신速度更快。您可能会对 HMI/SCADA 中的更新速度약 100 毫秒感到满意,可以选择任何一种통신방식。

总结:一般情况推荐使用 RTU;如果在 WinNT 上使用 RTU 出现超时문제或者使用较慢的통신媒体,如 300 bps 或拨号调制解调器时,请使用 ASCII。对于 Modbus 的大多数 OPC 服务器支持 ASCII 和 RTU 통신。

什么是扩展레지스터주소?

由于模拟출력유지 레지스터的范围为 40001 到 49999,这意味着레지스터不能超过 9999 个。虽然这通常对大多数적용足够,但也有一些情况下需要更多的레지스터。레지스터 40001 到 49999 对应데이터주소 0000 到 270E。如果我们使用剩余的데이터주소 270F 到 FFFF,将有多达 6 倍多的레지스터可用,总计 65536 个。这将对应于레지스터번호从 40001 到 105536。许多 Modbus 软件驱动程序(用于클라이언트 PC)是根据 40001 到 49999 的限制编写的,无法访问服务器设备中的扩展레지스터。而且,许多服务器设备不支持使用扩展레지스터的地图。但另一方面,某些服务器设备支持这些레지스터,某些클라이언트软件可以访问它,尤其是如果编写了自定义软件。

如何使用 2 바이트服务器주소?

由于通常使用一个바이트来定义服务器주소,并且네트워크上的每个服务器都需要唯一的주소,所以네트워크上的服务器数量是有限的,最多为 256。Modbus 사양中定义的限制甚至更低,为 247。要超越这个限制,可以对프로토콜进行修改,以使用两个바이트作为주소。클라이언트和服务器都需要支持此修改。使用两바이트주소可以将네트워크中服务器的数量限制扩展到 65535。默认情况下,Simply Modbus 软件使用 1 바이트주소。입력주소大于 255 时,软件会自动전환到 2 바이트주소,并保持在此모드下,直到手动닫기 2 바이트寻址。

如何보내기事件和历史데이터?

Enron Modbus 包括用于移动事件和历史데이터的命令。

什么是 Enron Modbus?

Enron Modbus 是由 Enron 公司개발的对표준 Modicon Modbus 통신 프로토콜的修改。请参阅 Enron Modbus 以获取详细信息。

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

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

엔지니어 회원

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

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

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

답글 작성

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