英威腾DA200伺服与SMART485通讯


本文一步一步记录西门子S7-200 smart PLC与英威腾DA200伺服驱动器进行485通讯的全过程。本次使用的PLC是smart的SR30,伺服驱动器型号为SV-DA200-0R7-2-E0,伺服电机为750W防爆电机,额定转速3000rpm,编码器为增量式光电编码器。

硬件连接

本次使用的伺服驱动器与伺服电机并非同一个品牌,购买时电机厂商已经配好驱动器,并设置好电机基本参数,因此并不需要额外设置。需要连接的电缆一共有6处:电源输入,电源输出,调试线,485电缆,控制I/O电缆和编码器电缆。

电源输入

该接口位于伺服驱动器正面左上角,有5个端子:L1、L2、L3、L1C、L2C。这款伺服驱动器是220V输入,将火线L接在L1,零线N接于L3,L2不接。并用跳线将L1C短接于L1,L2C短接于L3。地线连接在左下角接地点即可。

电源输出

该接口位于驱动器正面左下角,有7个端子:+、B2、B3、-、U、V、W。B2短接于B3,除非使用外部再生制动电阻。UVW接电机电源UVW,注意不要接反。+-不接。电机地线也接在左下角接地点。如上图(图是去现场前临时测试拍的,所以没有接地,实际使用时务必接地)。

调试线

这个看起来没什么可说的,实际上在现场因为它没少浪费时间。调试线使用的是标准Micro USB电缆。就是Type-C之前安卓手机流行使用的手机数据线。伺服驱动器上的接口在右上角的黑色小盖子里,揭开就能看到。

Micro USB接口

这个线很平常,很容易找到,但是有一点务必注意。电机在使能后将产生强烈的干扰,会影响到数据线。具体现象是:电机一使能,上位机软件就会反复在离线-在线之间跳跃,无法控制以及监控参数。问过英威腾技术之后得知是因为干扰。除了驱动器本身,调试环境的干扰以外,甚至笔记本电脑的电源适配器也是干扰源。所以为了避免在这个上面浪费时间,从一开始就尽量使用带有屏蔽环的电缆。

单屏蔽环的Micro USB电缆

485通讯电缆

DA200伺服驱动器的通讯接口为了兼容各种不同的协议,使用了RJ-45接口(但是原生不支持PN)。smart的485接口则是DB9,所以需要制作一根一头是网口,另一头是9针的电缆。为了避免干扰,还是建议使用带屏蔽的网线。

网口的一头不必说,按照T568B的线序压好。smart的DB9接口定义在上一篇通讯HMI的文章里写过,3是数据+,8是数据-。

伺服端如图,4为485数据+,5为485数据-。T568B中4是蓝色,5是蓝白。所以DB9接头上,3接蓝色,8接蓝白。制作好的电缆一头接在PLC,另一头接在驱动器右上角的CN3网口。

控制I/O电缆

该接口是驱动器正面右侧中间最大的接口,接口使用DB44。

一共44根引脚,包括控制所需的全部数字量模拟量的输入输出,还包括一组24V直流电源输出,容量100mA,传感器较少时可用。电源24+位于40,电源地位于12。

本次使用场景仅用到了一个数字量输出,作为负方向驱动禁止,即限位开关。

数字量接线如上图。负方向驱动禁止默认是数字量输入8(详见下节),数字量输入8针脚为4,将上图中的16换为4然后按图连接即可。如接线较多可以使用多芯线,将一头焊接在DB44公头,另一侧接入控制柜端子排。一定要记清针脚序号与电缆颜色的对应关系,防止接错。本次使用所用针脚较少,于是用了一根网线,只焊接了需要的针脚,并使用了外部直流电源。传感器是三线制自适应常闭磁感开关,棕色线接24V,蓝色线接0V,黑色线接CN1的4针脚。另外需将开关电源的V+接入数字量公共端2,V-接入公共地12针脚。

编码器电缆

不同类型的编码器连接方式不尽相同,伺服器端使用的接头为DB15,就是熟悉的VGA接头,电机厂家会将插头配好,直接连接在伺服右下角的CN2接口即可。

在现场遇到了插头太大没法穿进穿线孔而被迫剪掉焊好的插头重新焊接的尴尬情况。十余根线一个一个焊在插头上着实对眼睛不太友好,相同情形建议使用免焊接头,但是也要注意免焊插头宽度过大与旁边CN1插头不兼容的问题。

伺服参数配置

