2024年2月6日发(作者:)

RIDING-TESTING DEPARTMENT-003

杭州日鼎控制技术有限公司

RIDING驱动器通讯测试

MODBUS测试

测试准备:

1. 硬件测试:

(1) 与硬件工程师确定MODBUS通讯接口定义:MAX485通讯的A+,B-;

(2) 信号线上EMC测试,群脉冲测试和雷击浪涌测试;

2. 软件测试:

(1) 由软件工程师提供测试的具体内容以及更改点;

(2) 提供需要进行测试的驱动器型号以及电机代码(On-16);

(3) 软件的测试版本号首先确认(On-17);

注:由软件工程师首先确定软件版本号,若更改点有歧义,请确认后进行测试;

Modbus通讯口是使用RS-485串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验;

RIDING-TESTING DEPARTMENT-003

RIDING伺服驱动器的modbus通讯说明

——串口调试助手篇

1. Modbus通讯协议介绍

伺服驱动器可以采用Modbus模式进行上位机通讯,协议格式为:8个数据位、一个停止位、无校验位,发送接收数据都是以16进制格式进行。

发送数据格式:

发送数据

含义

0 1 2 3 4 5 6 7

站号 功能码 地址单元 数据单元 校验码

xx xx xx xx xx xx xx xx

表格1

站号,地址单元,数据单元均采用16进制数;校验位为CRC(LRC)校验,由校验计算工具生成

Modbus支持的功能码:

(1) 03,表示读取保持寄存器;

(2) 06,表示写单个模拟量寄存器;

2. RIDING伺服驱动器的modbus通讯参数的基本设置:

(1) PN-81=1;//*RTU协议:1;ACSII协议:0;

(2) PN-82=1;//*站号设定范围:1~31;

(3) PN-83=1;//*波特率设定:0-----4800;1-----9600;2-----19200;3-----38400;4-----57600;5-----115200;

(4) Modbus通讯协议:8个数据位,一个停止位,无校验;

(5) 测试时不需要焊接120Ω的匹配电阻;

(6) 如开机会出现dE报警,选择Fn-06 参数初始化。

3. RIDING伺服驱动器的modbus通讯协议的两种模式(Pn-81):RTU模式和ASCII模式

(1) RTU模式 01 03 00 1E 00 0C 25 C9(读取12个参数)

01 03 00 1E 00 07 64 0E(读取7个参数)

a) RTU模式的简易功能说明:

1) 读命令 03;(读命令一次最多可以读取12个参数)

1> 读取Pn-01的参数:01 03 00 00 00 01 84 0A;

详解,01表示站号;03表示功能码读取;00表示读取参数地址的高8位16进制编码;00表示读取参数地址的低8位16进制编码;00表示读取数

RIDING-TESTING DEPARTMENT-003

据个数的高8位16进制编码,01表示读取数据个数的低8位16进制编码;84 0A是CRC校验码;

2> 驱动器返回的值:01 03 01 00 04 49 87;

详解,01表示站号;03表示功能码读取;01表示读取参数的个数;00表示读取数据的高8位16进制编码;04表示读取数据的低8位16进制编码;49 87是CRC校验码;

2) 写命令06;

1> 写入Pn-01的参数:01 06 00 00 00 01 48 0A

详解,01表示站号;06表示功能码写入;00表示写入参数地址的高8位16进制编码;00表示写入参数地址的低8位16进制编码;00表示写入数据的高8位16进制编码,01表示写入数的低8位16进制编码;48 0A是CRC校验码;

2> 驱动器返回的值:01 06 00 00 00 01 48 0A

详解,01表示站号;06表示功能码写入;00表示写入参数地址的高8位16进制编码;00表示写入参数地址的低8位16进制编码;00表示写入数据的高8位16进制编码,01表示写入数的低8位16进制编码;48 0A是CRC校验码;

b) RTU模式的简易运行示例

1) 速度模式运行:

1> 速度模式使能:01 06 08 00 01 01 4B FA;

2> 给定使能+正方向:01 06 08 00 01 11 4A 36;

3> 给定使能+反方向:01 06 08 00 01 21 4A 22;

4> 速度模式给定速度:01 06 08 02 00 50 2A 56;//0050表示16进制数,是十进制数的80;命令表示额定转速的万分之80:2500*80/10000=20rpm/min(可观察On-01平均转速和On-19实时转速)

RIDING-TESTING DEPARTMENT-003

5> 速度模式给定速度200r/min: 01 06 08 02 03 20 2B 42

6> 给定速度为0:01 06 08 02 00 00 2A 6A;

