SD300C伺服Modbus 通讯功能说明 V10.docx

上传人:b****5 文档编号:6805829 上传时间:2023-01-10 格式:DOCX 页数:15 大小:36.34KB
下载 相关 举报
SD300C伺服Modbus 通讯功能说明 V10.docx_第1页
第1页 / 共15页
SD300C伺服Modbus 通讯功能说明 V10.docx_第2页
第2页 / 共15页
SD300C伺服Modbus 通讯功能说明 V10.docx_第3页
第3页 / 共15页
SD300C伺服Modbus 通讯功能说明 V10.docx_第4页
第4页 / 共15页
SD300C伺服Modbus 通讯功能说明 V10.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

SD300C伺服Modbus 通讯功能说明 V10.docx

《SD300C伺服Modbus 通讯功能说明 V10.docx》由会员分享,可在线阅读,更多相关《SD300C伺服Modbus 通讯功能说明 V10.docx(15页珍藏版)》请在冰豆网上搜索。

SD300C伺服Modbus 通讯功能说明 V10.docx

SD300C伺服Modbus通讯功能说明V10

SD300-C伺服-Modbus通讯功能说明V1.0

1功能概述与接线图

伺服驱动器具有RS-485串行通讯接口,使用此接口通过MODBUS协议可控制伺服系统、变更参数以及监视伺服系统状态等多项功能。

通讯端口CN3的接线说明如下:

SD300-C驱动器的通讯端口使用1394USB端口,外形和针脚分布为:

 

驱动器CN3接口定义(modbus标准协议)

引脚号

1,2

3

4

5

6

标识

GND

485+

485-

485+

485-

2通讯参数

P-181

驱动器通讯ID号

范围

缺省值

单位

-1~32

-1

使用RS-485通讯时,上位控制器为主机,伺服驱动器为从机。

伺服驱动器的通讯地址需由此参数设定为不同的通讯站号,站号地址的设定范围为-1~32,默认值为-1表示关闭通讯功能,设置值大于0表示开放通讯功能。

在使用通讯功能之前,必须将此参数设置为需要的站号,此站号代表本驱动器在通讯网络中的绝对地址,一组伺服驱动器仅能设定一站号,若重复设定站号将导致无法正常通讯。

P-182

MODBUS通讯波特率

范围

缺省值

单位

0~3

2

通过此参数选择RS-485通讯的波特率,不同的值对应不同的波特率,选择的通讯波特率需与上位控制器的通讯波特率一致,具体的设定值如下:

参数意义:

0:

波特率为4800bps

1:

波特率为9600bps

2:

波特率为19200bps

3:

波特率为38400bps

P-183

MODBUS通讯数据模式选择

(暂时只支持RTU数据格式)

范围

缺省值

单位

0~5

1

通过此参数选择RS-485通讯的数据模式,选择的数据模式需与上位控制器的通讯协议一致,具体的参数值意义如下:

0:

数据位-8位校验位-无停止位-1位

1:

数据位-8位校验位-偶校验(Even)停止位-1位

2:

数据位-8位校验位-奇校验(Odd)停止位-1位

3:

数据位-8位校验位-无停止位-2位(PC调试通讯模式:

13)

4:

数据位-8位校验位-偶校验(Even)停止位-2位

5:

数据位-8位校验位-奇校验(Odd)停止位-2位

3MODBUS通讯协议

使用RS-485串行通讯时,每台伺服驱动器必须预先在参数P-181上设定其通讯站号,计算机或者上位控制器根据站号对相应的伺服驱动器实施控制;波特率需要参考上位控制器的通讯方式来设定参数P-182;MODBUS通讯协议暂时只支持RTU(RemoteTerminalUnit)模式,使用者可根据上位控制器的要求在参数P-183上设定所需的通讯数据模式。

以上参数设置完成后,需要执行参数保存操作并且断电重启驱动器后才能生效。

以下说明MODBUS通讯的具体内容。

通讯数据结构:

•RTU模式:

MODBUS应用层协议定义了一个简单的协议数据单元(PDU),如下图所示,该协议数据单元不依赖于底层的通讯层。

地址场

功能码

数据场

检验码