硬件连接完成后开始进行伺服的参数设置。在英威腾官网可下载调试软件INVT Workshop,连接好调试线,给伺服驱动器上电,打开软件,选择DA200伺服后,伺服会自动连接,左下角显示设备在线。

看到右侧监控界面电压数值在变化,基本就成功了。

DA200包含P0~P6七组参数设定,以及R0~R2三组监控参数,每组含有数十个参数。下面依次介绍需要用到的参数(大部分用不到也就不用在意了)。这些参数的具体功能详见驱动器手册,此处只是列出需要关注的参数。

P0组参数

P0.02 电机旋转正方向。默认是逆时针,按实际使用情况调整。
P0.03 控制模式。伺服有位置、速度、转矩三种模式,还有复合模式,此次使用场景采用位置-速度模式。
P0.09 转矩限制方式。用于限制电机输出的最大转矩,防止输出转矩过大损坏其他设备。此位设2,由P0.10、P0.11参数限制转矩。
P0.10 最大转矩限制1。在此处限制正方向最大输出转矩,单位%,为额定转矩的百分比。
P0.11 最大转矩限制2。在此处限制负方向最大输出转矩。
P0.15 默认监视参数。此处设置驱动器右上角的小屏幕实时监视哪个数据。
P0.20/40/60 位置/速度/转矩指令选择。此处设置各个模式下指令的来源,均需设定为总线输入。
P0.46 内部速度/速度限制1。在转矩模式下,此处设置转矩模式的最大运行速度。
P0.67 速度限制方式。此为设1,使P0.46的设置生效。

P3组参数

P3.00~09 开关量输入1~10。在此处设置开关量输入1~10的功能。功能代码的格式为16进制,形如0x000,0x后面的三位:第一位设置光耦导通或不导通有效,说人话就是输入的传感器时常开还是常闭,常开设0,常闭设1。后两位为功能码。例如,负方向驱动禁止的功能码为02,如使用常开开关,此位设为0x002,如使用常闭开关,此处设为0x102。以下是常开的功能码列表,具体功能见手册。
P3.40 行程限位开关屏蔽。如使用了正负方向驱动禁止,此处需设0,否则无效。

  • 0:0x000:无效
  • 1:0x001:正方向驱动禁止
  • 2:0x002:负方向驱动禁止
  • 3:0x003:伺服使能
  • 4:0x004:报警清除
  • 5:0x005:控制模式切换
  • 6:0x006:增益切换
  • 7:0x007:滞留脉冲清零
  • 8:0x008:指令脉冲禁止
  • 9:0x009:转矩限制切换
  • 10:0x00A:内部速度指令选择1
  • 11:0x00B:内部速度指令选择2
  • 12:0x00C:内部速度指令选择3
  • 13:0x00D:零速箝位
  • 14:0x00E:速度指令符号
  • 15:0x00F:转矩指令符号
  • 16:0x010:内部位置指令选择1
  • 17:0x011:内部位置指令选择2
  • 18:0x012:内部位置指令选择3
  • 19:0x013:内部位置指令选择4
  • 20:0x014:外部故障
  • 21:0x015:惯量比切换
  • 22:0x016:紧急停止
  • 23:0x017:Home开关输入
  • 24:0x018:Home触发
  • 25:0x019:电子齿轮比分子选择1
  • 26:0x01A:电子齿轮比分子选择2
  • 27:0x01B:点位控制触发
  • 28:0x01C:制振控制切换输入
  • 29:0x01D:快速停机
  • 30:0x01E:点位控制停止
  • 31:0x01F:绝对位置清零
  • 32:0x020:内部位置指令选择5
  • 33:0x021:内部位置指令选择6
  • 34:0x022:内部位置指令选择7
  • 35:0x023:正向点动
  • 36:0x024:反向点动
  • 37:0x025:点动高低速切换
  • 38:0x026:位置锁定或跑位1
  • 39:0x027:位置锁定或跑位2
  • 40:0x028:位置锁定或跑位3
  • 41:0x029:位置锁定或跑位4
  • 42:0x02A:位置锁定或跑位5
  • 43:0x02B:位置锁定或跑位切换
  • 44:0x02C:端子JOG使能
  • 45:0x02D:龙门同步解除输入
  • 46:0x02E:主机龙门同步对位传感器
  • 47:0x02F:从机龙门同步对位传感器
  • 48:0x030:动态制动继电器反馈
  • 49:0x031:刀塔手动和自动切换
  • 50:0x032:刀塔正向点动
  • 51:0x033:刀塔反向点动
  • 52:0x034:全闭环半闭环切换
  • 53:0x035:PTP中断暂停