7> 速度模式去掉使能状态:01 06 08 00 00 01 4A 6A;

电机额定转速(Pn-A3)的50%:01 06 08 02 13 88 27 3C;

电机额定转速(Pn-A3)的100%,万分之一;01 06 08 02 27 10 30 56;

只的是(给定的额定转速>Pn-34设定的值时,此时按最大转速运行)

2) 速度模式的多段速运行,通过修改参数为Pn-31,Pn-32,Pn-33的参数值实现多段速模式运行:

1> 由参数Pn-31控制速度正转的代码:01 06 08 00 01 51 4B C6;

由参数Pn-31控制速度反转的代码:01 06 08 00 01 61 4B D2;

2> 由参数Pn-32控制速度正转的代码:01 06 08 00 01 91 4B 96;

由参数Pn-32控制速度反转的代码:01 06 08 00 01 A1 4B 82;

3> 由参数Pn-33控制速度正转的代码:01 06 08 00 01 D1 4A 66;

4> 由参数Pn-33控制速度反转的代码:01 06 08 00 01 E1 4A 72;

5> 速度停车的代码:01 06 08 00 01 01 4B FA;(只能在多段速时有效)

6> 速度复位的代码:01 06 08 00 04 01 48 AA;

3) 位置模式运行:(测试时先给定位置在给定速度)

4) :01 03 08 16 00 08 A7 A8;(注:86 A0为低8位 00 01 为高八位)

5) 清除当前命令(On-05)和反馈脉冲(On-04):01 06 08 08 00 03 4A 69

6) 报警复位(Fn-04); 01 06 08 08 00 04 0B AB

7) 清楚报警记录: 01 06 08 08 00 05 CA 6B

1> 位置模式使能:01 06 08 00 01 00 8A 3A;

2> 位置模式给定位置高位:01 06 08 04 00 01 0B AB;

位置模式给定位置低位:01 06 08 05 86 A0 F9 B3;//*正转100000脉冲;//0001 86A0表示+100000;

位置模式给定位置高位:01 06 08 04 00 0F 8A 6F

位置模式给定位置低位:01 06 08 05 42 40 AA FB; //*正转1000000

RIDING-TESTING DEPARTMENT-003

脉冲;//000F 4240表示+1000000;

3> 位置模式给定位置高位:01 06 08 04 FF FE 0A 1B;

位置模式给定位置低位:01 06 08 05 79 60 B8 13;//*反转100000脉冲;//FFFE 7960表示-100000;

4> 位置模式给定速度:01 06 08 02 00 32 AB BF;额定转速的50/10000=0.5%,24rpm;(0032表示十六进制数,十进制为50, 命令转速为额定转速的万分之50,但是在位置环时电机的最小转速24r/min)

5> 位置模式给定速度50r/min:01 06 08 02 00 C8 2B FC (00C8表示十六进制数,十进制为200,命令额定转速的万分之2%。2500*200/10000=50r/min)

6> 位置模式去掉使能状态:01 06 08 00 00 00 8B AA;

7> 位置复位的代码:01 06 08 00 04 00 89 6A;

注:驱动器给定的位置模式的速度命令指令,最小的速度单位是24rpm,当转速不足24rpm时,按照24rpm运行;当转速小于48rpm,大于24rpm时,仍然按照24rpm运行;转速等于48r/min,按照48r/min ;列如:设定转速为X,则X在这个区间运行24n

8) 力矩模式运行:

1> 力矩模式使能: 01 06 08 00 01 02 0B FB;

2> 力矩模式力矩: 01 06 08 03 00 32 FA 7F

3> 速度Pn-31正转: 01 06 08 00 01 52 0B C7 ;

4> 力矩停车代码: 01 06 08 00 04 02 08 AB;

注:力矩模式暂时不能进行速度给定。

(2) ASCII模式

a) RTU转换为ACSII模式:01 06 00 50 00 00 89 DB;

b) ACSII转换为RTU模式::A8;

c) ASCII模式的简易功能说明:

1)读命令 03;(读命令一次最多可以读取12个参数)

1>读取Pn-01的参数: :FB

;//输入命令的结束符是Enter。

详解,“:”表示开始符;01表示站号;03表示功能码读取;00表示读取参数地址的高8位16进制编码;00表示读取参数地址的低8位16进制编码;00表示读取数据个数的高8位16进制编码,01表示读取数据个数的低8位16进制编码;FB是LRC校验码;结束符Enter。

2>驱动器返回的值: :FA;

详解,“:”表示开始符;01表示站号;03表示功能码读取;01表示读取参数的个数;00表示读取数据的高8位16进制编码;04表示读取数据的低8位16进制编码;FA是LRC校验码。

