随着工业自动化程度的提高,以及应用领域的需求,RFID的技术被越来越多的集成于系统。由于全集成自动化是西门子产品设计的核心理念之一,因此,为RFID集成于自动化系统提供了多种解决方案。
通过RFID的通信接口模块,可将RFID 集成到PC,主流PLC,如: S5、S7、PROFIBUS DP、非西门子PLC、以太网等。
如图1
图1:RF300的集成方式
2、本文试验设备简介
2.1 硬件设备
RF360T:6GT2800-4AC00,RF300 数据存储器(移动载体)
RF380R:6GT2801-3AA10,RF300读写器
ASM456:6GT2002-0ED00,通讯模块,独立的PROFIBUS DP从站,可连接2个通道
的读写设备(SLG),用于将RFID系统集成到PROFIBUS DP/DP-V1 。
ECOFAST 连接块:6ES7194-3AA00-0AA0
PROFIBUS ECOFAST 混合直插头
插针型:6GK1 905-0CA00,每包 5 件
插座型:6GK1 905-0CB00,每包 5 件
PROFIBUS ECOFAST 终端电阻插头:6GK1 905-0DA10
RF300 SLG电缆:6GT2891-0FH50,5米
PS307:6ES7 307-1KA01-0AA0,S7-300电源模块
CPU315-2PN/DP:6ES7 315-2EH13-0AB0,S7-300 *处理器
S7-300道轨
PROFIBUS DP电缆
2.2 软件
STEP 7 V5.4 SP5,用于组态、编程
MOBY 系统软件:6GT2 080-2AA10,GSD 文件,FC45,手册
3、FC45
FC45 是STEP 7为RFID识别系统所编写的功能块,SIMATIC S7-300/400 通过通信接口模块连接RFID读写器,通过FC45与RFID识别系统进行数据交换。
本文讲述了怎样使用S7-300,CPU315-2PN/DP 以及ASM 456与RF300的RF 380R连接,通过FC45 与RF300进行数据交换。
3.1 FC45 参数数据块(参数DB)
每一个读写设备,都需要预分配参数,并存储到参数数据块里(参数DB),该参数DB通过UDT 10(用户数据类型)生成。在UDT 10中,定义了输入参数、控制命令、过程信息、以及FC45 的内部变量等。
3.1.1 输入参数
字节0—16,ASM456**个通道的输入参数,这些参数需要用户预先定义,用于初始化设备的。反之,当参数发生变化,需要进行初始化操作。如图2
字节300—316,是ASM456*二个通道的输入参数。
图2:UDT10
输入参数包含ASM逻辑地址,通道号,命令DB号,命令DB的起始地址,以及MOBY的控制参数。
其中,MDS_control 参数,取值范围0、1、2:
MDS_control=0,Presence check 关闭,MDS_present状态无指示,MDS_Control关
闭,SLG 发射场只有在 Command_start 启动时才打开。该方式用于多
个SLG近距离安装的使用场合,通过控制Command_start的启动,有效
的避免相互间的干扰。
MDS_control=1,Presence check 打开,当MDS进场,MDS_present状态会置“1”,且
会通过MOBY设备(如ASM456)指示出来。MDS_Control关闭,SLG 发
射场总是处于打开状态,执行过程中MDS离场不出错。该方式为默认设
置方式。
MDS_control=2,仅适用于ASM454。Presence check 打开,MDS_present状态有指
示,MDS_Control打开。ASM Firmware 的选项命令,用于同步MDS用
户程 序。
(1)、ASM命令没执行完MDS离场,会出错
(2)、MDS穿过读写窗口,但用户程序没执行操作,会出错
3.1.2 状态和控制
字节18—20,ASM456**个通道的状态和控制位,用于指示过程信息和错误。如图3
图3:UDT10
其中命令控制字(参数 DB 的 DBW18)对于编程、操作、和状态监视都非常重要。图4
图4:DB45.DBW18
字节318—320,ASM456*二个通道的状态和控制位,用于指示过程信息和错误。
3.1.3 错误及其他状态信息
字节21—26,ASM456**个通道的错误及其他状态信息。如图5
图5:UDT10
字节321—326,ASM456*二个通道的错误及其他状态信息。
3.1.4 内部变量
字节28—299,FC45内部变量,用于ASM456**个通道使用,编程时不需要关注。
字节328—599,FC45内部变量,用于ASM456*二个通道使用。
关于参数DB,请参考FC45手册*三章:21737722
3.2 MOBY 命令
在MOBY启动前需定义MOBY命令。MOBY命令如表6
UDT20是用以定义MOBY命令DB的数据结构。
普通命令 组命令 命令意思
01 41 写数据到MDS(数据载体)
02 42 从MDS读数据
03 43 初始化MDS
04 44 SLG(读写器)状态
06 -- NEXT 命令
08 48 END命令;取消与MDS通信
0A 4A 天线ON/OFF
0B 4B MDS状态
表6:MOBY命令
注:
01/41,02/42,03/43是MOBY基本命令,适用于所有MOBY SLG 和 ASM,其他命令要视MOBY 和 ASM 而定。
4、组态编程
4.1 连接设备
本文实验设备如图6
图6:设备连接图
4.1.1 模块连结
将ASM456 ECOFAST 连结模块到基本模块,如图7
图7:ASM456 ECOFAST模块
ASM456基本模块:6GT2002-0ED00
ECOFAST 连接块:6ES7194-3AA00-0AA0
4.1.2 设置PROFIBUS DP 地址
通过地址设定插头设置PROFIBUS DP 地址,如图8
图8:DP设置插头
PROFIBUS DP 地址设置插头:6ES7 194-1KB00-0XA0
4.1.3 连接ECOFAST 混合插头
连接PROFIBUS DP网线和电源,如图9
图9:ECOFAST 混合插头
插座:6GK1 905-0CA00,电源、DP线接入ASM456
插头:6GK1 905-0CA00,电源、DP线从ASM456接出到其他站
如果是DP末端站,ASM456需要使用终端电阻插头:6GK1 905-0DA10
4.1.4 连接RF360T 到ASM456
使用的RF300 SLG电缆:6GT2891-0FH50,5米,连接RF380R 到ASM456。
4.2 STEP 7创建项目
4.2.1 创建项目
打开STEP7 创建新项目 ASM456-FC45,见图10
图10:创建项目
4.2.2 安装ASM456 GSD 文件
两种方式找到ASM456 GSD文件:
MOBY软件CD: \daten\profi_gsd.
或
网上下载ASM456 GSD 文件:113562
4.2.3 组态ASM456
安装ASM456 GSD文件后,在STEP7硬件列表中出现该产品。如图11
图11:STEP7硬件列表
硬件组态,设置CPU315-2PN/DP MPI/DP 接口为DP 主站,ASM456 作为3号从站连接到主站。双击ASM456 ,选择User mode 为 FB45/FC45,MOBY mode 为MOBY U/D/RF300 normal addressing,通信传输速率115.2Kbaud。如图12
图12:STEP7硬件组态
ASM456 逻辑首地址256。如图13
西门子RS485总线接头
图13:ASM456硬件地址
编译并下载到CPU315-2PN/DP,CPU 运行,通信建立。
4.2.4 打开FC45例子程序
解压MOBY 软件CD中的程序文件 , daten\FC45.ARJ。如图14
图14:例子程序
拷贝例子程序到项目中。
由UDT10生成的DB45是MOBY 参数DB,其中包含ASM456逻辑地址,通道号,命令DB号,以及命令DB的起始地址。如图15
图15:DB45
该程序是RF300单载体操作,因此,参数DB中参数MOBY_mode选择5,RESET_Long参数选择1(True)。如图16
图16:DB45
4.2.5 编程序
在OB100(S7-300启动初始化程序)中置位每一个通道的init_Run。如图17
图17:OB100程序
在OB1中周期性执行FC45,启动MOBY命令。如图18
图18:OB1程序
OB 122 评估出ASM 模块故障信号。如图19
图19:OB122程序
5、调试
5.1 MOBY启动
由于选择MDS_Control默认设置“1”,读写设备总在监测MDS是否进场。如果变量Ready=True,Error=false,一旦MDS进入读/写窗口,ASM456上PRE灯点亮,MOBY 状态字的MDS_Present 被置位,此时,通过Command_Start 即可启动MOBY命令。
如果Ready= false,则请检查是否在OB100中被初始化,或检查FC45是否在OB1中被周期性执行。
如果Error= True,则应检查错误原因。错误信息会被分别记录在error_MOBY,error_FC,或error_BUS。具体信息请参阅下文或FC45手册*五章。
5.2 MOBY命令
使用UDT 20可以生成命令DB块,本例命令DB块为DB47,通过修改命令DB块的命令参数和命令地址,可以实现对RF360T的读、写、初始化等操作。
5.2.1 写操作
例如,将数据从DB48的DBB0到DBB9共5个字节写到MDS地址0开始的地址。
命令格式:表3
命令
[hex] 子命令
[hex] 长度
[dec] MDS地址
[hex] DB块
[dec] DB块起始地址[dec]
1 0 10 0 48 0
表3:写命令
命令DB块。如图20
图20:DB47
5.2.2 读操作
例如,将数据从MDS地址0开始的10个字节读到DB50的DBB0到DBB9。
命令格式,如表4
命令
[hex] 子命令
[hex] 长度
[dec] MDS地址
[hex] DB块
[dec] DB块起始地址
[dec]
2 0 10 0 50 0
表4:读命令
命令DB块,如图21
图21:DB47
5.2.3 初始化MDS
例如,将RF360T初始化为0,RF360T为8Kbyte ,地址空间为2000H。
命令格式,如表5
命令
[hex] 子命令
[hex] 长度
[dec] MDS地址
[hex] DB块
[dec] DB块起始地址
[dec]
3 0 -- 2000 -- --
表5:初始化命令
命令DB块,如图22
图22:DB47
6、错误诊断
MOBY的操作,一般有以下两种故障类型。
6.1 导致CPU停机的故障
ASM456有故障,而OB86没有下载到CPU;
ASM456有故障,OB122没有编程并下载到CPU;
如果只有当执行FC45时,CPU才故障停机,可能的故障原因有:
? 参数DB或参数DB的起始地址不正确;
? 命令DB不正确;
? 数据DB不存在或空间不够大。
6.2 error=1故障
当MOBY某通道的error 被置位,会有如下三类错误:
6.2.1 Error_MOBY
这类故障是由ASM和MOBY读/写设备引发的,主要有以下两种
? ASM456和MOBY读/写设备以及MDS之间的通信故障;
? ASM456不能执行命令。
此类故障发生时,ASM上ERR灯闪烁。
6.2.2 Error_FC
FC45故障,主要原因是参数DB或命令DB中参数赋值错误。
6.2.3 Error_BUS
此类错误是发生在PROFIBUS DP传输层的故障,通过PROFIBUS的系统诊断软件(如PROFIBUS tracer)或BT200可得到详细的信息。FC45手册5.2给出的故障代码是SFC58/59的RET_VAL参数的一些值,具体信息请参考书册《S7-300/400系统和标准函数》或STEP7在线帮助。
说明
本条目将描述如何在TIA博途中对分布式 I/O模块进行固件升级?.
需求
模块已经进行DC 24V供电。
PC/SIMATIC Field PG通过TIA博途软件连接到子网.
在线连接到I/O模块.
I/O模块支持固件升级.
在线连接到I/O模块
以下步骤描述了如何在线连接I/O模块.
通过菜单“在线->可获取的节点”打开如下的对话框.
图. 01
将PG/PC接口选择至相应的选项,例如"PN/IE",之后将选择需要接入的I/O模块子网,软件将扫描所获取的节点清单,通过点击“显示”进行在线连接按钮
图 02
I/O模块将显示在“在线->网卡”项目树中,双击“在线&诊断”命令进入模块的在线诊断界面.
图03
进行固件升级
在“功能”表框中选择“固件升级”选项。
在“固件装载”分览中点击“浏览”按钮选择需要升级的固件文件.
图. 04
选择相应的固件后,表单将显示该固件所支持的模块类型.
使能“固件升级后自动运行”选项,该选项意味着I/O模块将在固件升级完成后转入工作模式
点击”固件升级“按钮,模块将进行固件升级。.
注意
在固件升级过程中或升级完毕后的启动期间,模块将不在正常工作模式
S7300电源模板
6ES7307-1BA00-0AA0
6ES7307-1EA00-0AA0
6ES7307-1KA01-0AA0
CPU
6ES7312-1AE13-0AB0
6ES7312-5BE03-0AB0
6ES7313-5BF03-0AB0
6ES7313-6BF03-0AB0
6ES7313-6CF03-0AB0
6ES7314-1AG13-0AB0
6ES7314-6BG03-0AB0
6ES7314-6CG03-0AB0
6ES7315-2AG10-0AB0
6ES7315-2EH13-0AB0
6ES7317-2AJ10-0AB0
6ES7317-2EK13-0AB0
6ES7318-3EL00-0AB0
内存卡
6ES7 953-8LF20-0AA0
6ES7 953-8LG11-0AA0
6ES7 953-8LJ20-0AA0
6ES7 953-8LL20-0AA0
6ES7 953-8LM20-0AA0
6ES7 953-8LP20-0AA0
开关量模板
6ES7 321-1BH02-0AA0
6ES7 321-1BH10-0AA0
6ES7 321-1BH50-0AA0
6ES7 321-1BL00-0AA0
6ES7 321-7BH01-0AB0
6ES7 321-1EL00-0AA0
6ES7 321-1FF01-0AA0
6ES7 321-1FF10-0AA0
6ES7 321-1FH00-0AA0
6ES7 321-1CH00-0AA0
6ES7 321-1CH20-0AA0
6ES7 322-1BH01-0AA0
6ES7 322-1BH10-0AA0
6ES7 322-1CF00-0AA0
6ES7 322-8BF00-0AB0
6ES7 322-5GH00-0AB0
6ES7 322-1BL00-0AA0
6ES7 322-1FL00-0AA0
6ES7 322-1BF01-0AA0
6ES7 322-1FF01-0AA0
6ES7 322-5FF00-0AB0
6ES7 322-1HF01-0AA0
6ES7 322-1HF10-0AA0
6ES7 322-1HH01-0AA0
6ES7 322-5HF00-0AB0
6ES7 322-1FH00-0AA0
6ES7 323-1BH01-0AA0
6ES7 323-1BL00-0AA0
模拟量模板
6ES7 331-7KF02-0AB0
6ES7 331-7KB02-0AB0
6ES7 331-7NF00-0AB0
6ES7 331-7NF10-0AB0
6ES7 331-7HF01-0AB0
6ES7 331-1KF01-0AB0
6ES7 331-7PF01-0AB0
6ES7 331-7PF11-0AB0
6ES7 332-5HD01-0AB0
6ES7 332-5HB01-0AB0
6ES7 332-5HF00-0AB0
6ES7 332-7ND02-0AB0
6ES7 334-0KE00-0AB0
6ES7 334-0CE01-0AA0
说明:
按照如下操作将‘SIMODRIVE传感器等时线’同步 PROFIBUS DP 编码器(订货号:6FX2001-5xPxx)连接到 Technology CPU:
配置同步 PROFIBUS DP 编码器。
设置同步 PROFIBUS DP 编码器参数。
将硬件配置载入 CPU。
组态同步 PROFIBUS DP 编码器的技术对象。
创建 technology DB。
插入 FB MC_ExternalEncoder。
1. 配置同步 PROFIBUS DP 编码器
从硬件目录中将编码器插入项目中。编码器位于 “PROFIBUS_DP >SIMODRIVE” (图 1)。
使用拖放将编码器加入到 PROFIBUS 主站系统。
现在将报文 81 插入编码器站的槽 1。
图 1:硬件目录中的编码器选择
2. 设置同步 PROFIBUS DP 编码器的参数
右击从站(图1:上面部分)并选择“Object Properties”。 进入“Parameter Assignment”栏并且设置相关值。这些值的设置参考条目号 18769911 。
图2:“List of usable encoders”中的参数分配例子 (条目号: 18769911)
图3:分配DP从站参数
然后,在 “Isochrone Mode”页面,使能选项“Synchronize DP slave to constant DP bus cycle time”,然后设置读取和输出过程值的相关时间值。使用编码器的默认值可以设置以下的 Ti/To 值,例如:
Ti min : = 0.125 ms
To min : = 0.375 ms
关于等时线模式和 Ti/To 主题的更多信息参见条目号:15218045中的手册“SIMATIC等时线模式”中的 2.8.3 章节和手册“SIMODRIVE 传感器**值编码器 PROFIBUS DP”(操作员说明), *10 章,出版于 03/04,订货号为6SN 1197-0AB10 - 0YP3。
1多功能测量表SENTRON PAC3200简介
SENTRON PAC3200电能监视设备可精确提供系统特性,包括电压和电流较大值、较小值和平均值,功率值、频率、功率因数、对称性、逻辑计算、负载趋势、谐波和总谐波失真等。SENTRON PAC3200可检测 50 多个基本数值,具有 10个电能计数器,可用于全面负载检测。它们的测量准确度满足电能计数器标准所规定的较高要求。PAC3200带有MODBUS RTU-RS485接口、PROFIBUS-DP接口和MODBUS TCP 接口,可以很方便将PAC3200的数据上传到PLC中进行处理,也可以上传到HMI中进行数据分析、处理及归档。对于西门子系统可以轻松地将PAC3200集成到上位自动化系统中,例如,集成到西门子 SIMATIC PCS 7 powerrate 和SIMATIC WinCC powerrate 软件包中。
2 PAC3200通信接口对比
PAC3200可以通过MODBUS RTU RS485接口、MODBUS TCP 以太网接口以及现场总线PROFIBUS-DP接口与PLC和HMI通信。下面分别以连接S7-300 PLC为例,在通信性能、连接的个数、编程方面进行对比:
1) 通信性能:PROFIBUS-DP使用令牌方式由主站依次访问从站,是实时现场总线,通信响应快,通信的响应时间应考虑PAC3200数据的刷新时间(自身刷新时间可能较PROFIBUS-DP刷新时间慢);如果选择以太网MODBUS TCP 通信,由于不是实时网络,通信性能次之,通信的响应时间也应考虑PAC3200数据的刷新时间(自身刷新时间可能较以太网刷新时间慢);使用RS485 MODBUS RTU通信,由于基于串口,通信性能不能与以太网与PROFIBUS-DP相比较。
2) 连接个数:使用PROFIBUS-DP,基于主站的性能,较多可以连接126个站点;以太网MODBUS TCP 通信,基于CP的连接个数,通常16个;使用RS485 MODBUS RTU,可以连接一个网段,典型值31个站点。
3) 编程:使用PROFIBUS-DP,不需要编写通信程序;使用以太网MODBUS TCP 通信,需要编写发送接收通信程序;使用RS485 MODBUS RTU通信,需要编写从站轮询程序,比较麻烦,如果没有购买MODBUS RTU的驱动,还需要编写通信程序。
4) 价格:PROFIBUS-DP与RS485 MODBUS RTU通信需要购买选件网卡,而PAC3200本身集成以太网接口,支持MODBUS TCP 通信。
下面将介绍PAC3200的MODBUS TCP 通信。
3 MODBUS TCP 通信报文
MODBUS TCP 使MODBUS RTU协议运行于以太网,MODBUS TCP使用TCP/IP和以太网在站点间传送MODBUS报文,MODBUS TCP结合了以太网物理网络和网络标准TCP/IP以及以MODBUS作为应用协议标准的数据表示方法。MODBUS TCP通信报文被封装于以太网TCP/IP数据包中。与传统的串口方式,MODBUS TCP插入一个标准的MODBUS报文到TCP报文中,不再带有数据校验和地址,如图1所示:
图1 MODBUS TCP报文
由于使用以太网TCP/IP数据链路层的校验机制而保证了数据的完整性,MODBUS TCP 报文中不再带有数据校验”CHECKSUM”,原有报文中的“ADDRESS”也被“UNIT ID”替代而加在MODBUS应用协议报文头中。
MODBUS TCP服务器使用502端口与客户端进行通信。
S7-300 与PAC3200 之间进行MODBUS TCP 通信时,MODBUS应为协议的报文头赋值如下:
byte 0: transaction identifier (高字节) – 为0
byte 1:transaction identifier(低字节) - 为0
byte 2:protocol identifier(高字节) = 0
byte 3:protocol identifier (低字节) = 0
byte 4:length field (高字节) = 0 (因为所有的报文小于256)
byte 5:length field (低字节) = 后面跟随的字节数
byte 6:unit identifier -原从站地址,这里为0
byte 7:MODBUS 功能码,通过功能码发送通信命令
byte 8 ~:后续的字节数与功能码相关
4 PAC3200支持的MODBUS TCP 功能码
在MODBUS TCP 的报文中,通过使用功能码请求通信伙伴的数据,如对内部寄存器的读写操作、读输入寄存器、写输出寄存器等。不同的操作使用不同的功能码,如FC1、2、3、4、5、6、7、15、16等,PAC3200支持FC2、FC3、FC4、FC6、FC16,在下面将介绍PAC3200这些功能码的报文格式:
FC2 读输入的位信号:
请求:
Byte 0: 功能码,2
Byte 1-2: 开始的位地址
Byte 3-4:位的个数 (1-2000)
响应:
Byte 0: 返回的功能码 2
Byte 1: 返回的字节个数 (B=(位的个数+7)/8)
Byte 2-(B+1): 位信号的值 (较低有效位是**个位信号)
FC3 读多个寄存器信号:
请求:
Byte 0: 功能码,3
Byte 1-2: 寄存器开始地址
Byte 3-4: 寄存器的个数 (1-125)
响应:
Byte 0: 返回的功能码 3
Byte 1: 返回的字节个数 (B=2倍寄存器数)
Byte 2-(B+1): 寄存器的值
FC4 读输入寄存器信号:
请求:
Byte 0: 功能码,4
Byte 1-2: 输入寄存器开始地址
Byte 3-4: 输入寄存器的个数 (1-125)
响应:
Byte 0: 返回的功能码 4
Byte 1: 返回的字节个数 (B=2倍输入寄存器数)
Byte 2-(B+1): 输入寄存器的值
FC6 写单个寄存器信号:
请求:
Byte 0: 功能码,6
Byte 1-2: 寄存器地址
Byte 3-4: 寄存器的值
响应:
Byte 0: 返回的功能码 6
Byte 1-2: 寄存器地址
Byte 3-4: 寄存器的值
FC16 写多个寄存器信号:
请求:
Byte 0: 功能码,10(HEX)
Byte 1-2: 寄存器开始地址
Byte 3-4: 寄存器的个数 (1-100)
Byte 5:字节的个数 (B=2倍输入寄存器数)
Byte 6-(B+5) 预置的寄存器值
响应:
Byte 0: 返回的功能码 10(HEX)
Byte 1-2: 寄存器开始地址
Byte 3-4: 寄存器个数
注:
一个寄存器为两个字节,上面介绍的首地址为MODBUS TCP 报文中PDU的首地址。
5 PAC3200的地址区
使用不同的功能码可以对PAC3200不同的地址区进行操作:
测量变量:例如电压、电流值、输入、输出等变量可以使用FC3和FC4,FC3与FC4功能相
同,两者都可以读。
状态参数:例如限制值0、1、2以及输入0、输出0等位信号,使用FC2可以读出这些信
号。
设定参数:例如连接类型、是否使用电压变送器电压、一次侧电压等,可以使用FC3、FC4进
行读操作,两者功能相同,使用FC16进行写操作。
通信参数:例如IP地址、网关等参数,可以使用FC3、FC4进
行读操作,两者功能相同,使用FC16进行写操作。
信息参数:例如产品的序列号等,可以使用FC3、FC4进行读操作,两者功能相同,使用
FC16进行写操作。
命令参数:例如复位较大值、较小值以及能量计数器等参数,使用FC6进行写操作。
6 PAC3200侧的配置
使用PAC3200集成的以太网通信接口进行MODBUS TCP通信,需要对接口进行设置,步骤如下:
1):使用F4(Menu) > "SETTINGS> COMMUNICATION 进入如下界面如图2所示:
图2 通信界面
2):使用F4(Edit)键对选中的条目进行编辑,在通信界面中设定MODBUS TCP 通信的IP地
址、子网掩码及网关,在“PROTOCOL”中选择“TCP”后退出,PAC3200侧设置完成。
7 PLC侧设置
在PLC侧作的设置是为了与PAC3200建立TCP连接,以S7-300为例,步骤如下:
1):在SIMATIC Manager中创建一个S7-300的项目,本例中项目名为MODBUS_TCP。
2):插入一个S7-300站,从硬件目录中插入CP343-1,本例为CP343-1IT,如图3所示:
图3 插入以太网模块
3):双击CP343-1的PN IO 槽,配置IP地址、子网掩码,CP343-1的IP地址必须与
PAC3200在一个网段中,否则需要配置路由器地址,如图4所示:
图4 设置CP地址参数
4):在硬件界面中点击“Options”->“configure network”进入网络连接界面,如图5所示:
图5 网络配置界面
5):点击CPU,出现网络连接表,双击表中任一空格,选择通信连接类型,由于CP343-1与
PAC3200使用以太网TCP/IP的通信方式,所以连接类型选择为“TCP CONNECTION”,如
图6所示:
西门子6SN1123-1AB00-0BA1
图6 选择连接类型
6):确认选择的连接类型后,进入属性界面,如图7所示:
图7 连接属性-通用信息栏
选择“Active connection establishment”选项,表示在通信连接初始化中由CP343-1主动发出连接请求。同样在“Block parameters”中自动生成通信参数,用于编程时的参数赋值。
7):在连接属性的地址栏中,配置通信双方的地址,如图8所示:
图8 连接属性-地址栏
在IP地址中填写PAC3200的地址,本例中为192.168.1.13,在PORT端口号中定义本方的端口号,为了不与网络中固定功能的端口号冲突,西门子PLC通常以2000开始,PAC3200的端口号由MODBUS TCP规定固定为502。
8):配置完成后,存盘编译,将整个硬件配置下载到PLC中,使用网线连接PAC3200后,在
网络配置界面中使用菜单命令:“PLC”->“activate connection status”,查看实际连 接状态,如图9所示:
图9 查看连接状态
如果连接状态显示成功(符号为绿色的三角),可以进行下一步工作,如果出现红方块,表示没有建立连接,需要检查通信双方的设置及网线,通常的情况下,PAC3200设置完成后需要重新上电启动。
如果需要与多个设备进行MODBUS TCP通信,则需要建立多个通信连接,PLC侧的端口号不能相同,可以为2000、2001、2002等,但是连接的不同MODBUS TCP的服务器端口号必须为502,只是IP地址不同。
8 PLC编程
在前面的章节中已经介绍了MODBUS TCP的报文格式,在PLC侧的通信程序就必须符合这种报文格式。下面以例子的方式介绍通信程序的编写。
在OB1中调用用于CP343-1的通信函数FC5和FC6,如果是S7-400,需要在S7-400的函数库中调用FC50和FC60,如图10所示:
图10 调用通信函数
通信函数FC5的参数含义:
ACT :沿触发信号。
ID :参考本地CPU连接表中的块参数(图7)。
LADDR :参考本地CPU连接表中的块参数(图7)。
SEND : 发送区,较大通信数据为8K字节。
LEN : 实际发送数据长度。
DONE :每次发送成功,产生一个上升沿。
ERROR :错误位。
STATUS:通信状态字。
通信函数FC6的参数含义:
ID :参考本地CPU连接表中的块参数。
LADDR :参考本地CPU连接表中的块参数。
RECV : 接收区。接收区应大于等于发送区。
NDR : 每次接收到新数据,产生一个上升沿。
ERROR :错误位。
STATUS:通信状态字。
LEN : 实际接收数据长度。
如何实现MODBUS TCP通信,可以通过例子进行说明,例如读出PAC3200设备的IP地址,通过PAC3200的手册可以知道,IP地址为通信参数,偏移地址(开始地址)为63001,占用两个寄存器,上面已经介绍通信参数的读取可以使用功能码FC3或FC4读出,MODBUS TCP 的报文头(参考图1)BMAP部分占用7个字节,协议数据单元(PDU)部分占用5个字节,那么通过通信函数FC5一共发送12个字节,本例中数据发送区为DB1.DBB0~DB1.DBB11,然后将请求的内容分别赋值到DB1.DBB0~DB1.DBB11中,请求报文格式如下:
DB1,DBB0=0 transaction identifier (高字节) – 为0
DB1,DBB1=0 transaction identifier(低字节) - 为0
DB1,DBB2=0 protocol identifier(高字节) = 0
DB1,DBB3=0 protocol identifier (低字节) = 0
DB1,DBB4=0 length field (高字节) = 0 (因为所有的报文小于256)
DB1,DBB5=6 后面跟随的字节数
DB1,DBB6=7 unit identifier -原从站地址,这里为任意值
M**
DB1,DBB7=4 MODBUS 功能码
DB1,DBB8= F6(HEX)输入寄存器开始地址(高字节)
DB1,DBB9=19 (HEX) 输入寄存器开始地址(低字节)
DB1,DBB10=0 输入寄存器的个数(高字节)
DB1,DBB11=2 输入寄存器的个数(低字节)
PDU
DB1.DBB0~DB1.DBB11经过赋值请求信息后,例子中M0.5每个上升沿将发送一次请求,如果通信成功,通过FC6将接收到PAC3200的返回信息,返回信息为13个字节,放入到数据接收区DB2.DBB0~DB2.DBB12中,接收报文的格式如下:
DB2,DBB0=0 transaction identifier (高字节) – 为0
DB2,DBB1=0 transaction identifier(低字节) - 为0
DB2,DBB2=0 protocol identifier(高字节) = 0
DB2,DBB3=0 protocol identifier (低字节) = 0
DB2,DBB4=0 length field (高字节) = 0 (因为所有的报文小于256)
DB2,DBB5=7 后面跟随的字节数
DB2,DBB6=7 unit identifier -返回值
MBAP
DB2,DBB7=4 MODBUS 功能码
DB2,DBB8= 4 返回的字节个数
DB2,DBB9= C0(HEX) ,192(DEC)**个寄存器值(高字节)
DB2,DBB10=A8(HEX),168(DEC) **个寄存器值(低字节)
DB2,DBB11=1 *二个寄存器值(高字节)
DB2,DBB12=D(HEX),13(DEC)*二个寄存器值(低字节)
PDU
9 通信注意事项
有几个问题需要注意:
1) 接收区是一个环形缓存区,接收区的长度一定与PAC3200发送的数据相等,如果接收区大于实际发送的数据,每次接收数据时都以填充的方式进入接收区,造成数据混乱。
2) 如果连接多个PAC3200,除需要建立多个连接,还需要调用多对FC5和FC6。
3) 如果需要读出多个数据,但是相互地址间隔大,**过125个,例如偏移地址为1、201、501、833等,这样需要发送多次数据请求,比较麻烦,可以购买MODBUS TCP通信函数块,这样将比较简单,产品信息可以参考西门子网站 Entry ID:22660304订货信息,由于此产品为其他部门编写,可能A&D热线不负责解答。
订货号
PROFIBUS网络部件:
网卡及电缆
6ES7 972-0CB20-0XA0
6ES7 972-0CB35-0XA0
6ES7 972-0CC35-0XA0
6GK1 561-1AA01
6GK1 551-2AA00
6GK1 561-3AA01
6GK1 561-3FA00
6GK1 561-4AA01
6GK1 561-4FA00
6GK1562-1AA00
6GK1571-1AA00
6FX800开头
6XV1 840-2AH10
6FC5210-0DF22-2AA0
6XV1 830-0PBH30
6XV1 830-0EH10
6XV1 830-3EH10
6XV1 830-0AH10
6XV1 820-5AH10
6XV1 820-5BH50
6XV1 820-5BT10
6GK1 901-0DA20-0AA0
6ES7 901-0BF00-0AA0
6ES7 901-1BF00-0XA0
链接模板
6GK1 415-2AA01
6GK1 415-0AA01
6ES7 158-0AD01-0XA0
6ES7 157-0AC83-0XA0
6ES7 157-0AD82-0XA0
6XV1 830-5EH10
6XV1 830-5FH10
6ES7 195-7HF80-0XA0
6GK1 905-0AA00
6GK1 905-0AD00
6GK1 905-0AB10
6GK1 905-0AC00
总线连接器
6GK1 905-6AA00
6ES7 972-0BA50-0XA0
6ES7 972-0BB50-0XA0
6ES7 972-0BA12-0XA0
6ES7 972-0BB12-0XA0
6ES7 972-0BA41-0XA0
6ES7 972-0BB41-0XA0
6GK1 500-0EA02