位置模式下数字量输入1~10的默认设置如下:

P4组参数

P4.01 485通讯本机地址。即485从站地址。
P4.10 上位机类型。此处需设为总线通讯。
P4.11 总线伺服使能。通过通讯修改此位,控制伺服使能。
P4.12~14 总线位置/速度/转矩指令。通过总线修改此位,向伺服发送位置/速度/转矩指令。
P4.15 控制模式切换指令。复合模式下,通过总线切换模式。
P4.19 零速箝位。通过总线控制零速箝位。电机带负载时,零速可箝位制动。
P4.31 最大速度限制。可通过总线修改。
P4.33 位置超差脉冲范围。如果单次位置指令行程较长,将此位设0防止报错。

P5组参数

P5.10 回原点方式选择。在使用限位开关时,设20向正方向找原点,设21向负方向找原点。
P5.11 上电自动回原点。上电后第一次使能自动回原点。
P5.12 回原点第1段高速速度。此处设置回原点速度。
P5.15 回原点触发指令。通过总线设置此位立刻回原点,到位后此位自动复位。

R组参数

可以通过通讯读取此组参数。

R0.00 电机转速。电机实时转速。
R0.10 转速指令。当前驱动器正在执行的指令。
R0.04 滞留脉冲。当前还有多少个脉冲没有执行完。
R0.06 当前转矩。
R1.00 开关量输入。为16进制数值,转换为2进制后,每一位0或1代表开关量输入状态。最低位为输入1。
R1.01 开关量输出。同R1.00,最低位为输出1。

参数设置完成后,在不使能状态下点击软件右上角的正转,反转点动,电机动作正常即可使用。

485通讯

通讯使用smart中的MBUS_CTRL以及MBUS_MSG进行。MBUS_CTRL用于建立连接,MBUS_MSG进行数据读写操作。

建立通讯

该块的EN为使能,Mode为1时使用Modbus。EN与Mode脚一直为1即可。Baud为波特率,Parity为校验位,这两位与驱动器P4.03与P4.04设置相符。Port为0时使用PLC机身的485接口,为1时使用PLC信号板的485接口。Timeout超时设为1000。右侧是完成位和错误码。完成位占1bit,错误码占1Byte。

向使能写入1

读写数据使用MBUS_MSG,此块的EN脚为使能,First为发送指令,上升沿触发。Done为完成位,发送成功后置1。因为Modbus在同一时间只能发送一条指令,所以在发送完成后需要将V200.0复位,避免影响下一条指令。连续执行多条指令时,可以使用完成位进行轮询操作。

用上一步指令的完成位激活下一条指令,同时复位上一条指令。

该块的Slave管脚为从机地址,与驱动器P4.01参数相符。RW为1时为写操作,为0时为读操作。Addr为从机地址。Count为读写长度。DataPtr是间接地址指针,指将此地址对应的数据发送,或将读取的数据写入此地址。DataPtr填写的是间接地址,可以使用&加地址表示,例如,读写地址为VB0,VW0,VD0时,此处均填写&VB0,长度由Count位控制。

地址和长度的计算方法如下:

手册中P4.12参数的说明

以参数P4.12为例。图中该参数数据大小为32bit,smart中VB为16bit,32bit对应2个VB。所以Count位填2,如数据大小为16bit则填1。

Modbus通信地址为1824,该地址为驱动器端的地址。驱动器端的通讯地址从0开始。smart中Modbus读写寄存器的地址是40001~49999,400001~499999。于是驱动器的地址0,对应的smart端的地址为40001,所以在计算地址时,需要给地址加40001,如果地址是5位数,就要加400001。如P4.12的地址是1824,加40001是41825,转换为16进制是A361,所以Addr管脚应该填写16#A361。

除地址外,写入的数据也需要经过换算。驱动器中一个32bit的数据,其高16位和低16位与西门子PLC的相反。比如PLC中向VD1写入数据16#00030D40(十进制的200000),然后发给驱动器,则驱动器收到的是16#0D400003(十进制的222298115)。为保证发送的数据准确,需要在发送前将高低16位互换。

一个VD包含32bit,即两个VW,VW正好的16bit,所以把VD中的两个VW调换一下。如VD0包含VW0和VW2,VD4包括VW4和VW6。以下是将VD0高低16位互换放入VD4的方法。

将数据转换后放入了VD4,那么发送此数据时,Count填写2,DataPtr填写&VB4。就可以将原来VD0中的数据发送给伺服驱动器了。