modbus-gatewayはffutopによってオープンソース化された高いパフォーマンスをModbusゲートウェイであり、Go言語で書かれており、TCP、RTU、RTU-over-TCPプロトコルの任意のブリッジ、Slave IDベースのマルチスレーブルーティング、内蔵のローカル仮想スレーブ、およびマルチマスター同時キューをサポートしている。この記事では、アーキテクチャ原理、インストール、コンパイル、構成の詳細な説明から実際の展開まで、modbus-gatewayを使用して産業用グレードのModbusプロトコル変換ゲートウェイを構築する方法を完全に紹介します。
Modbus-gatewayの概要
1.1 什么是modbus-gateway
modbus-gatewayは構成駆動の高いパフォーマンスをModbusプロトコルゲートウェイであり、コア機能は異なるModbusトランスポートプロトコル間のブリッジ変換である。典型的なシナリオは、上位コンピュータ(SCADA/PLC)がModbus TCP経由でゲートウェイに接続し、ゲートウェイがRS 485シリアルポート(Modbus RTU)経由でフィールド機器に接続し、TCPからRTUへのプロトコル変換を実現する。また、スレーブID Slave IDベースのルーティングもサポートしており、異なるスレーブアドレスのリクエストを異なる下流デバイスに配信することができます。
1.2主な特徴
- 全协议桥接:TCP、RTU、RTU-over-TCP三种协议在上游和下游可任意组合
- Slave IDルート:スレーブアドレス別に異なるダウンストリームにリクエストを配信し、サポート範囲(1-10)とリスト(1、2、3)
- ローカルバーチャルスレーブ:内置虚拟Modbusスレーブ,サポートmemory/file/mmap三种持久化
- 複数の主要駅複数の上流マスタが同時に接続され、各下流はバス競合を防ぐために独立したシリアル化キューを持つ。
- RS485 RTS制御:完全的RTS信号时序控制,サポート工业级RS485変換器です。
- マルチゲートウェイインスタンス単一のプロセスで複数の独立したゲートウェイインスタンスを実行できる
- PPROFパフォーマンス分析:内置Go pprof端点,可实时诊断CPU/内存/协程
- 高いパフォーマンスをGoネイティブ並行性、1つのインスタンスで毎秒数千のリクエストを処理
- ゼロ依存性の導入:编译为单个二进制文件,无需运行时环境
1.3典型的な応用シナリオ
- TCPからRTUへ:イーサネットホストコンピュータはRS 485シリアルデバイスにアクセスする(最も一般的な)
- RTUからTCPへ:シリアルマスタがイーサネットModbus TCPデバイスにアクセスする
- 駅からもっと集まる。複数のRS 485バスを持つデバイスを1つのTCPポートに集約
- プロトコルリレーRTU-over-TCPと標準TCP/RTU間の変換
- デバイスシミュレーションローカル仮想スレーブで存在しないModbusデバイスをエミュレートする
- リモートアクセス:フィールドRS 485デバイスをTCPサービスとして公開し、リモートデバッグをサポート
2.構造原理
modbus-gateway的架构分为三层:上游(Upstream)、ゲートウェイ核心(Gateway)、下游(Downstream)。
������������
│ │ │ Upstreamsアップストリーム │ │ │
│ ― ― ― ― ― ― ― ― ― ― ― ― ― ― │ │ │
│ TCP Master │ RTU-over-TCP │ │ RTU Master │ │ │ │ │ │
│ 0.0.0.0 502 │ 0.0.0.0 503 │ /dev/ttyS0 │ │ │ │ │ │
│ │ │ │
└─ ── ── ── ── ┼ ─ ── ── ── ── ── ── ── ── ┼ ─ ── ── ── ── ── ── ── ── ┼ ── ── ── ── ── ── ── ┘
│ │ │ │ │ │ │ │ │
┌─ ── ── ── ── ▼ ─ ── ── ── ── ── ── ── ── ▼ ─ ── ── ── ── ── ── ── ── ▼ ── ── ── ── ── ── ── ┐
│ │ │ ゲートウェイ·コア │ │ │
│ ― ― ― ― ― ― ― ― ― ― │ │ │
│ │キュー │バッファ │→│Serializer│→│SlaveID │ │ │ │ │ │
│キュー·バッファリング│バッファ│ │シリアライズ │ │ │ルーター │ │ │ │ │ │
│ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ │ │ │
│ │ │ ��--------------│
│ │ │ ローカル·スレーブ │ │ │ │
│ │ │ │ローカル仮想スレーブ │ │ │ │
│ │ │ 3---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
└ ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ┬ ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ┘
│ │ │
����������������
│ │ │ ダウンストリーム#ダウンストリーム# │ │ │
│ ― ― ― ― ― ― ― ― ― ― ― ― ― ― │ │ │
│ RTUスレーブ ■ TCPスレーブ ホーム>ローカル>> │ │ │
│ │ slave_ids │ │ slave_ids │ │ slave_ids │ │ │ │ │ │
│ │ │ 1 ~ 10 │ │ │ 11 ~ 20 │ │ │ 100 │ │ │ │ │ │
│ /dev/ttyUSB0 │ 192.168.1.50 │ mmapストレージ │ │ │ │ │ │
│ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ │ │ │
└─ ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ┘
2.1主要メカニズムの説明
- キューバッファ各上流接続のリクエストが最初にキューに入り、リクエストの損失を避ける
- シリアライザー:同一下游的リクエスト被串行化执行,防止RS485バス冲突
- Slave IDルートリクエスト内のスレーブアドレスに基づいて、ルックアップテーブルが送信する下流を決定します。
- ローカルバーチャルスレーブ:路由到localタイプ的リクエスト由ゲートウェイ内部直接レスポンス,无需真实デバイス
C.インストールとコンパイル
# 方式一:源码编译(おすすめ)
git clone https://github.com/ffutop/modbus-gateway.git
cd modbus-gateway
go build -o modbus-gateway
# 交叉编译(在Linux上编译Windows版本)
GOOS=windows GOARCH=amd64 go build -o modbus-gateway.exe
# 交叉编译ARM版本(Raspberry Piについて/組込みデバイス)
GOOS=linux GOARCH=arm GOARM=7 go build -o modbus-gateway-arm
# 方式二:下载预编译二进制
# 从GitHub Releasesページ下载对应プラットフォーム的二进制
# https://github.com/ffutop/modbus-gateway/releases
# 验证インストール
./modbus-gateway -help
# 出力命令行参数説明
# 表示版本
./modbus-gateway -version
四、基本構成:TCPからRTUゲートウェイ
最も一般的な的场景:トップマシン経由Modbus TCP连接ゲートウェイ,ゲートウェイ通過RS485シリアルポートサイトをつなぐRTUデバイス。
#config-tcp2 rtu.yaml-TCPからRTUベースの構成
gateways
- name "t-to-r-gateway"
#上流:TCPポートをリッスンし、ホストコンピュータ接続を受け入れる
upstreams
- type "t"
tcp
address "0.0.0.0 502" すべてのネットワークカードのポート502をリッスンする
#下流:RS 485シリアルポート経由でフィールド機器を接続
downstreams
- type "rtu"
slave_ids "1-10" #ステーションID 1-10からのリクエストをこのシリアルポートにルーティング
シリアルserial
device "/dev/ttyUSB0" # USBからRS485デバイスへ
baud_rate:96 0 0 #ボーレート
data_bits 8 #データのビット
parity“N” #チェックビットN=なしE=偶数O=奇数
_bits #ストップ·ポイント
timeout "500ms" #読み取りタイムアウト
rqst_pause "100ms" リクエスト間の最小間隔
log
level "info" #ログレベル/info/warn/error
file """ #ログファイルパス、空= stdoutに出力
#ゲートウェイの開始
./ modbus-gateway -config-t2r.yaml
テスト:ゲートウェイにpymodbusまたはQModMasterを使用して接続する
#接続アドレスゲートウェイIP 502
スレーブID:1-10(RS 485シリアルポートにルーティングされます)
#コード:01/02/03/04/05/06/15/16すべてサポート
#ログを见て要求転送を
# INFO TCP Master Accepted Conn from 192.168.1.100:54321
#ing slave_id=1 to downstream r/dev/ttyUSB0
# INFO request FC= 0 3 addr=0 count= 10-response OK
五、多スレーブ局ルート設定
当现场有多条RS485バス或多种タイプデバイス时,可以経由Slave ID路由将リクエスト分发到不同下游。
#config-multi-slave.yaml-マルチスレーブルート
gateways
- name "-slave-gateway"
upstreams
- type "t"
tcp
address "0.0.0.0 502"
downstreams
#ダウンストリーム1:RS485バスA -温度センサ(ステーション1-10から)
- type "rtu"
slave_ids "1-10"
シリアルserial
device "/dev/ttyUSB0"
baud_rate:96 0 0
data_bits 8
parity“N”
_bits
timeout "500ms"
#下流2:RS485バスB -電力計装(ステーション11-20から)
- type "rtu"
slave_ids "11-20"
シリアルserial
device "/dev/ttyUSB1"
baud_rate(19200)
data_bits 8
parity "E" #電力計の定期検査
_bits
timeout "300ms"
#ダウンストリーム3:Modbus TCPデバイス-周波数コンバータ(スレーブ21)
- type "t"
slave_ids "21"
tcp
address "192.16 8.1.50 502"
#ダウンストリーム4ローカル仮想スレーブ-ゲートウェイ状態スレーブ100
- type "local"
slave_ids "100"
local
persistence
type "memory" 再起動後に失われる記憶
log
level "info"
ルーティングルールの説明:
- slave_ids "1-10":ステーションID 1から10までのすべてのリクエストに一致します。
- slave_ids "1,2,3"スレーブID 1、2、3に一致
- slave_ids "1- 5、10、20 -25":混合範囲とリスト
- slave_ids """(空):他のダウンストリームにマッチしないすべてのリクエストにマッチします(デフォルトルート)。
- スレーブIDが複数のダウンストリームで一致する場合、構成順に最初に一致するダウンストリームが有効になります。
六、本地虚拟スレーブ
modbus-gatewayにはローカル仮想スレーブ機能が組み込まれており、実際のデバイスなしでModbusリクエストに応答でき、3つの永続性モードをサポートしている。
# config-local-slave.yaml - 本地虚拟ステーションからの設定
gateways:
- name: "local-slave-demo"
upstreams:
- type: "tcp"
tcp:
address: "0.0.0.0:502"
downstreams:
# 虚拟スレーブ1:内存モード(再起動データ丢失,适合测试)
- type: "local"
slave_ids: "100"
local:
persistence:
type: "memory"
# 虚拟スレーブ2:文件モード(データ持久化到文件)
- type: "local"
slave_ids: "101"
local:
persistence:
type: "file"
path: "/data/modbus-slave-101/"
# 虚拟スレーブ3:mmapモード(内存マッピング文件,高いパフォーマンスを+持久化)
- type: "local"
slave_ids: "102"
local:
persistence:
type: "mmap"
path: "/data/modbus-slave-102/"
log:
level: "debug"
6.1 3つの持続性の比較
| モダリティ | スピード感 | 持続性の問題 | 適用可能なシーン |
|---|---|---|---|
| memoryメモリ | 最速である。 | いいえ(再起動が失われる) | テスト、暫定シミュレーション |
| file | スローダウン。 | はい。 | 永続性が必要だが書き込み頻度が低い |
| mmapは | 快 | はい。 | 生産環境、高周波読み書き |
RTU-over-TCPの構成
RTU-over-TCPは、Modbus RTUフレームをTCPに直接カプセル化したものであり、一部のシリアルサーバデバイスで一般的に使用される。modbus-gatewayは、上流または下流としてRTU-over-TCPをサポートします。
#config-rtu-over-tcp.yaml-RTU-over-TCPの設定
gateways
- name "r-over-t-gateway"
upstreams
#アップストリーム1:標準Modbus TCP(MBAPヘッダ付き)
- type "t"
tcp
address "0.0.0.0 502"
#アップストリーム2:RTU-over-TCP(raw RTUフレーム)
- type“r-over-t”
tcp
address "0.0.0.0 503" 異なるポートを区別する
downstreams
#下流:標準RTUシリアルデバイス
- type "rtu"
slave_ids "1-10"
シリアルserial
device "/dev/ttyUSB0"
baud_rate:96 0 0
data_bits 8
parity“N”
_bits
#ダウンストリーム:RTU-over-TCPデバイス(一部のシリアルポートサーバなど)
- type“r-over-t”
slave_ids "11-20"
tcp
address "192.16 8.1.100 4001" #シリアルサーバーアドレス
log
level "info"
VIII.マルチゲートウェイの例
単一のmodbus-gatewayプロセスは、互いに干渉することなく独自の上流リスニングと下流接続を持つ複数の独立したゲートウェイインスタンスを実行できます。
#config-multi-gateway.yaml-マルチゲートウェイインスタンス
gateways
#例1:ワークショップAゲートウェイ
- name "workshop-a"
upstreams
- type "t"
tcp
address "0.0.0.0 502"
downstreams
- type "rtu"
slave_ids "1-20"
シリアルserial
device "/dev/ttyUSB0"
baud_rate:96 0 0
data_bits 8
parity“N”
_bits
例2:ショップBゲートウェイ
- name "workshop-b"
upstreams
- type "t"
tcp
address "0.0.0.0 503" 異なる港で
downstreams
- type "rtu"
slave_ids "1-20"
シリアルserial
device "/dev/ttyUSB1"
baud_rate(19200)
data_bits 8
parity "E"
_bits
例3:エネルギー監視ゲートウェイ
- name "energy-monitor"
upstreams
- type "t"
tcp
address "0.0.0.0 504"
downstreams
- type "t"
slave_ids "1-5"
tcp
address "192.16 8.1.50 502"
#パフォーマンス分析(オプション)
pprof
enabled true
address "6060"
log
level "info"
file "var/log/modbus-gate.log"
RS 485高度な制御
对于需要精确控制RS485收发切换的工业场景,modbus-gateway提供了完全的RTS信号时序控制。
#config-rs485.yaml-RS485高度な制御
gateways
- name "rs485-industrial"
upstreams
- type "t"
tcp
address "0.0.0.0 502"
downstreams
- type "rtu"
slave_ids "1-10"
シリアルserial
device "/dev/ttyUSB0"
baud_115200
data_bits 8
parity“N”
_bits
timeout "300ms"
rqst_pause "50ms"
# RS485 RTS制御
rs485真 #RTS制御の有効化
delay_rts_before_send "1ms" #送信前のRTSセット遅延
delay_rts_after_send "1ms" #送信后のリセット遅延
rts__d_send true #送信中RTSがハイになる
rts__after_send false #送信後のRTS低レベル
log
level "debug"
9.1 RTSタイミングの説明
- rs485真:ハードウェアRTSフロー制御を有効にし、送受信方向を自動切り替えます。
- delay_rts_before_send:RTS置位后待機中多久再送信データ,确保RS485芯片切换到送信モード
- delay_rts_after_sendデータ送信が完了してからRTSをリセットし、最後のバイトが送信されるようにするまで待つ時間
- rts__d_send:送信期间RTS电平(true=高电平,false=低电平),取决于RS485芯片的极性
- MAX485などの一般的なRS 485チップ:DE/REピンは通常ハイ送信、ロー受信
十、Docker部署
# Dockerfile
From golang 1.22-alpine AS builder
ワークディル/アプリ
RUN apk add--no-cache git
RUN git clone https://github.com/ffutop/modbus-gateway.git.
RUN GO BUILD-O MODBUSゲートウェイ
alpineから3.19
RUN apk add--no-cache certificates
COPY--from =builder /app/modbus-gateway /usr/local/bin/
RYPOINT ["modbus-gateway"]
CMD ["-config"、"/etc/modbus-gateway/config.yaml"]
#docker-compose.yaml
version "3.8"
services
modbus-gateway
build.
container_name modbus-gateway
restart unless-stopped
ports
- “502 502” # Modbus TCP
- “503 503” #RTU-over-TCP
- “6060 - 6060” # Pprof
devices
- "/dev/ttyUSB0/dev/ttyUSB0" #RS 485シリアル
- "/dev/ttyUSB1/dev/ttyUSB1"
volumes
- ./ config.yaml:/etc/modbus-gateway/config.yaml:ro
- ./ data/data
log
driver "json-file"
options
max-size "10m"
max-file "3"
#ビルド&スタート
docker-compose up-d
#ログを見る
docker-compose logs-f
#再起動し
docker-compose restart
11、完全な戦闘:工場エネルギー監視ゲートウェイ
以下是一个完全的生产环境設定案例:工厂能源モニタリング系统,経由modbus-gateway将车间的パワーメーター、温湿度センサー和PLC统一接入SCADA系统。
#factory-energy.yaml-プラントエネルギー監視ゲートウェイ
gateways
- name "fact-energy-gateway"
upstreams
TCP経由のSCADAシステム
- type "t"
tcp
address "0.0.0.0 502"
downstreams
# 1号RS485バス:電力計装(ステーション1-8から)
- type "rtu"
slave_ids "1-8"
シリアルserial
device "/dev/ttyUSB0"
baud_rate:96 0 0
data_bits 8
parity "E"
_bits
timeout "500ms"
rqst_pause "100ms"
rs485真
delay_rts_before_send "1ms"
delay_rts_after_send "2ms"
RS 485バス# 2:温度センサ(ステーション9-16から)
- type "rtu"
slave_ids“9-16”
シリアルserial
device "/dev/ttyUSB1"
baud_4800
data_bits 8
parity“N”
_bits
timeout "1000ms"
# 3号485バス:PLC(スレーブ局17-20)
- type "rtu"
slave_ids "17-20"
シリアルserial
device "/dev/ttyUSB2"
baud_rate(19200)
data_bits 8
parity“N”
_bits
timeout "300ms"
#Ethernetデバイス:スマートメーター(スレーブステーション21)
- type "t"
slave_ids "21"
tcp
address "192.16 8.1.50 502"
#ローカル仮想スレーブ:ゲートウェイ自身の(スレーブ100)
- type "local"
slave_ids "100"
local
persistence
type "mmap"
path "/data/gate-status/"
#パフォーマンスモニタリング
pprof
enabled true
address "6060"
log
level "info"
file "/var/log/modbus-gateway/factory-energy.log"
11.1システムアーキテクチャの説明
- SCADAシステム接続ゲートウェイTCP 502ポート、すべてのデバイスへの統合アクセス
- ステーション1-8からUSB0(パワーメーター、96 00偶数検証)にルーティングされたリクエスト
- スレーブ9-16的リクエスト路由到USB1(温湿度センサー,4800検証なし。)
- ステーション17-20からUSB2(PLC、19200無検証)へのリクエストのルーティング
- ステーション21からの要求は、イーサネットスマートメーターに転送される
- スレーブ100由ゲートウェイ本地虚拟スレーブレスポンス,可写入ゲートウェイ実行状態の状態
- 各下流には独立したシリアル化キューがあり、1つのバスが遅いために他のバスに影響を与えない
十二、パフォーマンス最適化与モニタリング
12.1 PPROFパフォーマンス分析
# 有効pprof后,アクセス以下端点:
# http://localhost:6060/debug/pprof/ - 概览
# http://localhost:6060/debug/pprof/heap - 内存分析
# http://localhost:6060/debug/pprof/profile - CPU分析(30秒)
# http://localhost:6060/debug/pprof/goroutine - 协程分析
# 用go tool分析CPU
go tool pprof http://localhost:6060/debug/pprof/profile?seconds=30
# 进入pprof交互界面后:
# top10 - 表示CPU占用前10的函数
# web - 生成调用图(需要graphviz)
# list function - 表示函数级别的耗时
# 分析内存
go tool pprof http://localhost:6060/debug/pprof/heap
# inuse_space - 当前内存占用
# alloc_space - 累计分配
12.2パフォーマンス最適化の推奨事項
- 合理設定timeout:タイムアウト時間应略大于デバイス最大応答時間,过短导致丢包,过长降低效率
- rqst_pauseのリクエスト間隔はデバイスの応答速度に応じて調整され、遅いデバイスは100-200msを推奨します。
- ボーレートの最大化:在通信稳定的前提下尽量使用高ボーレート(115200)
- バッチ読み取りホストコンピュータは連続アドレスをできるだけ大量に読み取り、リクエスト数を減らす必要があります。
- 接続の多重化:トップマシン保持长连接,避免频繁建立TCP连接
- ステーションID計画から:同じバス上のデバイスは連続スレーブIDを使用し、ルーティング設定が容易です。
13よくある質問とチェック
| 問題は | 理由は | 解決策は |
|---|---|---|
| 上游接続成功です。但応答なし。 | スレーブID未マッチング到任何下游 | slave_ids設定を確認して、要求されたスレーブIDがルーティング範囲内にあることを確認する |
| RTUデバイスが応答しない | シリアルパラメータの不一致 | チェックボーレート、データ·ビット、検证ビット、停止ビットがデバイスと一致する |
| RS 485通信が不安定 | RTSのタイミングが正しくない | delay_rts_before/after_sendを調整し、配線と終端抵抗を確認します。 |
| 多マスター时データ错乱 | シリアル化キューが有効になっていません | ダウンストリームごとにシリアライズされたキューが1つしかないことを確認し、ログを確認します。 |
| TCP接続が拒否されました | ポートが占有されているかファイアウォール | チェック502ポート是否被其他程序占用,开放ファイアウォール |
| 仮想スレーブデータ消失 | メモリモードの使用 | 代わりにfileモードまたはmmapモードの永続化を使用 |
| 高延迟 | timeoutの設定が大きすぎる | デバイスの実際の応答時間に応じてtimeoutを縮小 |
| シリアルアクセス権が不十分 | ユーザーにシリアル·アクセス権がない | 将用户加入dialout组:sudo usermod -aG dialout $USER |
| RTU-over-TCPが動作しない | RTU-over-TCPではなく標準TCPです。 | デバイスプロトコルタイプの、TCP用type t |
| メモリの継続的な増加 | 接続の漏洩またはデータの蓄積 | 上流接続が正常にシャットダウンされているかどうかを確認するためのPPROF解析 |
十四、参照速検表の設定
| 設定项 | タイプの種類 | デフォルト値 | 説明書は |
|---|---|---|---|
| gateways[].name | string | - | ゲートウェイ名ログ識別用 |
| upams [].type | エヌム | - | t/r/r-over-t |
| upams []. t. | ストリング·ストリング | - | TCPリスニング·アドレス |
| downstreams[].type | エヌム | - | t/r/r-over-t/ local |
| downstreams[]. slave_ids | ストリング·ストリング | "" | ルーティングルール,null =すべて一致 |
| serial.device | ストリング·ストリング | - | シリアルデバイスのパス |
| serial.baud_ | int | - | ボーレート |
| serial.data_bits | intとは | 8 | データ·ビット |
| serial.parity | ストリング·ストリング | “N” | N/E/O |
| serial. stop_bits | intとは | 1 | ストップ·ビット |
| serial.timeout | 期間は | “500ミリ秒” | 読み取りタイムアウト |
| serial.rqst_pause | duration | “100ミリ秒” | リクエスト間の最小間隔 |
| serial.rs485 | Boolの意味 | false | RTS制御の有効化 |
| local.persistence.type | エヌム | - | memory / file / mmap |
| local.persistence.path | ストリング·ストリング | - | 永続化ディレクトリ |
| pprof.enabled | Boolの意味 | FALSE | プロファイルの有効化 |
| log.level | string | “info” | debug/info/warn/error |
| log.file | ストリング·ストリング | "" | ログファイルパス |
十五、学习リソース
- プロジェクトの住所github.com/ffutop/modbus-gateway
- 官方ドキュメント:http://modbus-gateway.ffutop.com/
- Modbusプロトコル仕様modbus.org/specs.php
- Go言語公式サイト:https://go.dev/
modbus-gatewayはGo言語で書かれた高いパフォーマンスをModbusゲートウェイであり、TCP/RTU/RTU-over-TCPの任意のプロトコルブリッジを設定駆動型で実装し、Slave IDベースのマルチスレーブルーティングとローカル仮想スレーブ機能により、複雑な産業現場のニーズに対応できます。この記事では、基本的なTCPからRTUへのマルチゲートウェイインスタンス、RS 485高度な制御、Dockerデプロイメント、完全なプラントエネルギーモニタリングまで、本番環境への展開に直接使用できます。導入前にローカル仮想スレーブでルーティングルールをテストし、実際のデバイスに接続することをお勧めします。
VIP专属:Go语言Modbusゲートウェイ完全なコードパッケージ
ffutop/modbus-gateway YAML設定ドライバ、TCP/RTU/ローカルマルチプロトコル変換、プラントエネルギーモニタリング設定。
完全なコードをダウンロードしてロックを解除 30歳以上。 工程実践パッケージの内容:スクリプトのデバッグ、クイックチェック·テーブル、项目模板、トラブルシューティング案例……
VIPデータベースからダウンロード 月額9.9ドル/年間199ドル