开疆智能ModbusTCP转Canopen网关连接AGV地标传感器
S7-300单站系统与Modbus Slave软件组态
打开TIA软件,新建一个工程项目文件,命名为“CP_MODBUS TCP Client”, 在项目下插入一个S7-300站,如下图1所示:
图1 新建S7-300 Station
打开设备视图,添加CP343-1,并设置CP343-1的IP地址,本例中将CP343-1的PN口IP地址设为192.168.0.221,如图所示:
图2设备视图中设置CP343-1的IP地址
2.3 组态网络视图
使用CP343-1做MODBUS TCP通信前,首先要创建CP343-1和MODBUS TCP服务器的TCP连接
步骤①:添加TCP连接
图3 添加TCP连接
步骤②:设置通信伙伴方的IP地址
TCP连接属性---常规---填写伙伴方的IP地址(此处为MODBUS TCP服务器的IP地址)
图4 TCP连接参数设置
步骤③:设置本地ID
TCP连接属性---本地ID
此处的“本地ID” 和“ LADDR”,在之后的配置MODBUS TCP工艺对象时,对应连接设置中的“连接ID”和“梯级”
图5 TCP连接参数设置
步骤④:勾选“主动建立连接”
TCP连接属性---特殊连接属性,CP343-1做TCP的客户端时,需要勾选“主动建立连接”
图6 TCP连接参数设置
步骤⑤:CP343-1作为客户端和服务器TCP通信,必须要指定服务器的IP地址和端口号。
TCP连接属性---地址详细信息,设置伙伴方的IP地址和端口号
图7 TCP连接参数设置
TCP连接属性---选项,默认设置
图8 TCP连接参数设置
2.4 组态工艺对象
配置完TCP连接后,接下来需要新增工艺对象,
步骤①:新增工艺对象
选择“Modbus”---"通信处理器"---“MODBUS_TCP”---"MB_CP_PARAM"。
图9 新增工艺对象
步骤②:设置“连接设置”
连接设置:连接ID,梯级这两个参数 查看2.3章节TCP连接参数中的“本地ID”
图10 组态工艺对象
步骤③:设置“Modbus设置”---“内部”
“SIMATIC S7是服务器”选项默认不勾选;“单次写入”选项根据Modbus TCP 服务器对于功能代码的要求而定,默认情况下不勾选。
图11 组态工艺对象
步骤④:设置“Modbus设置”---“数据区域”
Modbus 设置---数据区域:下图中设置了4个Modbus数据区域
图12 组态工艺对象
2.5 根据工艺对象中创建的数据区域添加数据块
根据步骤3.4工艺对象中设置的数据区域,添加四个数据块,如下图所示
图13 创建数据块
图14 创建存放MODBUS 线圈数据的数据块
图15 创建存放MODBUS 数字量输入类型的数据块
图16 创建存放MODBUS 保持寄存器数据的数据块
图17 创建存放MODBUS 输入寄存器据的数据块
2.6 创建具有可用于授权的注册表项的数据块
创建授权密钥数据块DB3(名称REG_KEY),选择类型为“全局DB”,打开该DB块,创建变量“REG_KEY”,数据类型为“String[17]”,如图所示:
图18 创建存放授权码的数据块
2.7 调用OB121
由于在获取授权密钥前,“MODBUSCP”指令是无授权状态,会使CPU报错而停机。而为了读取CPU 的“IDENT_CODE”码,需要CPU运行起来,则必须添加编程错误组织块OB121,如下图所示:
图19 OB121
下图为CPU诊断信息,若MODBUS TCP没有授权的情况下使用,会报错误“16#A090”和“读取时发生区域长度错误”,若调用了OB121,可避免CPU停机。
图20 CPU诊断信息
2.8 调用通信指令
调用MODBUS TCP指令(通信---通信处理器---MODBUS TCP---MODBUSCP),填写参数。
为了在通信故障时查找原因,编写程序段2捕获错误代码。
图21 调用“MODBUSCP”指令
2.9 初始化指令
创建启动组织块OB100(名称COMPLETE RESTART),语言为“STL”,打开该OB块,置位初始化位输入管脚寄存器,如下图所示:
图22 初始化“MODBUSCP”指令
配置完PLC组态后下载到PLC。
打开网关配置软件“CANopen Configuration Studio”进行配置
新建项目,选择MT-Canopen
设置网关与编码器通讯的Canopen参数,包括波特率及周期时间等.
设置网关在ModbusTCP一侧的IP地址,以及掉线后的数据处理方式。
添加地标传感器的EDS文件,可从官网下载。
选择对应的从站设备
添加好从站进行配置。
分配好配置确认无误后,将配置下载进网关。
设置好Canopen从站的站地址后,将所有设备连接并上电。等所有设备指示灯正常后即可通过PLC对传感器进行操作。