MODBUS以地址场作为帧的开始,地址场的内容为有效地址值(0~247),主机在请求信息的地址场中放置从机地址值以确定该请求信息的接收者,符合条件的从机接收到信息并完成相应处理之后,在响应信息的地址场中放置自身的地址值,使主机知道是何从机发送的响应。

地址场之后是功能码,它指示从机将完成何种操作。

功能码之后是数据场,数据场包含请求和响应的参数,根据功能码的不同,数据场的格式、长度以及含义也有所不同。

校验码是用来验证信息的有效性,保证信息传送的可靠性。

RTU模式下是使用的16位

CRC(CyclicalRedundancyCheck)校验。

RTU模式下,信息帧中的每8位一个字节的数据按2个4位的16进制码发送,例如:

1byte数据64H。

RTU模式是面向比特的传输模式,以不少于3.5个字符的空闲时间为帧的开始,随后发送的是地址场,网上设备监视通讯总线,当连续监视到3.5个字符的空闲时间后可以接收地址场信息,当判断接收到的地址场信息为有效时,继续接收其后信息,然后根据功能码及附加信息进行相应操作,若要求有响应信息则封装响应信息并发送给主机。

最后发送的字节大约经过3.5个字符的空闲时间后表示信息帧的结束,新的信息帧可以发送。

RTU模式靠模拟的同步信息来保持帧同步,整个信息帧必须作为连续数据流一次传送完。

如果一个连续数据流在传送过程中,接收设备检测到有1.5个以上字符间隔时间,则认为一帧数据已经接收完,

并把下一个接收字符作为下一帧的开始。

在正常情况下,信息帧之间的间隔时间至少有3.5

个字符,即一帧数据发送完,至少要经过3.5个字符的空闲时间才能发送下一帧数据。

RTU模式下的信息帧格式为:

START

地址场

(ADR)

功能码

(CMD)

数据场

(DATA)

校验码

(CRC)

END

T1-T2-T3-T4

8bits

8bits

n*8bits

16bits

T1-T2-T3-T4

注:

T1-T2-T3-T4表示与上帧的时间间隔最小为3.5字符时间。

RTU模式下,发送每个字节的格式为:

起始位

数据位(低位在前)

奇偶校验位

停止位

1bit

8bits

1bitornobit

1bitor2bits

字符结构:

10bits字符框(用于8bits字符不加校验)

 

(8位数据+无校验+1停止位)

11bits字符框(用于8bit字符加校验)

 

通讯信息帧格式:

通讯信息帧格式框内各项条目说明如下:

➢START(通讯起始)

RTU模式:

与上帧的时间间隔最小为3.5字符时间。

➢ADR(通讯地址)

合法的通讯地址范围在1到32之间,如下所示:

与站号为16(十六进制10H)的伺服驱动器进行通讯:

RTU模式:

ADR=10H

➢CMD(功能码)及DATA(数据场)

数据字符的格式依功能码而定。

常用的功能码叙述如下:

命令码03H:

读取驱动器的参数数值

命令码04H:

读取驱动器的运行状态(如电机转速、位置、电流、转矩等变量值)命令码06H:

写入驱动器的参数(单个写入)

命令码41H:

将驱动器的参数写入EEPROM(参数保存)

➢CRC(RTU模式)帧校验计算:

RTU模式:

RTU模式采用CRC(CyclicalRedundancyCheck)帧校验,CRC帧校验计算以下列步骤说明:

步骤一:

初始化一个内容为FFFFH的16bits寄存器,称之为CRC寄存器。

步骤二:

将命令信息的第一个字节与16-bitsCRC寄存器的低字节进行异或运算,并将结果存回CRC寄存器。

步骤三:

检查CRC寄存器的最低位(LSB),若此位为0,则右移一位;若此位为1,则CRC寄存器值右移一位后,再与A001H进行异或运算。

步骤四:

回到步骤三,直到步骤三已被执行过8次,然后进到步骤五。

步骤五:

对命令信息的下一个字节重复步骤二到步骤四,直到所有字节都完成上述处理,此时CRC寄存器的内容即是CRC帧校验。

说明:

计算出CRC帧校验之后,在命令信息中,须先填上CRC的低位,再填上CRC的高位,请参考以下例子。

例如:

读取站号为01H的伺服驱动器的0段05号参数。

从ADR至数据的最后一字节所算出的CRC寄存器的最后内容为3794H,则其命令信息如下所示,须注意的是:

字节

ADR

01H

CMD

03H

起始数据

位置

00H(高字节)

05H(低字节)

数据数

00H(高字节)

02H(低字节)

CRCLow

94H(高字节)

CRCHigh

37H(低字节)

94H应在字节37H之前传送。

 

➢END(通讯结束):

RTU模式:

与下帧的时间间隔最小为3.5字符时间。

功能码(CMD):

功能码为1个byte(8bits),其范围为1~255。

功能码(HEX)

具体含义

Modbus协议规范中的含义

03H

读取驱动器的参数数值(可同时读

取多个参数)

ReadHoldingRegister

04H

读取驱动器的运行状态(如电机

转速、位置、电流、转矩等变量值,可同时读取多个状态)

ReadInputRegister

06H

写入驱动器的参数(单个写入)

WriteSingleRegister

08h

诊断功能

Diagnostic

41H

将驱动器的参数写入

EEPROM(参数保存)

通讯期间可能会发生各种异常及错误,为了使这些异常和错误能够被主机识别,故定义了相应的异常码,如下表所示。

当从机接收主机的信息发现错误或无法完成正常响应时,从

机将向主机发送出错响应帧,即功能码字节的最高位置1,数据场放置相应的异常码

(ExceptionCode)。

ExceptionCode(HEX)

Mean

01h

ILLEGALFUNCTION

02h

ILLEGALDATAADDRESS

03h

ILLEGALDATAVALUE

04h

SLAVEDEVICEFAILURE

05h

ACKNOWLEDGE

06h

SLAVEDEVICEBUSY

4参数的写入与读出

伺服驱动器所有参数详情请参照调试手册的参数章节,参数按参数段进行划分。

每个参数使用16bits的数据表示,每个参数的通信地址由参数序号确定(范围0~249),例如:

参数P-005的通讯地址即为005(十进制),参数P-108的通讯地址即为108(十进制),参数P-204的通讯地址即为204(十进制),其他参数依次类推。

在参数部分说明的所有参数都可以通过通讯来读取,但只开放部分参数允许用户修改写入,调试手册上列出的参数是允许修改写入的,其他未做说明的参数是伺服驱动器保留参数

(用户不能对保留参数进行写入操作,否则可能引起伺服驱动器运行异常),若用户需要修改其他参数请联系本公司技术人员。

5监视状态量地址说明

伺服驱动器内部的状态量可以通过RS-485通讯口读出,写入操作无效。

状态量以16bit

数据存储,提供0~39共40个状态变量,相关的状态量的读取地址(十六进制)如下所示:

0x0000:

电机速度,单位“r/min”;

0x0001:

原始位置指令(输入脉冲)低16bit;

0x0002:

原始位置指令(输入脉冲)高16bit;

0x0003:

位置指令(脉冲)低16bit;

0x0004:

位置指令(脉冲)高16bit;

0x0005:

当前电机位置(脉冲)低16bit;

0x0006:

当前电机位置(脉冲)高16bit;

0x0007:

位置偏差(脉冲)低16bit;

0x0008:

位置偏差(脉冲)高16bit;

0x0009:

电机转矩,单位“%”(额定转矩的百分比);

0x000A:

峰值转矩,单位“%”(1s内的峰值转矩);<10>

0x000B:

电机瞬时电流,单位“0.1A”(12:

表示电机实时电流1.2A);

0x000C:

电机峰值电流,单位“0.1A”(152:

表示1s内电流最大值为15.2A);

0x000D:

位置指令脉冲频率,单位“0.1kHz”(3000:

表示300kHz);

0x000E:

速度指令,单位“r/min”;

0x000F:

转矩指令,单位“%”;<15>

0x0010:

速度模拟指令电压,单位“mV”;

0x0011:

转矩模拟指令电压,单位“mV”;

0x0012:

输入端子DI状态,[注1];

0x0013:

输出端子DO状态,[注2];

0x0014:

电机编码器单圈绝对位置(脉冲)低16bit;<20>

0x0015:

电机编码器单圈绝对位置(脉冲)高16bit;

0x0016:

电机编码器多圈的位置(在无多圈信息时,读出0值);

0x0017:

再生制动负载率,单位“%”;

0x0018:

平均负载率,单位“%”;

0x0019:

