AGV小车的基础控制
HMS Industrial Networks 的 CM CANopen 模块与 Siemens 的 S7-1200 PLC 的 TIA Portal 配置示例。在此示例中,使用了 1214C 类型的 CPU,但该示例也可以应用于所有其他 PLC 类型。要运行此示例,必须已安装可从 https://www.ixxat.com/technical-support/resources/downloads-and-documentation?ordercode=021620-B下载的 HSP 文件。
CANopen网络连接:
分别对应连接CM模块和LXM28A伺服的CAN_H、CAN_L和SHLD引脚,在CM模块CAN_H和CAN_L之间接入120欧姆电阻,并且在CANopen网络中最后一台设备CAN_H和CAN_L之间接入120欧姆电阻。
打开 TIA Portal 程序并通过单击屏幕左侧的“创建新项目”开始一个新项目。
2. 输入项目名称和项目存储路径,可选择包含作者和描述性注释等信息。按“创建”。
3. 选择左侧的“设备和网络”,然后按“添加新设备”。
4. 选择配置中使用的 PLC 类型。选择正确的软件版本并可选择输入 PLC 的名称(默认 PLC_1)。按“添加”。
5. 如图所示,在列表中选择CM CANopen模块。将模块的一个实例拖放到 PLC 模块的左侧。
6. 双击 PLC 上的以太网连接器并为 PLC 输入正确的 IP 地址。
7. 双击CM CANopen模块的连接器,选择模块参数选项卡。在参数列表中输入值。请注意,这些参数对 CANopen 网络上的模块有效。
在本例中,用于 S7-1200 的 CM CANopen 模块被配置为 CANopen 管理器。
CANopen 网络上的节点号为 1。CANopen 波特率设置为 500 kbit/s,输入数据大小和输出数据大小均设置为 32 字节。
8. 配置现已完成,可以下载到 S7-1200 设备。要下载软件配置,请选择右侧的 PLC_1,然后选择“在线”>“下载到设备”。要下载硬件配置,请右键单击树中的设备并选择“下载到设备”>“全部”。
9. 选择您正在使用的 PG/PC 接口(在此示例中为 PN/IE)和您 PC 上的以太网接口(在此示例中为 Intel 82577...)。如果在网络上找到之前输入的 IP 地址,请按“加载”下载到您的设备。如果没有,请从“目标子网中的可访问设备”窗口中的可用列表中选择正确的设备。如果设备在另一个子网上,并且在此窗口中不可用,则必须选中“显示所有可访问的设备”复选框。
10.如果下载成功,将出现以下屏幕询问PLC是否应该启动。按完成,PLC 将开始运行下载的空程序。
11.模块配置完成,可以开始PLC编程了。
创建用于进行PDO数据读写的FC功能块:①在“程序块”中添加FC100功能块并命名为“PDO读写”;② 在“扩展指令”下展开“分布式IO”找到RDREC和WRREC指令;③分别将RDREC和WRREC指令拖入程序段1和程序段2中。
RDREC参数说明:读取PDO数据
REQ 功能块使能位 VALID TRUE代表新的数据记录已接收且有效
ID CM模块硬件标识符 BUSY TRUE代表读取数据的过程还未完成
INDEX 16#0090 ERROR TRUE代表在读取数据的过程中产生错误
MLEN CANopen输入数据大小(bytes) STATUS 功能块状态和错误信息
RECORD 读取的数据存放的地址域 LEN 读取数据的长度
WRREC参数说明:写入PDO数据
REQ 功能块使能位 DONE TRUE代表数据已写入CM模块
ID CM模块硬件标识符 BUSY TRUE代表写入数据的过程还未完成
INDEX 16#0091 ERROR TRUE代表在读取数据的过程中产生错误
LEN CANopen输出数据大小(bytes) STATUS 功能块状态和错误信息
RECORD 写入的数据来源的地址域
2. 创建PDO读写指令块变量:打开“PLC变量”下的“默认变量表”,分别添加PDO读写指令块需要用到的参数变量:
3. PDO读取数据指令块的参数具体分配如下图所示:
1) 读取的数据存放于M区中起始地址为100,长度为100Bytes(需大于或者等于MLEN)的地址区间。MLEN表明了该区间的有效数据长度,即CANopen输入数据大小。
2) 可以创建DB数据块(例如DB3),RECORD定义为P#DB3.DBX100.0 BYTE 100,读取的数据存入DB3块中起始地址100,长度100Bytes 的地址区间。注意DB块属性中的“优化的块访问”不要勾选。
4. PDO写入数据指令块的参数具体分配如下图所示:
1) 写入的数据来源于M区中起始地址为200,长度为100Bytes(需大于或者等于LEN)的地址区间。LEN表明了该区间中的有效数据长度,即CANopen输出数据大小。
2) 可以创建DB数据块(例如DB3),RECORD定义为P#DB3.DBX200.0 BYTE 100,写入的数据来源于DB3块中起始地址200,长度100Bytes 的地址区间。注意DB块属性中的“优化的块访问”不要勾选。
5. 根据以上配置可以确认PDO传输参数的地址映射如下表所示:
6. 数据转换:由于CANopen和PLC分别使用的不同的数据格式,所以需要将PDO传输的原始数据转换为可以直接进行读取和设定的用户数据:
1) 创建用户数据块:创建全局数据块DB100,并在DB100中分别添加需要对伺服进行读取的反馈参数和需要对伺服进行写入的设定参数。
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写入数据指令块的对应变量和用户数据块中的伺服控制参数。
9. 在线进行监控:①点击“监控”图标进入在线状态;②将R_Req的修改值置为TRUE;③点击“立即修改”图标将修改值写入对应变量;④ 伺服状态参数的对应数据已经被成功读取,查看伺服通讯手册可知状态字16#4231代表伺服处于“Ready to Switch On”状态。
10. 绝对位置运动控制测试:① 将W_Req修改值置为TRUE;② 分别对伺服控制参数进行赋值;③依次向控制字中写入0x00060x00070x000F0x001F,每次赋值后点击“立即修改”图标;④ 电机转动一段时间后停止,此时读取实际位置数据与目标位置数据一致。
-----伺服运动控制例程 -------
该部分以位置模式下的“绝对位置,立刻更新”控制方式为例,编写对伺服进行运动控制的简单例程,供用户在实际编程应用中作参考。
创建功能块FB110并进行变量声明:①在“程序块”中添加FB110 功能块并命名为“位置模式控制”;② 在“变量声明表”中添加以下变量:
2. 在程序段1中编写程序用于控制伺服上电后自动进入“运行使能”状态:
3. 在程序段2中编写程序用于自动触发“绝对位置,立即更新”方式下的位移指令:
4. 在OB1组织块的程序段3中编写程序用于控制PLC自动使能PDO读写和网络诊断:
5. 在OB1组织块的程序段4中调用FB110并赋予实参如图所示:
6. 在OB1组织块的程序段5中编写程序用于控制伺服上电后自动回零:
7. 在OB1组织块的程序段6中编写程序用于控制伺服自动进行连续的正反转位移指令:
8. 点击“保存项目”并重新进行编译和下载。下载完成后对PLC和伺服重新上电,此时可以看到电机缓慢转动一段时间后停止,此时通过PLC监控表或者伺服HMI可以看到实际位置显示为0:
9. 在监控表中添加“自动运行控制”和“目标到达”变量,向“自动运行控制”中写入修 改值TRUE,此时可以看到电机先以较慢的速度正向移动到8000000位置(第一段位移指令),然后以较快速度正向移动到15000000位置(第二段位移指令),最后以较慢的速度反向移动到6000000位置(第三段位移指令),此时“目标到达”为TRUE。
提示:“目标到达”为TRUE后再次向“自动运行控制”中写入修 改值TRUE,电机会再次自动执行以上三段位移指令。
--------------------待续------------------
审核编辑 :李倩
-
cpu
+关注
关注
68文章
10824浏览量
211109 -
AGV
+关注
关注
27文章
1280浏览量
41001
原文标题:CM CANopenS7-1200 PLC的CANopen主站/从站模块,使用的功能块
文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论