应用指南
如何使用CMCANopen模块实现S7-1200PLC同施耐德LXM28A伺服驱动器的通讯
[应用指南]如何使用CMCANopen模块实现S7-1200PLC同LXM28A伺服驱动器的通讯
目录
1.所适用的Anybus产品4
2.所需产品4
3.方案概述5
4.Studio软件配置6
4.1.导入设备EDS文件6
4.2.配置CANopen网络7
4.3.参数预设功能12
4.4.计算并生成配置文件13
4.5.下载配置14
5.PLC配置15
5.1.硬件组态15
5.2.PDO数据读写18
5.3.通讯状态诊断25
5.4.伺服运动控制例程27
5.5.SDO读写参数32
1.所适用的Anybus产品
描述
名称/型号
CMCANopen模块
021620-B
2.所需产品
类别
描述
名称/型号
版本
Siemens
S7-1200PLC
CPU1214CAC/DC/RLY
214-1BG40-0AB0
S7-1200PLC编程软件
TIAPortal
V11及以上
HMS
CMCANopen模块
021620-B
1.00
CMCANopen配置软件
CMCANopenConfiguration
Studio
2.0.2.3486
CMCANopenHSP文件
HSPforTIAPortalVxx-
ConfigurationFile
Vxx对应所用TIAPortal软件版本
CMCANopen库文件
FunctionBlocksforTIAPortalVxx-ConfigurationFile
Vxx对应所用TIAPortal软件版本
CMCANopen用户手册
CANopenMasterforS7-1200-3263-CMCANopen-UserManual
1.00
Schneider
LXM28A伺服驱动器
LXM28AU04M3X
LXM28AEDS文件
SELXM28_013021E
BCH2电机
电源
220V供电电源
线缆
USB配置电缆
CANopen通讯线缆
伺服系统配套电缆
备注:CMCANopen模块的完整资料及配置软件可以通过以下链接查看并下载:
3.方案概述
本实验将HMS的CMCANopen模块插入西门子S7-1200PLC背板中,CM模块作为CANopen主站与LXM28A通信,另外CM模块通过PLC背板总线与PLC进行通信,从而实现伺服与PLC的数据交换,背板总线同时为CM模块供电。为简单起见,实验中只接了一台LXM28A,实际应用中最多可以挂接16台CANopen设备。
系统连接图
CM模块CANopen接口
LXM28A伺服CANopen接口
备注:
1.CANopen网络连接:
分别对应连接CM模块和LXM28A伺服的CAN_H、CAN_L和SHLD引脚,在CM模块CAN_H和CAN_L之间接入120欧姆电阻,并且在CANopen网络中最后一台设备CAN_H和CAN_L之间接入120欧姆电阻。
2.LXM28A伺服设定:
1)通过伺服HMI设定CANopen设备地址(P3-05)为3,CANopen波特率(P3-01)为500k。
2)当伺服HMI显示AL013错误码时需要将P2-15、P2-16、P2-17参数置0,确保HMI没有错误显示。
4.Studio软件配置
Studio软件用于组态和配置CANopen网络,能够实现网络管理,错误控制和主从站之间的PDO映射与传输,同时还具有参数预设功能。
在进行CANopen网络通讯配置时,需要所连接CANopen从站设备的EDS文件,该文件由设备厂商提供。
4.1.导入设备EDS文件
备注:导入后查看左下角ErrorList列表,如果显示0Errors,则证明EDS文件导入成功;如果显示有Errors,则需要根据Error信息对应修改EDS文件重新导入。
4.2.配置CANopen网络
[应用指南]如何使用CMCANopen模块实现S7-1200PLC同LXM28A伺服驱动器的通讯
3.网络管理设定:在NetworkManagementConfiguration界面下将从站的Bit7勾选项去掉,其他设置保持默认:
4.错误控制设定:在ErrorControlConfiguration界面下可以通过Heartbeat和NodeGuarding两种方式来实现CANopen网络的错误控制,两种方式同时只能使用一种,而且首选Heartbeat。
1)当从站设备支持Heartbeat功能时,如下图所示可以设定主从站Heartbeat报文的发送周期和主从站间的监听方式,此时NodeGuarding中各项参数均为0。
2)当连接的从站设备只支持NodeGuarding时,如下图所示设置节点保护报文的发送周期和主从站之间的监听方式(目前CM只支持主从站相互保护的方式)。
Saved:2016-08-01
Filename:[应用指南]如何使用CMCANopen模块实现S7-1200PLC同LXM28A伺服驱动器的通讯
HMSIndustrialNetworksAB
Page8(39)
[应用指南]如何使用CMCANopen模块实现S7-1200PLC同LXM28A伺服驱动器的通讯
5.添加PDO传输参数:在Applicationobjects界面下展开从站节点的对象列表,根据实际应用勾选需要通过PDO传输的参数对象。
Saved:2016-08-01
Filename:[应用指南]如何使用CMCANopen模块实现S7-1200PLC同LXM28A伺服驱动器的通讯
HMSIndustrialNetworksAB
Page9(39)
7.配置PDO映射参数属性:
[应用指南]如何使用CMCANopen模块实现S7-1200PLC同LXM28A伺服驱动器的通讯
提示:常规的CANopen从站提供4个RPDO和4个TPDO,用于传输实时数据。每个PDO能够传输的最大数据长度为8bytes,根据实际需要传输的数据长度选择使用的PDO个数。
本实例中使用RPDO1和RPDO2接收数据,TPDO1和TPDO2发送数据。参考以上步骤TPDO和RPDO的映射参数分配如下图所示:
③设定CAN-ID(参考PDO默认COB-ID分配表);④选择PDO的传输类型,默认为EventDriven(ProfileSpecific);⑤对于使用的PDO,勾选LockPDO前的选项栏进行锁定。参考以上步骤本实例中RPDO1和TPDO1的通信参数配置如图所示:
Saved:2016-08-01
Filename:[应用指南]如何使用CMCANopen模块实现S7-1200PLC同LXM28A伺服驱动器的通讯
HMSIndustrialNetworksAB
Page11(39)
PDO默认CAN-ID分配表
Object
Specification
CAN-ID
实际设定
RPDO1
CiA301
201hto27Fh(200h+nodeID)
203h
RPDO2同RPDO1的其他设置项保持一致
RPDO2
CiA301
301hto37Fh(300h+nodeID)
303h
RPDO3
CiA301
401hto47Fh(400h+nodeID)
未使用
RPDO3和RPDO4的Enabled选项不勾选
RPDO4
CiA301
501hto57Fh(500h+nodeID)
未使用
TPDO1
CiA301
181hto1FFh(180h+nodeID)
183h
TPDO2同TPDO1的其他设置项保持一致
TPDO2
CiA301
281hto2FFh(280h+nodeID)
283h
TPDO3
CiA301
381hto3FFh(380h+nodeID)
未使用
RPDO3和RPDO4的Enabled选项不勾选
TPDO4
CiA301
481hto4FFh(480h+nodeID)
未使用
4.3.参数预设功能
该功能主要应用于对一些不需要实时传输而且一旦设定后无需改变的对象进行预设,在网络初始化过程中(主从站上电或重启)由主站写入从站,从而减少网络运行中实时传输的数据量,减轻网络的通讯负载。
(本实例预设ProfileAcceleration、ProfileDeceleration、QuicklyStopDeceleration等对象)
利用CAN网络监测工具可以看到上电初始化过程中CM模块自动将预设值写入LXM28A伺服驱动器对应参数中。
4.4.计算并生成配置文件
计算完成后在ProcessImage界面下可以显示从站对象参数在CM模块内存区中的地址分配,图中的Address和Size两项决定了TIA软件中对CM进行硬件组态时的输入输出数据大小:
CANopen输入数据大小(bytes)=最后一个IN参数对应的Address(十进制)+size(bit)/8
CANopen输入数据大小(bytes)=最后一个OUT参数对应的Address(十进制)+size(bit)/8
本实例中CANopen输入数据大小:0x0000000C(12)+32/8=16bytes;
CANopen输出数据大小:0x00000008(8)+32/8=12bytes
4.5.下载配置
提示:对于新的CM模块,在Studio软件中进行下载配置之前需要先在TIA软件中进行CM模块的硬件组态(参考5.1部分硬件组态的说明)。
备注:1.如果配置未能成功下载,请对应本文档FAQ部分的下载错误提示进行处理。
2.成功下载并对CM模块重新上电,正常通讯时RUN灯常绿,ERR灯不亮。
5.PLC配置
HMS旗下IXXAT品牌的官网上提供了CM模块的HSP硬件支持包和SDO功能库文件,可以通过以下链接下载:
5.1.硬件组态
2.设定IP:双击以太网口,在“以太网地址”属性中添加新子网,输入IP地址和子网掩码:
4.添加CM模块:HSP硬件支持包安装完成以后,可以在“目录”下的“通信模块”分组中找到CM模块,将其拖拽到CPU左侧的通信模块槽中:
5.配置CM模块参数:双击CANopen接口,在“Moduleparameters”属性中编辑节点号、操作模式、波特率、CANopen输入输出数据大小(输入输出数据大小的设定可以参考23页)。
5.2.PDO数据读写
1.创建用于进行PDO数据读写的FC功能块:①在“程序块”中添加FC100功能块并命名为“PDO读写”;②在“扩展指令”下展开“分布式IO”找到RDREC和WRREC指令;③分别将RDREC和WRREC指令拖入程序段1和程序段2中。
RDREC参数说明:读取PDO数据
REQ
功能块使能位
VALID
TRUE代表新的数据记录已接收且有效
ID
CM模块硬件标识符
BUSY
TRUE代表读取数据的过程还未完成
INDEX
160091
ERROR
TRUE代表在读取数据的过程中产生错误
LEN
CANopen输出数据大小(bytes)
STATUS
功能块状态和错误信息
RECORD
2.有关功能块状态和错误信息的具体说明请参考CM用户手册相关描述。
2.创建PDO读写指令块变量:打开“PLC变量”下的“默认变量表”,分别添加PDO读写指令块需要用到的参数变量:
3.PDO读取数据指令块的参数具体分配如下图所示:
1)读取的数据存放于M区中起始地址为100,长度为100Bytes(需大于或者等于MLEN)的地址区间。MLEN表明了该区间的有效数据长度,即CANopen输入数据大小。
5.根据以上配置可以确认PDO传输参数的地址映射如下表所示:
伺服参数对应地址映射表
伺服状态参数
CM(INAddress)
PLC地址(M区)
ModeofOperationDisplay
0x00000000
MB100
空
0x00000001
空
ErrorCode
0x00000002-0x00000003
MW102
Statusword
0x00000004-0x00000005
MW104
空
0x00000006-0x00000007
空
PositionActualValue
0x00000008-0x0000000B
MD108
VelocityActualValue
0x0000000C-0x0000000F
MD112
伺服控制参数
CM(OUTAddress)
PLC(M区)
ModeofOperation
0x00000000
MB200
空
0x00000001
空
Controlword
0x00000002-0x00000003
MW202
TargetPosition
0x00000004-0x00000007
MD204
ProfileVelocity
0x00000008-0x0000000B
MD208
6.数据转换:由于CANopen和PLC分别使用的不同的数据格式,所以需要将PDO传输的原始数据转换为可以直接进行读取和设定的用户数据:
2)创建PDO读取数据转换功能块FC101:①在“程序块”中添加FC101功能块并命名为“PDO读_Swap”;②利用Swap指令和Move指令将PDO读取的数据转换为用户数据。
3)创建PDO写入数据转换功能块FC102:①在“程序块”中添加FC102功能块并命名为“PDO写_Swap”;②利用Swap指令和Move指令将用户数据转换为PDO写入的数据。
4)在PDO读写功能块中调用FC101和FC102:打开FC100功能块,在程序段1(RDREC)和程序段2(WRREC)之间插入新的程序段,在新的程序段中分别调用FC101和FC102如图所示:
7.在OB1中调用PDO读写功能块FC100,保存配置并进行编译下载:
8.创建监控表:①在“监控与强制表”中添加新的监控表;②添加PDO读取数据指令块的对应变量和用户数据块中的伺服状态参数;③添加PDO写入数据指令块的对应变量和用户数据块中的伺服控制参数。
5.3.通讯状态诊断
和PDO读取数据的方式一致,CM模块采用“RDREC”指令来实现对CANopen网络和节点状态的通讯诊断。
1.在“用户数据”DB100中创建用于分配给RDREC指令(通讯诊断)的参数变量:
2.在OB1组织块的程序段2中直接调用RDREC指令,分配参数如图所示。保存配置并重新进行编译下载。
备注:通讯诊断RERDC指令的参数INDEX固定为0x0099,MLEN固定为0x84,其他参数的具体定义和PDO读数据REREC指令一致。
3.创建新的监控表并添加通讯诊断的相关变量:
备注:具体诊断信息说明请参考CM用户手册P50-P51说明。
5.4.伺服运动控制例程
该部分以位置模式下的“绝对位置,立刻更新”控制方式为例,编写对伺服进行运动控制的简单例程,供用户在实际编程应用中作参考。
1.创建功能块FB110并进行变量声明:①在“程序块”中添加FB110功能块并命名为“位置模式控制”;②在“变量声明表”中添加以下变量:
2.在程序段1中编写程序用于控制伺服上电后自动进入“运行使能”状态:
3.在程序段2中编写程序用于自动触发“绝对位置,立即更新”方式下的位移指令:
4.在OB1组织块的程序段3中编写程序用于控制PLC自动使能PDO读写和网络诊断:
5.在OB1组织块的程序段4中调用FB110并赋予实参如图所示:
6.在OB1组织块的程序段5中编写程序用于控制伺服上电后自动回零:
7.在OB1组织块的程序段6中编写程序用于控制伺服自动进行连续的正反转位移指令:
9.在监控表中添加“自动运行控制”和“目标到达”变量,向“自动运行控制”中写入修改值TRUE,此时可以看到电机先以较慢的速度正向移动到8000000位置(第一段位移指令),然后以较快速度正向移动到15000000位置(第二段位移指令),最后以较慢的速度反向移动到6000000位置(第三段位移指令),此时“目标到达”为TRUE。
提示:“目标到达”为TRUE后再次向“自动运行控制”中写入修改值TRUE,电机会再次自动执行以上三段位移指令。
5.5.SDO读写参数
对一些不支持PDO传输的参数,需要通过SDO的方式进行读取和设定。CM模块的官网上提供了SDO功能所需的库文件,用户需要在TIA软件中打开该库文件然后进行调用。
本文档的4.3部分介绍了Studio软件的参数预设功能,预设的参数会在CM上电对从站进行初始化配置的阶段自动通过SDO方式写入从站。用户在需要使用SDO写入功能时可以优先考虑通过参数预设功能实现。
3.升级完成后展开“全局库”中的CMCANopenFunctionBlocksV12库文件,分别将ReadSDO和WriteSDO拖入OB1组织块的程序段7中。
ReadSDO参数说明
WriteSDO参数说明
REQ
功能块使能位
REQ
功能块使能位
ID
CM模块硬件标识符
ID
CM模块硬件标识符
SLOT
功能块槽号,0-7值唯一
SLOT
功能块槽号,0-7值唯一
NODE
被读取的CANopen节点地址
NODE
被写入的CANopen节点地址
INDEX
对象索引
INDEX
对象索引
SUB
对象子索引
SUB
对象子索引
DB
读取数据存放的数据块号
DB
写入数据存放的数据块号
DATASIZE
写入数据的长度
SIZE
读取数据的长度
BUSY
TRUE表示当前请求未完成
BUSY
TRUE表示当前请求未完成
RET
功能块错误信息
RET
功能块错误信息
5.按照同样的步骤创建WriteSDO的存储数据块DB7,并命名为“WriteSDOData”:
6.对ReadSDO和WriteSDO功能块分配参数并编写控制程序如下图所示:
7.保存项目并重新进行编译下载,在监控表中添加ReadSDO和WriteSDO功能块的变量,以参数HomeOffset(索引607C,子索引00,数据长度4个字节)为例,对ReadSDO和WriteSDO的相关变量进行赋值。
FAQ
问题1--下载配置后如何判断CANopen网络的通讯状态:
方法1:通过模块LED指示灯判断通讯状态RUN灯常绿,ERR灯不亮:通讯正常。RUN灯绿闪,ERR灯常红:CAN_L和CAN_H短接,总线关闭。RUN灯绿闪,ERR灯红闪(单次):接线错误or没有加终端电阻or波特率不一致。RUN灯绿闪,ERR灯红闪(两次):Studio配置和实际设备不匹配。RUN灯不亮,ERR灯不亮:CM未组态orCM组态和Studio软件中设定不一致。
方法2:通过在博途V13中调用网络诊断功能块来监控网络和节点的运行状态。
方法3:通过CAN报文监测工具接入网络,根据报文判断当前通讯状态。
问题2--Studio配置文件在其他电脑上打不开:
错误提示:
错误原因:Studio配置文件无法单独打开,需要与同名的XPR后缀的文件夹一起使用。
处理办法:将配置文件存储路径下的其他同名文件和配置文件一起复制到其他电脑上。
问题3--利用Studio软件无法正常下载配置:
1)错误提示:
错误原因:在进行PDO映射设定时未将使用的PDO勾选或者在计算配置时有参数未能成功映射。
处理方法:检查PDO的设定项,确认所有使用的PDO被勾选,同时所有参数在计算配置时成功映射。
2)错误提示:
错误原因:CM模块未在PLC中进行组态。
处理方法:在TIA软件中对CM模块进行组态并编译下载。
3)错误提示:
错误原因:CPU处于运行模式或者CM模块当前处于繁忙状态。
处理方法:对PLC重新上电,并重新插拔USB配置线。
4)错误提示:
错误原因:USB下载接口未正确配置。
免责声明:本文章如果文章侵权,请联系我们处理,本站仅提供信息存储空间服务如因作品内容、版权和其他问题请于本站联系