
Modbusプロトコル之所以能成为工业领域的“普通话”,秘诀在于它用了一种非常直观的方式来管理データ——把不同性质的データ分门别类地放在四个“抽屉”里。无论デバイス来自哪1つのブランド,只要遵循这个ルール,它们就能顺畅交流。
核心思想:2つ维度划分四个エリア
理解Modbus存储区的カテゴリ,就像整理衣柜,你只需要从2つ角度来思考:
- data type:データ是简单的“switch”,まだ一个具体的“数字”?
- 开关量(コイル):只有两种ステータス,非黑即白。例如,灯是亮まだ灭,阀门是开まだ关。这种データ在Modbus里称为“コイル”(Coil)。
- 模拟量(register):是一个连续变化的数值。例如,temperature25.6℃,压力0.8MPa,转速1500转。这种データ在Modbus里称为“register”(Register)。
- 操作权限:这个データ是只能“看”,まだ也能“改”?
- 読み取り専用:你只能読み取り它的ステータス,但不能修改。好比電気メーター上的读数,你只能看用了多少度电。
- 読み書き:你既能表示它的ステータス,也能修改它。好比手机的音量键,你可以看当前音量,也能调大调小。
把这2つ维度组合起来,就得到了Modbus的四个核心存储区,可以用下面的表格スピードマスター。:
| 存储区名称(俗称) | data type | 読み書き权限 | 可以把它想象成… | 典型アプリケーションシナリオ。 |
|---|---|---|---|---|
| コイルレジスタ(0区) | 开关量 | 読み書き | 电灯开关 | 控制继电器、电机启停、指示灯 |
| 离散入力レジスタ。(1区) | 开关量 | 読み取り専用 | ドアセンサー | 読み取り按钮ステータス、限位开关、故障信号 |
| 入力レジスタ。(3区) | 模拟量 | 読み取り専用 | 温度计 | 采集温度、压力、トラフィック等センサーはデータ |
| レジスタを保持する。(4区) | 模拟量 | 読み書き | 可設定的恒温器 | 设定目标速度、temperature,修改デバイス参数 |
四个“データ抽屉”的详细用法
1. コイルレジスタ(0区):指挥行动的“switch”
这是你用来发号施令的抽屉。master(如PLC或电脑)経由向这个エリア写入データ,直接控制现场デバイス的开关。
- How to use:你想启动一台电机,就向控制它的那1つのコイルアドレス写入“1”(ON);想停止,就写入“0”(OFF)。
- 好比:你在家里経由手机APPリモートコントロール。智能插座的开关。
2. 离散入力レジスタ。(1区):感知ステータス的“眼睛”
这个抽屉是デバイス的感觉器官,专门用来反映外部的开关ステータス变化。
- How to use:你只能読み取り它。比如,你想知道一个急停按钮是否被按下,就去読み取り对应的ショップ型入力アドレス,もし值是“1”,就表示按钮被按下了。
- 特点:因为是読み取り専用的,可以确保这些关键ステータス信号不会被意外修改,非常セキュリティ。
3. 入力レジスタ。(3区):汇报データ的“仪表”
这个抽屉里放着从现场采集来的リアルタイムデータ,通常是読み取り専用的模拟量。
- How to use:マスター定期(比如每秒一次)読み取り这个エリア,以モニタリング生产过程。例如,不断読み取り温度センサー在入力レジスタ。中的アドレス,来取得实时温度值。
- 好比:仪表盘上表示的车速和油量,你只能看,不能直接経由仪表盘去改变车速。
4. レジスタを保持する。(4区):存储设定的“大脑”
这是デバイス的設定中心和大脑,用于存放重要的デバイス参数和设定点。它允许読み書き,是功能最丰富的エリア。
- How to use:你可以在レジスタを保持する。中设定一个周波数変換器的目标動作頻度は(如40Hz),或者一个サーモスタット的目标温度(如80℃)。既可以読み取り当前设定值,也可以修改它们。
- 上級用法:一レジスタを保持する。只有16位,无法直接表示浮動小数点数等复杂データ。这时,需要将多个连续的レジスタ组合起来。例如,一个32位的単精度浮動小数点数通常需要占用2つ连续保持レジスタです。。
主な概念:アドレス那点事
很多新手会混淆“绝对アドレス”和“相对アドレス”,其实很简单:
- 绝对アドレス(给人看的):为了让我们エンジニア看着直观,容易設定。常用的是短アドレス模型,比如
40001。它表示The fourth one存储区(レジスタを保持する。)的The first oneデータ点。40001和400001是同一アドレスはこちら。,只是表示方法不同。40001是简化版,400001是完全版(长アドレス模型),能カバー最多65536アドレスはこちら。,但绝大多数デバイス用不到这么多,所以简化的40001更常见。
- 相对アドレス(给机器用的):在实际的Modbus通信报文中,为了节省空间和提高效率,使用的是Start from 0的偏移アドレス。例如,绝对アドレス
40001在报文中对应的相对アドレス就是0,40002对应1。
简单记:你在デバイス手册或软件設定里看到的(如40001)是绝对アドレス;而协议底层传输时,会自动将其转换为相对アドレス。プログラミング时留意软件要求哪种アドレス即可。
总结
Modbus経由这四个“データ抽屉”,为工业デバイス建立了一套清晰易懂的データ管理ルール:
- 想Control switch(如启动デバイス)→ 読み書き 0区(コイル)
- 想表示ステータス(如故障信号)→ read 1区(ショップ型入力)
- 想采集データ(如监测温度)→ read 3区(入力レジスタ。)
- 想設定参数(如修改设定值)→ 読み書き 4区(レジスタを保持する。)
Leave a Reply