如何在CODESYS中获取MODBUS TCP保持寄存器的原始内存地址
CODESYS 3.5 地址与Modbus TCP保持寄存器映射指南
1. 先搞懂CODESYS地址的含义
比如%IW0的拆解:
%:全局变量标识I:输入区域(Input),同理Q是输出、M是内存区、DB是数据块W:字类型(16位),正好对应Modbus保持寄存器的16位长度;如果是B是字节、D是双字(32位)0:区域内的偏移量(0基索引)
2. 核心映射规则:以CODESYS Modbus Slave配置为准
不要迷信硬转公式,CODESYS作为Modbus TCP从站时,必须通过Modbus Server功能块的映射配置来确定对应关系,这是唯一准确的方式:
- 打开CODESYS项目,在设备树里找到
Communication下的Modbus TCP Server节点 - 进入映射配置界面,会清晰列出CODESYS地址(如
%IW0、%MW10)对应的Modbus保持寄存器地址(格式通常是4xxxx的10进制数,比如40001)
3. 常规默认映射参考(仅作快速验证)
如果你的项目用了CODESYS默认配置,通常有以下对应关系:
- 全局输入字
%IWn→ Modbus保持寄存器40001 + n(因为Modbus是1基索引,CODESYS是0基) - 全局内存字
%MWn→ Modbus保持寄存器40101 + n(不同项目起始地址可能调整) - 数据块字
DBx.DBWn→ 需要手动在映射里指定,比如把DB1.DBW0映射到40201
4. 示例:%IW0转Modbus原始地址
假设默认输入区域起始寄存器是40001:
- 10进制地址:
40001 - 16进制地址:
0x9C41(40001转16进制的结果)
5. 针对IFM CR1203的额外提示
- 该型号PLC的CODESYS项目通常自带Modbus映射模板,可以在设备的示例项目中找到参考配置
- 如果找不到模板,直接新建Modbus Server功能块,手动添加需要映射的CODESYS变量,配置对应的Modbus寄存器地址即可
内容的提问来源于stack exchange,提问作者user19365766
相关产品推荐
相关产品推荐

