
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
维护者: Michael Oberdorf IT-Consulting
源代码: https://github.com/cybcon/modbus-server
容器镜像: https://hub.docker.com/r/oitc/modbus-server
Modbus TCP Server是一个用Python编写的简单Modbus TCP服务器,支持预定义寄存器值。该服务器最初设计用于充当Modbus从机模拟系统,用于增强Modbus主机的测试以及测试从不同寄存器收集值的过程。
Modbus规范文档: PDF
bashdocker pull docker.xuanyuan.run/oitc/modbus-server
bashdocker run --rm -p 5020:5020 docker.xuanyuan.run/oitc/modbus-server:latest
默认配置文件将所有寄存器初始化为0x0000。如需设置自定义寄存器值,需创建自己的配置文件:
bashdocker run --rm -p 5020:5020 -v ./server_config.json:/server_config.json docker.xuanyuan.run/oitc/modbus-server:latest -f /server_config.json
或挂载配置文件替换默认配置,可省略文件参数:
bashdocker run --rm -p 5020:5020 -v ./server_config.json:/app/modbus_server.json docker.xuanyuan.run/oitc/modbus-server:latest
yamlservices: modbus-server: container_name: modbus-server image: docker.xuanyuan.run/oitc/modbus-server:latest restart: always command: -f /server_config.json ports: - 5020:5020 volumes: - ./server.json:/server_config.json:ro
| 环境变量名 | 描述 | 是否必需 | 默认值 |
|---|---|---|---|
CONFIG_FILE | 用于构建初始Modbus从机的配置文件路径 | 可选 | /app/modbus_server.json |
| 参数 | 描述 | 默认值 |
|---|---|---|
-f, --file | 配置文件路径 | /app/modbus_server.json |
默认配置文件内容
容器中的/app/modbus_server.json文件包含以下默认配置:
json{ "server": { "listenerAddress": "0.0.0.0", "listenerPort": 5020, "protocol": "TCP", "tlsParams": { "description": "path to certificate and private key to enable tls", "privateKey": null, "certificate": null }, "logging": { "format": "%(asctime)-15s %(threadName)-15s %(levelname)-8s %(module)-15s:%(lineno)-8s %(message)s", "logLevel": "INFO" } }, "registers": { "description": "initial values for the register types", "zeroMode": false, "initializeUndefinedRegisters": true, "discreteInput": {}, "coils": {}, "holdingRegister": {}, "inputRegister": {} } }
配置字段说明
| 字段 | 类型 | 描述 |
|---|---|---|
server | 对象 | Modbus从机特定运行时参数 |
server.listenerAddress | 字符串 | 服务器绑定的IPv4地址,"0.0.0.0"表示监听所有接口 |
server.listenerPort | 整数 | Modbus服务器监听端口 |
server.protocol | 字符串 | 服务器使用的协议,可选"TCP"或"UDP",默认"TCP" |
server.tlsParams | 对象 | TLS加密配置参数(未测试) |
server.tlsParams.privateKey | 字符串 | 私钥文件系统路径 |
server.tlsParams.certificate | 字符串 | TLS证书文件系统路径 |
server.logging | 对象 | 日志配置 |
server.logging.format | 字符串 | 日志消息格式,参考Python logging模块 |
server.logging.logLevel | 字符串 | 日志级别,可选"DEBUG"、"INFO"、"WARN"和"ERROR" |
registers | 对象 | 预定义寄存器的配置参数 |
registers.zeroMode | 布尔值 | 寄存器起始地址模式,默认false(从1开始),true表示从0开始 |
registers.initializeUndefinedRegisters | 布尔值 | 若为true,服务器将所有未定义寄存器初始化为默认值0 |
registers.discreteInput | 对象 | "离散输入"类型的预定义寄存器 |
registers.coils | 对象 | "线圈"类型的预定义寄存器 |
registers.holdingRegister | 对象 | "保持寄存器"类型的预定义寄存器 |
registers.inputRegister | 对象 | "输入寄存器"类型的预定义寄存器 |
预定义寄存器配置
预定义寄存器以寄存器编号作为键,由于JSON格式要求键为字符串,寄存器编号需表示为字符串,服务器初始化时会将其转换为整数。
离散输入和线圈寄存器(单比特):使用true或false作为值。
示例配置:
json"discreteInput": { "0": true, "1": true, "42": true, "166": false }
保持寄存器和输入寄存器(16位字):使用十六进制表示(以0x开头)或整数(0-65535)。
示例配置:
json"holdingRegister": { "9": "0xAA00", "23": "0xBB11", "142": "0x1FC3", "2346": 255 // 等同于0x00FF }
配置文件示例
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务