RIDING-TESTING DEPARTMENT-003

2)写命令 06;(写命令每次只能写入一个参数)

1>写入Pn-01的参数: :F7

;//输入命令的结束符是Enter。

详解,“:”表示开始符;01表示站号;06表示功能码写入;00表示写入参数地址的高8位16进制编码;00表示写入参数地址的低8位16进制编码;00表示写入数据的高8位16进制编码,02表示写入数的低8位16进制编码;F7是LRC校验码;结束符Enter。

2>驱动器返回的值: :F7

详解,“:”表示开始符;01表示站号;06表示功能码写入;00表示写入参数地址的高8位16进制编码;00表示写入参数地址的低8位16进制编码;00表示写入数据的高8位16进制编码,02表示写入数的低8位16进制编码;F7是LRC校验码。

RIDING-TESTING DEPARTMENT-003

注:但发送正确的输入指令时,返回值出现汉字,则表示的内容为输入多代码,需清空输入多余的输入指令

4. 虚拟IO口的测试(#0807):01 06 08 07 00 FF 7A 2B;(对应On-11~On-12)

(1) 输入口Input:

a) 第一个输入口:01 06 08 07 00 01 FB AB;

b) 第二个输入口:01 06 08 07 00 02 BB AA;

c) 第三个输入口:01 06 08 07 00 04 3B A8;

d) 第四个输入口:01 06 08 07 00 08 3B AD;

e) 第五个输入口:01 06 08 07 00 10 3B A7;

f) 全部输入口: 01 06 08 07 00 1F 7B A3;

g) 第六个输入口 01 06 08 07 00 20 3B B3(Pr-80)

h) 第13个输入口 01 06 08 07 10 00 37 AB(Pr-87)

i) 关闭输入口: 01 06 08 07 00 00 3A 6B;

(2) 输出口Output:(目前只能测试3个)

a) 第一个输出口:01 06 08 06 00 01 AA 6B;

b) 第二个输出口:01 06 08 06 00 02 EA 6A;

c) 第三个输出口:01 06 08 06 00 04 6A 68;

d) 全部输出: 01 06 08 06 00 07 2A 69;

RIDING-TESTING DEPARTMENT-003

e) 关闭输出口: 01 06 08 06 00 00 6B AB;

(3) 测试方法:

a) 测试输入口时,需要对应On-11的值,从右到左依次为,第一个输入口,第二个输入口,第三个输入口,第四个输入口,第五个输入口;

b) 测试输出口时,需要对应On-12的值,从右到左依次为,第一个输出口,第二个输出口,第三个输出口;

(4) 输入虚拟端口测试:D0~D4为MI1~MI5表示输入端口

测试时要将输出口设置成相应的端口输出。

读取虚拟口参数命令 01 03 08 24 00 01 C6 61

返回值: 01 03 02 00 1F F9 8C

列入返回值中1F表示为16进制数转换为为二进制数为11111。即输入端口PN11~PN15全部为1(闭合状态)。00表示为Pr80~Pr81的端口状态为0(断开状态)

输出虚拟端口测试:D0~D3为MI1~MI4表示输出端口 01 03 08 25 00 01 97 A1

01 03 02 00 07 F9 86

列入返回值中07表示为16进制数转换为为二进制数为111。即输出端口PN15~ PN17全部为1(闭合状态)。