输出电压,单位“%”;<25>

0x001A:

报警代码;

0x001B:

电机速度,单位“0.1r/min”;

0x001C:

第二编码器位置(脉冲)低16bit;

0x001D:

第二编码器位置(脉冲)高16bit;

0x001E:

保留<30>

0x001F:

保留

0x0020:

保留

0x0021:

保留

0x0022:

保留

0x0023:

保留<35>

0x0024:

保留

0x0025:

保留

0x0026:

保留

0x0027:

保留<39>

[注1]:

此地址读出的数据为16bit,其中bit5~bit0分别对应DI6~DI1的输入状态,“1”表示输入高电平,

“0”表示输入低电平;bit15~bit6为保留位。

[注2]:

此地址读出的数据位16bit,其中bit5~bit0表示DO6~DO1的输出状态,“1”表示输出高电平,“0”表示输出低电平;bit15~bit6为保留位。

6通讯实例

6.1读状态量(CMD=04H)

采用读状态功能码(04H)可以读取伺服驱动器中的所有监视状态量,通讯帧格式说明如下:

注意:

每次读取的状态个数,最多为8个。

请求帧格式如下:

地址场

1byte

功能码

1byte

起始地址值

2bytes,高字节在前

读取状态个数

2bytes,高字节在前

CRC校验码

2bytes,低字节在前

0x01

0x04

0x00,0x00

0x00,0x01(N)

CRC_Lo,CRC_Hi

正常响应:

地址场

1byte

功能码

1byte

状态所占字节数

1byte

状态值

2bytes,高字节在前

CRC校验码

2bytes,低字节在前

0x01

0x04

0x02(2N)

0x00,0x00

CRC_Lo,CRC_Hi

异常响应:

地址场

1byte

功能码

1byte

异常码

1byte

CRC校验码

2bytes,低字节在前

0x01

0x84

0x01or02or03or04

CRC_Lo,CRC_Hi

示例如下:

主机发送帧:

ADDR

CODE

STADDR_H

STADDR_L

RNUM_H

RNUM_L

CRC_L

CRC_H

0x01

0x04

0x00

0x01

0x00

0x02

0xXX

0xXX

从机回应帧:

ADDR

CODE

BYTE_NUM

DATA1_H

DATA1_L

DATA2_H

DATA2_L

CRC_L

CRC_H

0x01

0x04

0x04

0xXX

0xXX

0xXX

0xXX

0xXX

0xXX

STADDR:

读状态起始地址RNUM:

读取的状态个数

BYTE_NUM:

读取的状态所占字节数(例如RNUM为2,即2个16位数据,则BYTE_NUM

为2*2=4字节)

DATAX:

读回的状态值,X代表序号,DATA1是第一个数据,DATA2是第二个数据

本示例发送帧中STADDR=0x0001,RNUM=0x02,表示从起始地址0x0001开始,读取2

个状态数据(即读取地址为0x0001和0x0002的两个状态值,具体含义见上节描述)。

回应帧中BYTE_NUM=0x04,表示读取的两个状态值占用4个字节,紧接着DATA1,DATA2

即是地址为0x0001和0x0002的状态值。

6.2读参数(CMD=03H)

采用读参数功能码(03H)可以读取驱动器中的所有参数,通讯帧格式说明如下:

注意:

每次读取的参数个数,最多为8个。

请求帧格式如下:

地址场

1byte

功能码

1byte

起始地址值

2bytes,高字节在前

读取参数个数

2bytes,高字节在前

CRC校验码

2bytes,低字节在前

0x01

0x03

0x00,0x00

0x00,0x01(N)

CRC_Lo,CRC_Hi

正常响应:

地址场

1byte

功能码

1byte

参数所占字节数

1byte

参数数值

CRC校验码

2bytes,低字节在前

0x01

0x03

0x02(2N)

0x0B,0xB8

CRC_Lo,CRC_Hi

异常响应:

地址场

1byte

功能码

1byte

异常码

1byte

CRC校验码

2bytes,低字节在前

0x01

0x83

0x01or02or03or04

CRC_Lo,CRC_Hi

示例如下:

主机发送帧:

ADDR

CODE

STADDR_H

STADDR_L

RNUM_H

RNUM_L

CRC_L

CRC_H

0x01

0x03

