来源: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)设置编码器旋转方向

|