5. 状态区读取(#0810~#0823):

读取状态区的24个参数:0810H~081BH 01 03 08 10 00 0C 46 6A

081CH~0823H 01 03 08 1C 00 0C 86 69

6. 站号测试(Pn-82):

采用RTU模式测试:Pn-81=1;PN-83=1(默认波特率9600);

站号的独立性测试(一个下位机只响应一个站号(从机)):试在设定站号下,输入其它站号指令,不响应(即无数据返回),再次输入本站号指令,能够按照发送命令执行,则通讯功能正常。监控Sn-01的运行状态。

(1) 位置模式使能:01 06 08 00 01 00 8A 3A;Sn-01显示P-P1n;(站号1)图1;

(2) 速度模式使能:01 06 08 00 01 01 4B FA;Sn-01显示n-Son;(站号1)图2;

(3) 位置模式使能:02 06 08 00 01 00 8A 09;Sn-01显示n-Son;(发送站号2指令)图3 ;

(4) 速度模式使能:02 06 08 00 01 01 4B C9;Sn-01显示n-Son;(发送站号2指令)图4;

(5) 位置模式使能:01 06 08 00 01 00 8A 3A;Sn-01显示P-P1n;(站号1)图5;

(6) 速度模式使能:01 06 08 00 01 01 4B FA;Sn-01显示n-Son;(站号1)图6;

(7) 符合上述显示,则通讯功能正常。(下附图串口调试助手说明,按照上述步骤操作);

RIDING-TESTING DEPARTMENT-003

图1

图2

RIDING-TESTING DEPARTMENT-003

图3

图4

RIDING-TESTING DEPARTMENT-003

图5

图6

RIDING-TESTING DEPARTMENT-003

7. 波特率测试:01 03 00 52 00 01 25 DB;//波特率修改后,伺服驱动器需要断电有效;波特率设定:0-----4800;1-----9600;2-----19200;3-----38400;4-----57600;5-----115200;

(1)

(2)

(3)

(4)

(5)

(6)

波特率设置为4800:01 06 00 52 00 00 28 1B;

波特率设置为9600:01 06 00 52 00 01 E9 DB;

波特率设置为19200:01 06 00 52 00 02 A9 DA;

波特率设置为38400:01 06 00 52 00 03 68 1A;

波特率设置为57600:01 06 00 52 00 04 29 D8;

波特率设置为115200:01 06 00 52 00 05 E8 18;

图A

上图A,红色箭头:串口调试助手的波特率设定为4800bps;蓝色箭头:读取Pn-83的参数的值为0;与设定的值一致,此时通讯正常;

RIDING-TESTING DEPARTMENT-003

图B

上图B,修改串口小助手的波特率为9600bps;由于驱动器的波特率为4800bps;此时二者的波特率不一致,则数据通讯失败,会出现乱码;

8. 重要参数测试

功能无效

1. 命令积算脉冲red(,返回积算脉冲green,位置偏差black,编码器反馈pink;见下图

依次读取上述参数:01 03 08 16 00 08 A7 A8;(注:86 A0为低8位 00 01 为高八位)

(Fn-03):清除当前命令(On-05)和反馈脉冲(On-04):01 06 08 08 00 03 4A 69

报警复位(Fn-04); 01 06 08 08 00 04 0B AB

清楚报警记录: 01 06 08 08 00 05 CA 6B

注:(86 A0为低8位 00 01 为高八位)

RIDING-TESTING DEPARTMENT-003

编码器反馈反应的是电机运转的圈数,必须加上使能信号,使能信号去除编码器反馈为0

2. 速度给定命令:目前驱动器给定的位置模式的速度命令指令,最小的速度单位是24rpm,当转速不足24rpm时,按照24rpm运行;当转速小于48rpm,大于24rpm时,仍然按照24rpm运行;依次类推;

速度模式的转速按照实际给定的值来确定;即万分之1,表示实际转速为(1/10000)*2500=0.25rpm;

9. 附录1:一个ModeBus数据帧的构成

读命令在Servo中分为读取参数,读取实时数据,读取历史数据,其数据帧的构成都是一样的。

(1)读命令时的数据帧构成

发送读参数命令时的数据帧构成:

SciBuff[0]:开始符,为“:”对应的ASCII码0x3a;

[1,2]:站号,两位十进制数表示,例如站号15,分别存1和5的ASCII码到数组中;

[3,4]:功能码,=3:读;=6:写;=8:无操作;

[5,6,7,8]:读取的参数号,四位十进制数表示;

[9,10,11,12]:本次读取参数的个数,四位十进制数表示;

[13,14]:校验位;取和求反

[15]:=0x0d,结束符CR;

[16]:=0x0a,结束符LF;CR+LF=回车,表示本帧数据发送完毕;

返回读参数命令是的数据帧构成:

SciBuff[0]:开始符,为“;”对应的ASCII码0x3a;(不变)

[1,2]:站号,两位十进制数表示,例如站号15,分别存1和5的ASCII码到数组中;(不变)

[3,4]:功能码,=3:读;=6:写;=8:无操作;(不变)

[5,6]:返回数据的长度,两位十进制数表示;(实际长度*2)

[7,…,54]:读取的参数,最多12个参数,每个参数用四位十进制数表示;(有效数据)

[55,56]:校验位;取和求反

[57]:=0x0d,结束符CR;

[58]:=0x0a,结束符LF;CR+LF=回车,表示本帧数据发送完毕;

(2)写命令时的数据帧构成

发送写命令时的数据帧构成:

SciBuff[0]:开始符,为“;”对应的ASCII码0x3a;

[1,2]:站号,两位十进制数表示,例如站号15,分别存1和5的ASCII码到数组中;

[3,4]:功能码,=3:读;=6:写;=8:无操作;

[5,6,7,8]:写参数的地址,四位十进制数表示;

[9,10,11,12]:写参数的值,四位十进制数表示;

[13,14]:校验位;取和求反

[15]:=0x0d,结束符CR;

[16]:=0x0a,结束符LF;CR+LF=回车,表示本帧数据发送完毕;

RIDING-TESTING DEPARTMENT-003

返回写命令时的数据帧构成:

按照发送过来的数据原样返回。

(3)校验出错时的数据帧构成

SciBuff[0]:开始符,为“;”对应的ASCII码0x3a;

[1,2]:站号,两位十进制数表示,例如站号15,分别存1和5的ASCII码到数组中;

[4]:0x38;

[5,6]:错误代码,两位十进制数表示;

[7,8]:校验位

[9]:=0x0d,结束符CR;

[10]:=0x0a,结束符LF;CR+LF=回车,表示本帧数据发送完毕;

10. 附录2:RIDING伺服驱动器的地址单元

地址单元:

0000H~07FFH:参数区(列如:读取Pn-01的值 01 03 00 00 00 01 84 0A

返回值 01 03 01 00 04 49 87)

0800H~08FFH:命令区(SciServoCom)

+00H():运行模式设定

D0~D3:00=位置; 01=速度; 10=力矩;

D4~D5:00=停车; 01=FWD; 10=REV; 11=Reserved;

D6~D7:00=多段速无效; 01=多段速1; 10=多段速2; 11=多段速3;

D8:SCI使能

D9:SCI急停

D10:SCI复位

D11~D15:Fnxx功能

=0:NULL

=1:FN01(JOG:点动运行)

=2:FN02(Prt:清除当前命令和反馈脉冲)

=3:FN03(CPrt:清除计算脉冲)

=4:FN04(rt:报警复位)

=5:FN05(ALrt:报警记录初始化)

=6:FN06(PArt:参数初始化)

=7:FN07(oFFt:自动补偿调整)

=8:FN08(保留)

=9:FN09(保留)

=10:FN10(ESY.1:简易运行)

=11:FN11(Ptn:模式运行)

+01H(RecordMode):

D0~D3:采样时间设置(1ms PU,1ms default)

D4:=1,启动时保存;=0,停止时保存

D5:=1,允许采样;=0,禁止采样

RIDING-TESTING DEPARTMENT-003

D6~D15:采样变量选择

D6=SpeedNow(实际转速,单位0.1RPM)

D7=SpeedRef(实际转速,单位0.1RPM)

D8=IQNow(Q轴实际电流,单位PU)

D9=IQRef(Q轴给定电流,单位PU)

D10=IDNow(D轴实际电流,单位PU)

D11=IDRef(D轴给定电流,单位PU)

D12=PosiErr(位置误差,单位个)

D13=PosiNow(位置累积,单位个)

D14=CurrI(力矩,单位百分比)

D15=CurrU(U相电流,单位A)

+02H:运行速度给定值(额定速度万分比,0.0001)

+03H:运行力矩给定值(百分比,0.0001)

+04H:运行位置给定值高位

+05H:运行位置给定值低位(高位发送后发送低位有效)

+06H:虚拟IO,D0~D3对应Pn15~Pn18

+07H:虚拟IO,D0~D13对应Pn10~Pn14 Pr-80~Pr-87设定的功能

+08H:=3 清除反馈脉冲和当前命令

=4 报警复位

0810H~082FH:状态区

+00H:当前运行状态字 +01H:故障代码

+02H:当前转速 +03H:指令转速

+04H:平均转矩 +05H:直流电压

+06H:命令积算脉冲(Lo) +07H:命令积算脉冲(Hi)

+08H:返回积算脉冲(Lo) +09H:返回积算脉冲(Hi)

+0AH:位置偏差(Lo) +0BH:位置偏差(Hi)

+0CH:编码器反馈(Lo)(断使能清零) +0DH:编码器反馈(Hi) (断使能清零)

+0EH:速度环反馈脉冲LO(断使能不清零) +0FH:速度环反馈脉冲HI(断使能不清零)

+10H:电角度 +11H:脉冲串输入频率

+12H:散热器温度 +13H:模拟给定电压

+14H:虚拟IO输入:D0~D13:MI1~MI5(Pn-11~Pn-15) MI6~MI13(Pr-80~Pr-87)对应输入端口

+15H:虚拟IO输出:MO1 ~MO3 对应PN15~Pn-17的输出的端口

//灰色为暂时未添加;

注:驱动器输入线未接大地,电脑接地时,通过上位机给驱动器发命令时,由于地线干扰,返回值不断接收。