http://www.gkong.com 2025-04-19 15:05 上海了淼自动化技术合伙企业(有限合伙)
来源:http://www.liaomiao-automation.com/
上海了淼Modbus-TCP编码器支持五种通讯方式:Modbus-TCP、TCP、UDP、Web网页设置、RS485-ModbusRTU。
了淼编码器网络参数默认IP地址为192.168.0.32,默认子网掩码255.255.255.0,默认网关地址为192.168.0.1。编码器使用以太网通讯周期最短能做到2ms完成数据输出,使用西门子PLC做主站连接时,PLC更新数据时间能做到10ms左右更新数据,此时间参数与PLC编程时的轮询方式有关。
1.Modbus-TCP通讯介绍
上海了淼Modbus-TCP编码器可以使用Modbus-TCP协议进行通讯,主从问询的方式读取编码器位置值、转速值、和时间戳等编码器数据。
Modbus-TCP是基于以太网TCP/IP的modbus协议,可以使MODBUS-RTU协议运行于以太网。MODBUS-TCP使用TCP/IP以太网在站点间传送MODBUS报文,MODBUS-TCP结合了以太网物理网络和网络标准TCP/IP以及以MODBUS作为应用协议标准的数据表示方法。MODBUS-TCP通信报文包在以太网TCP/IP数据包中。与传统的串口方式,MODBUS-TCP插入一个标准的MODBUS报文到TCP报文中,不再带有数据校验和地址。
上海了淼Modbus-TCP编码器默认IP地址为192.168.0.32,默认子网掩码255.255.255.0,默认网关地址为192.168.0.1。用于Modbus-TCP通讯端口号为502,编码器单元ID为32,编码器作为TCP服务器,PLC等主站作为TCP客户机,以C/S方式通讯。
(1)Modbus-TCP协议简介
编码器使用标准的Modbus-TCP协议,使用0x03(读保持寄存器)功能码来读取编码器内部寄存器数据。可以通过读取指令一次性读取全部的20个寄存器。单个寄存器数据格式为16进制数据,有些编码器参数需要2个寄存合成数据,举例:编码器的位置值是一个32bit无符号数据,寄存器0和寄存器1这两个来表示编码器位置值数据,寄存器0为位置值高16位数据,寄存器1为位置值低16位数据。
编码器使用0x06(写单个寄存器)和0x10(写入多个寄存器)功能码来写入相关编码器参数,举例:写入旋转方向寄存器10时需要用0x06(写单个寄存器)功能码;写入预设值参数时需要用0x10(写入多个寄存器)功能码。
请注意:写入指令时,编码器需要将数据写入flash内存中,flash内存擦写次数100万次,频繁写入会影响编码器寿命。
(2)Modbus-TCP寄存器介绍
寄存器地址/ 西门子PLC地址 |
数据 范围 |
读/写 方式 |
功能说明 |
0/400001 |
Bit16-31 |
只读 |
位置值:无符号32位,编码器当前的位置数据。单位:脉冲步数。 举例:读取编码器位置值为164005,则编码器当前圈数为20圈(圈数=164005/8192(默认单圈分辨率)取整),圈内脉冲数为165(圈内数=164005%8192(默认单圈分辨率)取余)。 |
1/400002 |
Bit0-15 |
||
2/400003 |
Bit16-31 |
只读 |
转速值:有符号32位,编码器当前转速,转速含小数部分扩大10000倍,单位为rpm。 举例:读取编码器转速数值为 -30607845,则当前转速=-30607845/10000=-3060.7845rpm。 |
3/400004 |
Bit0-15 |
||
4/400005 |
Bit16-31 |
只读 |
时间戳:无符号32位,时间标记,编码器内部生成,单位为ms,可以用来做位置值更新标记。 |
5/400006 |
Bit0-15 |
||
6/400007 |
Bit0-15 |
只读 |
故障代码:无符号16位,内部检测的故障码。 |
7/400008 |
Bit16-31 |
只读 |
物理量程:无符号32位,编码器所能检测到最大量程范围,由编码器硬件决定,无法修改;数值=物理极限圈数*单圈分辨率,当圈数=65536圈,单圈分辨率=65536步时,此数值为4294967296。 |
8/400009 |
Bit0-15 |
||
9/400010 |
Bit0-15 |
只读 |
预留 |
10/400011 |
Bit0-15 |
读/写 |
旋转方向:无符号16位,0=CW顺时针旋转数值增加;1=CCW逆时针旋转数值增加 |
11/400012 |
Bit16-31 |
读/写 |
单圈分辨率:无符号32位,设置圈内分辨率,默认8192步,可设置:256/512/1024/2048/4096/8192/ 16384/32768/65536 |
12/400013 |
Bit0-15 |
||
13/400014 |
Bit16-31 |
读/写 |
缩放量程:无符号32位,在物理量程范围内,用于可以指定缩放量程,举例: 若物理量程=3355432(4096圈*圈内分辨率8192), 设置缩放量程1024圈时将数据8388608(1024圈*圈内分辨率8192)写入即可。设置预防圈数只能为2的n次方。 |
14/400015 |
Bit0-15 |
||
15/400016 |
Bit16-31 |
读/写 |
预设值:无符号32位,用来指定编码器当前位置,写入数值不能超过缩放量程。 |
16/400017 |
Bit0-15 |
||
17/400018 |
Bit0-15 |
只写 |
重启:写入数据1时重启编码器。 |
18/400019 |
Bit0-15 |
只读 |
编码器软件版本号:无符号16位 |
19/400020 |
Bit0-15 |
只读 |
内部温度:有符号16位 ,编码器内部温度℃ |
2.编码器TCP通讯
上海了淼Modbus-TCP编码器可以通过以太网TCP/IP协议与控制主机进行通讯,双方使用ASCII格式的数据报文。
(1)编码器TCP简介
上海了淼Modbus-TCP编码器默认IP地址为192.168.0.32,默认子网掩码255.255.255.0,默认网关地址为192.168.0.1。用于TCP/IP通讯端口号为6000。PC等控制器与编码器要处于同一个局域网内,可以使用Windos电脑的DOS命令提示符的ping指令检查电脑与编码器之间的网络连接。可以使用网络调试助手来发送TCP指令测试编码器。
(2)编码器TCP指令定义
指令 |
说明 |
RUN! |
命令编码器输出一次位置信息,按照设定格式输出编码器位置信息,可以修改编码器输出位置信息格式,按照ASCII输出或者BIN二进制输出。 |
GET_Position |
读取位置值,举例POSITION=23570 |
GET_Velocity |
读取编码器转速,扩大10000倍,举例VELOCITY=-933737 |
GET_FaultCode |
读取故障码,没有故障时为0。举例FaultCode=0x0000 |
GET_TotalPhysical |
读取编码器物理总量程,举例TotalPhysical=536870912 |
GET_CountingDir |
读取旋转方向, CW=顺时针(默认);CCW=逆时针。举例CountingDir=CW |
GET_SingleResolution |
读取单圈分辨率,举例SingleResolution=8192。 |
GET_UserTotalScaledRes |
读取用户缩放总量程,举例UserTotalScaledRes=536870912 |
GET_SoftVer |
读取编码器版本号,举例SoftVer=19.4 |
GET_Temperature |
读取编码器内部温度,单位℃,举例Temperature=36 |
GET_CycleTime |
读取自动循环时间,单位ms,默认10ms,当发送模式为周期发送时生效。举例CycleTime=10 |
GET_SendMode |
读取编码器发送模式, Polled=主从问答模式(默认), Cyclic = 自动周期发送模式, ChangeState = 检测到位置值改变时发送一次。 举例SendMode=Polled |
GET_OutputMode |
读取输出模式, PositionPlus:全部输出数据(默认),位置值+转速值+时间戳。 Position:简单输出数据,位置值。 举例OutputMode=PositionPlus |
GET_OutputType |
读取输出数据类型, ASCII :POSITION=18613 VELOCITY=-18 TIMESTAMP=6521005,(默认) ASCII_SHORT:18613 -18 6521005, BINARY:00 00 53 DB 00 00 00 09 00 80 6A C8 输出二进制格式数据。 举例OutputType=ASCII |
GET_IP |
读取编码器IP地址,举例IP=192.168.0.32 |
GET_NetMask |
读取编码器子网掩码,举例NetMask=255.255.255.0 |
GET_Gateway |
读取编码器网关地址,举例Gateway=192.168.0.1 |
GET_MAC |
读取编码器MAC地址,举例MAC=00:17:BC:10:00:01 |
SET_CountingDir= |
设置旋转方向, 顺时针:SET_CountingDir=CW; 逆时针:SET_CountingDir=CCW |
SET_SingleResolution= |
设置单圈分辨率, 数据范围:256,512,1024,2048,4096,8192(默认),16384,32768,65536 举例SET_SingleResolution=8192 |
SET_UserTotalScaledRes= |
设置缩放总量程,缩放总量程不能大于物理总量程,设置总量程圈数只能为2的指数倍,如256圈编码器,设置缩放量程为16圈, 16圈*8192单圈分辨率=131072,SET_UserTotalScaledRes=131072 |
SET_PresetValue= |
设置预设值,指定编码器当前位置值, 举例设置当前位置为0,SET_PresetValue=0 |
SET_SendMode= |
设置发送模式, Polled=主从问答模式, Cyclic = 自动周期发送模式, ChangeState = 检测到位置值改变时发送一次。 举例SET_SendMode=Polled |
SET_OutputMode= |
设置输出模式, PositionPlus:全部输出数据,位置值+转速值+时间戳。 Position:简单输出数据,位置值。 举例SET_OutputMode=PositionPlus |
SET_OutputType= |
设置输出格式, ASCII :POSITION=18613 VELOCITY=-18 TIMESTAMP=6521005, ASCII_SHORT:18613 -18 6521005, BINARY:00 00 53 DB 00 00 00 09 00 80 6A C8 输出二进制格式数据。 举例SET_OutputType=ASCII |
SET_CycleTime= |
设置周期发送时间,单位ms, 举例SET_CycleTime=100 |
SET_IP= |
设置IP地址, 举例SET_IP=192.168.0.32,重启生效 |
SET_NetMask= |
设置子网掩码地址, 举例SET_NetMask=255.255.255.0,重启生效 |
SET_Gateway= |
设置网关地址, 举例SET_Gateway=192.168.0.1,重启生效 |
Reboot |
设置编码器重启,举例Reboot |
(3)编码器TCP指令异常应答
响应指令 |
|
ERROR: |
发送错误的指令,指令格式不正确,设置参数不合理。 举例: 发→◇SET_CountingDir=CWCCC 收←◆ERROR:CWCCC |
SUCCESS: |
设置参数正确。 举例: 发→◇SET_CountingDir=CW 收←◆SUCCESS:CW |
3.UDP通讯
上海了淼Modbus-TCP编码器可以通过以太网UDP协议与控制主机进行通讯,UDP是不可靠连接,因此只能使用主从问询方式来应答,不支持自动周期发送和设置编码器参数。
(1)UDP通讯设置
上海了淼Modbus-TCP编码器默认IP地址为192.168.0.32,默认子网掩码255.255.255.0,默认网关地址为192.168.0.1。用于UDP通讯端口号为5000。
(2)UDP通讯指令定义
指令 |
说明 |
RUN! |
命令编码器输出一次位置信息,按照设定格式输出编码器位置信息,可以修改编码器输出位置信息格式,按照ASCII输出或者BIN二进制输出。 |
GET_Position |
读取位置值,举例POSITION=23570 |
GET_Velocity |
读取编码器转速,扩大10000倍,举例VELOCITY=-933737 |
GET_FaultCode |
读取故障码,没有故障时为0。举例FaultCode=0x0000 |
GET_TotalPhysical |
读取编码器物理总量程,举例TotalPhysical=536870912 |
GET_CountingDir |
读取旋转方向, CW=顺时针(默认);CCW=逆时针。举例CountingDir=CW |
GET_SingleResolution |
读取单圈分辨率,举例SingleResolution=8192。 |
GET_UserTotalScaledRes |
读取用户缩放总量程,举例UserTotalScaledRes=536870912 |
GET_SoftVer |
读取编码器版本号,举例SoftVer=19.4 |
GET_Temperature |
读取编码器内部温度,单位℃,举例Temperature=36 |
GET_CycleTime |
读取自动循环时间,单位ms,默认10ms,当发送模式为周期发送时生效。举例CycleTime=10 |
GET_SendMode |
读取编码器发送模式, Polled=主从问答模式(默认), Cyclic = 自动周期发送模式, ChangeState = 检测到位置值改变时发送一次。 举例SendMode=Polled |
GET_OutputMode |
读取输出模式, PositionPlus:全部输出数据(默认),位置值+转速值+时间戳。 Position:简单输出数据,位置值。 举例OutputMode=PositionPlus |
GET_OutputType |
读取输出数据类型, ASCII :POSITION=18613 VELOCITY=-18 TIMESTAMP=6521005,(默认) ASCII_SHORT:18613 -18 6521005, BINARY:00 00 53 DB 00 00 00 09 00 80 6A C8 输出二进制格式数据。 举例OutputType=ASCII |
GET_IP |
读取编码器IP地址,举例IP=192.168.0.32 |
GET_NetMask |
读取编码器子网掩码,举例NetMask=255.255.255.0 |
GET_Gateway |
读取编码器网关地址,举例Gateway=192.168.0.1 |
GET_MAC |
读取编码器MAC地址,举例MAC=00:17:BC:10:00:01 |
4.Web网络参数设置
上海了淼Modbus-TCP编码器可以通过Web网页方式设置编码器网络参数,网络参数修改后重启编码器开始生效。
第一步:编码器与电脑在同一个局域网段内。
第二步:在浏览器地址栏中输入编码器地址http://192.168.0.32(默认出厂IP地址)
第三步:在打开的页面中核对MAC地址与编码器是否一致,然后修改IP地址、子网掩码、网关地址。确认无误后点击保存并重启。新网络参数生效。
5.RS485-ModbusRTU通讯
上海了淼Modbus-TCP编码器可以通过RS485接口使用Modbus-RTU协议读取和设置编码器参数。当以太网网络参数无法找回时,可以通过RS485通讯将以太网参数重置为出厂值。
(1)RS485通讯参数
Modbus-RTU格式《十六进制》
设备默认地址为32(0x20) (可以软件修改)
默认串口参数:
波特率:19200bps
数据位:8位
校验位:无校验
控制流:无控制流
停止位:1位
(2)Modbus-RTU寄存器定义
地址(HEX)/西门子PLC地址 |
功能 |
读/写 |
参数范围 |
说明 |
默认值 |
0x0000 /40001 |
软件版本 |
R |
0~65535 |
软件版本号 |
|
0x0001 /40002 |
本机站号 |
R/W |
0~255 |
本机通讯地址, |
32(0x20) |
0x0002 /40003 |
多圈位置 |
R |
0~65535 |
最大为65535,16进制无符号 |
|
0x0003 /40004 |
单圈位置 |
R |
0~65535 |
单圈角度,16进制无符号 |
|
0x0004 /40005 |
旋转转速 |
R |
-32768~+32767 |
单位:转/分钟,16进制有符号 |
|
0x0005 /40006 |
通讯波特率 |
R/W |
19200 |
通讯波特率 1200,2400,4800,9600,19200,38400,11520,25600 11520表示115200bps 25600表示256000bps |
19200 |
0x0006 /40007 |
设置旋转方向 |
R/W |
0~1 |
0:逆时针角度增加 1:顺时针角度增加 |
1 |
0x0007 /40008 |
设置零点 |
W |
0~1 |
1:写入1 将当前位置设为0圈0°; 2:写入2 将预设值生效一次。 注意:设置零点时编码器需要保持静止,不可频繁设置零点,影响编码器使用寿命。 |
0 |
0x0008 /40009 |
传感器内部温度 |
R |
-5500~+17500 |
温度数据扩大100倍 |
|
0x0009 /40010 |
故障代码 |
R |
0~65535 |
|
0:编码器无故障
|
0x000A /40011 |
寄存器 |
R |
|||
0x000B /40012 |
预留 |
R/W |
0~1 |
1 |
|
0x000C /40013 |
机械圈数 |
R |
0~18 |
机械可识别圈数,是该编码器能够识别的最大圈数。 如0表示20,1圈即单圈编码器。 18表示218,262144圈。 |
|
0x000D /40014 |
使用圈数 |
R/W |
0~机械圈数 |
设置实际使用多圈位数,如12表示212,,4096圈。 最大使用圈数为机械圈数。 |
机械圈数 |
0x000E /40015 |
设置单圈分辨率 |
R/W |
8~16 |
1、设置单圈分辨率,13表示213,13位分辨率;
|
13 |
0x000F /40016 |
设置当前机械位置圈数 |
W |
0~65535 |
设置当前机械位置的多圈值,该值小于使用圈数,例如使用圈数为4096圈,此处设置范围0~4095 |
预设值 |
0x0010 /40017 |
设置当前机械位置角度值 |
W |
0~65535 |
设置当前机械位置的单圈角度值,该值小于单圈最大值,例如使用单圈分辨率为8192,此处设置范围0~8191 |
预设值 |
0x0011 /40018 |
以太网参数恢复出厂值 |
W/R |
10 |
写入数据10,将以太网参数重置为出厂值, IP地址:192.168.0.32, 子网掩码:255.255.255.0 网关地址:192.168.0.1 |
0 |
0x0012 /40019 |
IP地址高16位 |
W/R |
0~65535 |
编码器IP地址前2位 默认值为0xC0A8, 0xC0=192(十进制) 0xA8=168(十进制) |
|
0x0013 /40020 |
IP地址低16位 |
W/R |
0~65535 |
编码器IP地址后2位 默认值0x0020 0x00=0(十进制) 0x20=32(十进制) |
|
0x0014 /40021 |
子网掩码高16位 |
W/R |
0~65535 |
编码器子网掩码地址前2位 默认值为0xFFFF, 0xFF=255(十进制) 0xFF=255(十进制) |
|
0x0015 /40022 |
子网掩码低16位 |
W/R |
0~65535 |
编码器子网掩码地址后2位 默认值为0xFF00, 0xFF=255(十进制) 0x00=0(十进制) |
|
0x0016 /40023 |
设备重启 |
W |
0~1 |
1:写入1设备重新启动 |
|
0x0017 /40024 |
转速整数部分 |
R |
-32768~+32767 |
精确转速 = 转速整数部分+(转速小数部分/10000);单位:转/分钟,16进制有符号
|
|
0x0018 /40025 |
转速小数部分 |
R |
-9999~+9999 |
||
0x0019 /40026 |
网关地址高16位 |
W/R |
0~65535 |
编码器网关地址前2位 默认值为0xC0A8, 0xC0=192(十进制) 0xA8=168(十进制) |
|
0x001A /40027 |
网关地址低16位 |
W/R |
0~65535 |
编码器网关地址后2位 默认值0x0001 0x00=0(十进制) 0x01=1(十进制) |
|
0x0022 /40035 |
MAC地址1 |
R |
0~65535 |
编码器MAC地址1 举例:0x0017 |
|
0x0023 /40036 |
MAC地址2 |
R |
0~65535 |
编码器MAC地址2 举例:0xBC10 |
|
0x0024 /40037 |
MAC地址3 |
R |
0~65535 |
编码器MAC地址3 举例:0x0001 |
|
从Modbus-RTU中读取到的位置数据合成方式:
位置值=多圈位置*8192(默认分辨率)+单圈位置,单位:脉冲步数。
6.网络参数设置教程
(1)配置设备处于同一个局域网
上海了淼Modbus-TCP编码器出厂默认IP为192.168.0.32,子网掩码为255.255.255.0,网关地址:192.168.0.1。
编码器接好电源线和网线,配置变成电脑和PLC处于同一个以太网网段内。
电脑端在:控制面板\网络和 Internet\网络连接中 修改本地连接IP地址到相同网段。
(2)Ping指令检查编码器的以太网连接
使用Windos电脑的DOS命令提示符的ping指令检查电脑与编码器之间的网络连接。
(3)修改编码器以太网IP网络参数
当需要修改编码器的网络IP地址时,推荐使用Web网页进行修改,
在浏览器地址栏中输入编码器地址http://192.168.0.32(默认出厂IP地址),在打开的页面中核对MAC地址与编码器是否一致,然后按照正确的以太网规范修改IP地址、子网掩码、网关地址。确认无误后点击保存并重启。新网络参数生效。
(4)按照编码器MAC地址查找局域网IP
同一个局域网内有多个不同IP地址的了淼编码器时,可以用编码器铭牌上的MAC物理地址来区分确认编码器IP地址。
使用Windos电脑的DOS命令提示符窗口,
第一步,输入命令:for /L %i IN (1,1,254) DO ping -w 2 -n 1 192.168.0.%i |find /i "TTL"
电脑将按照指示在192.168.0网段内从192.168.0.1~192.168.0.255中自动遍历ping检查。
第二步,输入命令:arp -a
找出遍历到的IP地址和对应的MAC物理地址。
7.Modbus-TCP编码器与S7-1210 PLC组态教程
上海了淼编码器可以与西门子S7-1212 PLC使用Modbus-TCP协议进行通讯,首先将编码器和PLC的电源线和以太网线连接好。
(1)在电脑上打开西门子博途软件新建PLC项目工程,设置PLC常规参数,启用系统存储字节和启用时钟存储器字节,后续编程要用到系统定时器作为触发信号。
(2)新建MODBUS-TCP通讯模块MB_CLIENT
(3)创建Encoder_Modbus-TCP通讯数据块。
(4)在新建的Encoder_Modbus-TCP通讯数据块中修改属性,取消优化的块访问
(5)在Encoder_Modbus-TCP数据块中创建TCON_IP_V4类型的Connect变量组,并配置网络连接参数变量初始值。
(6)在Encoder_Modbus-TCP数据块中创建Struct类型的读取编码器数据变量组Read_Buff,并新建可以读取的编码器Modbus-TCP寄存器。
(7)在Encoder_Modbus-TCP数据块中创建Struct类型的写入编码器数据变量组Write_Buff,并新建可以写入的编码器Modbus-TCP寄存器。
(8)编写modbus-TCP读取程序,以10Hz的频次读取编码器数据
(9)分别编译数据块和主程序,并下载进PLC中,在线监控读取到的编码器数据。
(10)设置编码器预设值
(11)设置编码器旋转方向
8.Modbus-TCP编码器TCP/IP通讯
上海了淼Modbus-TCP编码器默认IP地址为192.168.0.32,默认子网掩码255.255.255.0,默认网关地址为192.168.0.1。用于TCP/IP通讯端口号为6000。编码器与电脑处于同一个网段内,打开网络收发调试助手进行通讯。
9.Modbus-TCP编码器UDP通讯
上海了淼Modbus-TCP编码器默认IP地址为192.168.0.32,默认子网掩码255.255.255.0,默认网关地址为192.168.0.1。用于UDP通讯端口号为5000。编码器与电脑处于同一个网段内,打开网络收发调试助手进行通讯。
10.Modbus-TCP编码器与Smart 200 PLC组态教程
(1)使用STEP 7-MicroWIN SMART新建空白PLC工程
(2)编写PLC程序
(3)创建符号表,监控编码器数据
(4)设置编码器预设值
注意:由于Flash有擦写寿命,不可以频繁对编码器进行清零设置或预设值。
(5)设置编码器旋转方向