0x00

0x01

0x00

0x02

0xXX

0xXX

从机回应帧:

ADDR

CODE

BYTE_NUM

DATA1_H

DATA1_L

DATA2_H

DATA2_L

CRC_L

CRC_H

0x01

0x03

0x04

0xXX

0xXX

0xXX

0xXX

0xXX

0xXX

STADDR:

读参数起始地址RNUM:

读取的参数个数

BYTE_NUM:

读取的参数所占字节数(例如RNUM为2,即2个16位数据,则BYTE_NUM

为2*2=4)

DATAX:

读回的参数值,X代表序号,DATA1是第一个参数,DATA2是第二个参数

本示例发送帧中STADDR=0x01,RNUM=0x02,表示从起始地址1开始,读取2个参数

(即读取地址为0x01和0x02的两个参数P-001和P-002)。

回应帧中BYTE_NUM=0x04,表示读取的两个参数值占用4个字节,紧接着DATA1,DATA2

即是地址为0x01和0x02的参数值。

6.3写参数(CMD=06H)

采用写参数功能码(06H)可以写入调试手册列出的参数,通讯帧格式说明如下:

注意:

每次只能写入一个参数。

请求帧格式如下:

地址场

1byte

功能码

1byte

参数号

2bytes,高字节在前

期望参数值

2bytes,高字节在前

CRC校验码

2bytes,低字节在前

0x01

0x06

0x00,0x00

0x00,0x64

CRC_Lo,CRC_Hi

正常响应:

地址场

1byte

功能码

1byte

参数号

2bytes,高字节在前

期望参数值

2bytes,高字节在前

CRC校验码

2bytes,低字节在前

0x01

0x06

0x00,0x00

0x00,0x64

CRC_Lo,CRC_Hi

异常响应:

地址场

1byte

功能码

1byte

异常码

1byte

CRC校验码

2bytes,低字节在前

0x01

0x86

0x01or02or03or04

CRC_Lo,CRC_Hi

示例如下:

主机发送帧:

ADDR

CODE

WADDR_H

WADDR_L

VALUE_H

VALUE_L

CRC_L

CRC_H

0x01

0x06

0x00

0x01

0x01

0x02

0xXX

0xXX

从机回应帧:

ADDR

CODE

WADDR_H

WADDR_L

VALUE_H

VALUE_L

CRC_L

CRC_H

0x01

0x06

0x00

0x01

0x01

0x02

0xXX

0xXX

WADDR:

写参数地址

VALUE:

要写入的值

本示例发送帧中ADDR=0x01,VALUE=0x0102,表示将值0x0102写入地址为0x01的参数中。

回应帧和发送帧相同。

6.4诊断功能(CMD=08H)

主机发送诊断帧后,从机(伺服驱动器)会回应相同的数据。

提示:

诊断功能可用来确定MODBUS通讯是否正常。

主机发送帧:

ADDR

CODE

DATA_H

DATA_L

CRC_L

CRC_H

0x01

0x08

0x12

0x34

0xXX

0xXX

从机回应帧:

ADDR

CODE

DATA_H

DATA_L

CRC_L

CRC_H

0x01

0x08

0x12

0x34

0xXX

0xXX

诊断命令的从机回应帧数据应该与主机发送帧数据完全相同,因此用诊断命令可以检测通讯是否正常。

DATA可以是任意的自定义数据,例如主机发送0xABCD,则从机回应也是0xABCD

6.5保存参数(CMD=41H)

采用保存参数功能码(41H)可以将驱动器的参数存储到EEPROM,通讯帧格式说明如下:

注意:

发送此命令后,伺服驱动器需要一定时间将参数保存到EEPROM

地址场

1byte

功能码

1byte

CRC校验码

2bytes,低字节在前

0x01

0x41

CRC_Lo,CRC_Hi

建议发送此命令完毕后,等待5S以上,再进行其他操作。

请求帧格式如下:

 

正常响应:

地址场

1byte

功能码

1byte

CRC校验码

2bytes,低字节在前

0x01

0x41

CRC_Lo,CRC_Hi

异常响应:

地址场

1byte

功能码

1byte

异常码

1byte

CRC校验码

2bytes,低字节在前

0x01

0xC1

0x01or02or03or04

CRC_Lo,CRC_Hi

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1