关键词:PROFINET CMDC2PN9 PLC 网关
Abstract: In this paper, we use the protocol converter (or bridge, gateway) to realize the convenient and efficient data exchange between the SIEMENS S7-1200/S7-1500 PLC and the communication interface with the MODBUS transducer and instrument.
Key words: PROFINET CMDxA9 PLC Gateway
【中图分类号】TP62+2【文献标识码】B 文章编号1606-5123(2017)07-0000-00
1 引言
西门子推出的S7-1200/S7-1500 PLC正逐步取代S7-300/S7-400 PLC,并在工业现场大量应用。随之带来了没有DP接口的PLC怎么用PROFINET和众多的带RS-485通讯接口仪器仪表、变频器、电动阀门交换数据问题。毕竟RS-485成本低廉、开发简单,仪器仪表、电动设备厂家都乐于选用它。CMDC2PN9就是为此应运而生。
从通讯协议上来讲,它既能作为MODBUS RTU/ASIC设备主站设备,访问多达32个从站设备,也能作为从站被其他MODBUS主站例如DCS访问,还能满足自由通讯的透明传输,只需要在网络组态时设置对应的用户参数即可。
本文介绍3个应用例程:都是利用TIA Portal软件配置挂接在S7-1200/S 7-1500系统中的CMDC2PN9网桥与变频器通讯/电工仪表采集电网状态数据/电动阀门控制/DCS与PLC通讯,供相似应用人员参考借鉴。
2 基于S7-1200的变频器通讯
2.1 硬件系统
某工厂改造,使用CMDC2PN9控制2台不同厂家的变频器,完成启动、停止、正反转和变频器频率给定。
(1)西门子S7-1200 PLC:1套
(2)宝米勒变频器MC200G:1台
(3)森蓝变频器SB60+/61+:1台;
(4)RS-485通讯双绞线、PROFINET 交换机和带屏蔽的网线。这2台变频器均支持Modbus rtu通讯。
CMDC2PN9:PROFINET/Modbus 通讯协议转换器(以下统称网关)。
2.2 创建工程
西门子S7-1200 PLC V4.0以上是带有以太网接口的小型PLC并支持通过PROFINET网络连接其他IO设备,适合程序容量较小的简易工程应用,本例其实也可以选择性能更好的S7-1500 PLC。
进入TIA Portal主界面,创建一个工程应用:
“供料改造”
同样也可以创建一个工程应用:“供料改造”
2.3 组态设备
按照下图“新手上路”提示,顺序完成相应的操作。
如果对本软件比较熟悉,还是建议直接进入“项目视图”中,内容齐全、非常直观。
接下来我们点击进入“组态设备”:
按前所述,选择其中一个控制器为CPU 1212C DC/DC/DC:
选择“6ES7 212-1AE40-0XB0”,版本V40。
点击右下角的添加按钮,将你选择的控制器添加到设备内,同时自动进入到“项目视图”内。也可以在任意时候双击左面“设备组态”菜单进入到控制器的“设备视图”中,见下图。
在此图中,能看到设备概览里控制器的详细数据,也需要设置一些关键参数才能让控制器与网关正常工作。
先点击下面的“常规”栏目下的“PROFINET接口”菜单,展开“以太网地址”,这里需要指定本控制器所处于哪个网段的IP地址:
本例选择常规192.168.0.xxx网段,一般习惯把192.168.0.1作为路由器IP地址,在调试指示器时可以借用我们办公以太网络而无需另外布线。
也可以根据自己的网段自行选择其他网段。
至于设备名称,采用自动生成PROFINET设备名称就好了。
在“接口连接到”“子网络:”中添加一个PN/IE_1网络。
其他设置如果没有特殊需要,就采用默认的其他设置即可。
下面将配置连接在PROFINET的I/O设备:CMDC2PN9网桥,而配置它首先得安装设备描述文件:GSDML。
2.4 安装GSDML文件
我们在工具栏“选项”中点击“安装设备描述文件”GSDML菜单就进入安装界面:
选择存放GSDML的文件夹,就可以导入文件了。
为了正确、完整的安装GSDML文件,存放该文件的文件夹内必须有设备GSDML文件和用于标识该设备的BMP图形文件,见下图:
一旦选择存放GSDML的文件夹,就会弹出如下界面:
这里会显示我们已经安装过该文件和尚未安装的文件。
选择一个需要安装的GSDML文件点击安装后就开始自动安装,安装完所有的文件后退出该界面,由于需要一定时间更新,请稍微等待自动退出。
2.5 组态CMDC2PN9
下面我们把PROFINET I/O设备……网桥组态到控制器的网络中:
在硬件目录下找到PROFINET IO,点开后在I/O栏目里找到刚刚安装JIETONG PN下的CMDCx中的CMDC2PN9。
注意:下面的信息/版本选项要选择对应版本号,便于正确安装不同时期的设备。
用双击或拖拽的方式把该设备添加到网络视图中,右键选择“未分配”处,选择并加入到PLC_1PROFINET接口_1,双击CMDC2PN9 进入网络设置界面。
研究两个变频器通讯规约得知:
宝米勒变频器
功能说明 |
地址定义Hex |
数据意义说明 |
R/W 特性 |
通讯控制命令地址 |
0x2000 |
0x001:正转运行 |
W/R |
0x002:反转运行 |
|||
0x003:停机 |
|||
变频器状态地址 |
0x2001 |
0x0001:正转运行中 |
R
|
0x0002:反转运行中 |
|||
0x0003:变频器待机中 |
|||
0x0004:故障中 |
|||
通讯频率地址 |
0x2100 |
通讯设定值范围(0.0~400.0) |
W/R |
PID给定地址 |
0x2101 |
PID给定地址 |
W/R |
PID反馈地址 |
0x2102 |
PID反馈地址 |
W/R |
宝米勒变频器运行状态在0x2000-0x2001地址均可读,故全部采集进入PLC内,其中:
0x2000是写入的运行命令;
0x2001是变频器真实的运行状态,供程序逻辑处理使用;
控制变频器正反转和停机控制输出在0x2000地址一个字内,这就需要使用一条指令写控制输出。
而变频器频率给定地址在0x2100-2102共3个字,本例子没有引入PID控制,所以只需写0x2100一条指令满足变频器运行频率控制。
以上控制需要3条通讯指令计2个IW读,2个QW单写。
深蓝变频器
名称 |
Modbus地址(Hex) |
更改属性 |
说明 |
主控制字 |
3200H |
W |
Bit0:1上升沿运行,0停止 |
Bit1:0为自由停车 |
|||
Bit2~Bit6没有使用 |
|||
Bit7:上升沿进行故障复位 |
|||
Bit8:正向点动 |
|||
Bit9~Bit10:未使用 |
|||
Bit11:频率方向 |
|||
Bit12~Bit15:未使用 |
|||
通讯给定频率 |
3201H |
W |
单位0.01Hz非负数 |
主状态字 |
3210H |
R |
状态含义与3200H相同 |
运行频率 |
3211H |
R |
状态含义与3201H 相同 |
深蓝变频器的变频器运行状态为0x3210-0x3211连续分布,一条指令就可以采集全部状态;
控制变频器启动和停止以及频率给定连续分布在0x3200-0x3201,本例只需要控制0x3200变频器起停正反转和0x3201频率给定连续的2个写寄存器地址,所以完成基本控制只需要2条指令,节约了宝贵的通讯时间。
统计上述寄存器使用,共需要2+2=4个字的IW,2+2=4个QW。
考虑到今后扩展,设置插槽内8个字I和Q寄存器数量即可:
当然也可以点击重新分配允许范围的地址。
接下来分配网桥的IP地址和设备名称:
IP地址和控制器的IP地址段应该一致,地址范围可以在1-255中选择,这里分配网桥为230,即192.168.0.230。
最后,简单使用自动生成PROFINET设备名称,本例为CMDC2PN9。如有更多的同类设备,会自动生成下划线序列CMDC2PN9_1……。
下图I地址“1……5”表单通讯状态,在稍后的通讯故障中将详细介绍。
Q地址“1”本例没有使用。
2.6 设置用户参数
根据2类变频器的通讯规约,下面将逐一描述2类变频器通讯组态步骤:
(1)宝米勒变频器通讯设置:
根据工艺需要,宝米勒变频器只需完成启动、停机、频率给定和采集其变频器状态即可,在宝米勒变频器上根据功能表设置:
01#地址,通讯速率为9600bps、8位数据位、偶校验,起始停止位均为1。
在TIA Portal“网络视图”中双击CMDC2PN9图标,进入“设备视图”。
双击网口展现目录信息,再选中插槽1,将出现“模块参数”项目。
点击“模块参数”将展现用户参数设置页面:
将模块参数中的通讯参数设置为与宝米勒通讯相同。需要指出的是:Modbus Mode选择“RTU Master alway2 Read/Write”,这个模式是CMDC2PN9作为Modbus主站循环读写从站地址为01#的宝米勒变频器,从而与PROFINET控制器同步交换数据。因不同变频器接收Modbus指令后应答时间不同,所以Modbus主站设备需要一定的等待时间,这里选择200ms,在实际调试中修改不出现超时报警为好。
设置第一条通讯指令:第01表单完成03#命令采集本变频器的运行状态0x2000~0x2001。
设置第二条通讯指令:第02个表单完成向变频器2000H写控制数据,这条指令完成变频器启动和停止。
设置第三条通讯指令:第03个表单向变频器2100H写运行频率,根据张力传感器反馈信息,控制器输出变频器运行频率,简单调整变频器软启动张力,防止运料皮带受冲击损坏。
这3条指令都是向1#Modbus站 宝米勒变频器交换数据。
(2)深蓝变频器通讯设置:
同样,根据工艺需要,深蓝变频器也只需完成启动、停机、频率给定和采集其变频器状态即可:
在深蓝变频器上根据功能表设置:02#地址,通讯速率为9600bps、8位数据位、偶校验,起始停止位均为1。
设置第四条通讯指令:第04表单完成03#命令采集深蓝变频器的运行状态和运行频率0x3210~0x3211这种状态能在程序中作为逻辑处理和联锁控制使用。
由上述描述可见,作为02# Modbus设备的深蓝变频器,采用了2条指令,就高效的完成连续获取变频器状态参数和控制变频器起停、正反转及调速功能。
2.7 控制器编程
根据工艺系统需要,控制器添加合适的组织块满足编程需要,还可以根据运算的需要添加数据块等其他块。
比如PLC控制器采集到的皮带张力与变频器运行频率比较,从而让变频器转速进行进行适当调节,缓慢输出合适频率控制值。
根据用户参数表单对应PLC控制器的寄存器地址见下表示意:
寄存器 |
说明 |
寄存器 |
说明 |
IW6 |
宝米勒变频器运行状态 |
QW2 |
宝米勒变频器运行控制 |
IW8 |
宝米勒变频器运行频率 |
QW4 |
宝米勒变频器频率给定 |
IW10 |
深蓝变频器运行状态 |
QW6 |
深蓝变频器运行控制 |
IW12 |
深蓝变频器运行频率 |
QW8 |
深蓝变频器频率给定 |
下图是CMDC2PN9与变频器读写关系示意:
具体工艺实现这里不再赘述。
2.8 在线设置
为了关联CMDC2PN9与控制器,初次使用时,还需要分配它的名称和IP地址,便于和刚刚在控制器配置的GSDML相关联。连接好同一网络中的CMDC2PN9并送电,等待模块完成初始化设备后,在“项目树”中的“在线访问”菜单内找到你的计算机网卡点开:双击“更新可访问的设备”等待扫描结果。
在项目树栏目下搜索到高亮的转角指示器特定的MAC地址,并双击“在线访问”进入诊断分配界面:
展开“功能”下的“分配IP地址”,按前面控制器分配网桥的IP地址填写192.168.0.230,然后再点按“分配IP地址”按钮:界面下端显示“参数已经成功传输”。
接下来将分配设备名称,我们依然按前面控制器配置相同分配网桥名称为CMDC2PN9,并点按“分配名称”按钮。成功传输名称参数后,网桥将自动连接到网络并接收PROFINET网络数据。无论是在线访问还是设备在线监视下,都能观察到CMDC2PN9设备已经正常工作并且无任何警告提示(没有红色叉提示)。如分配名称后设备并没有正常工作,可能PLC没有清除掉原有的配置数据,需要重新初始化到出厂设置值后断电5分钟,重新下载新配置。
至此,本网桥与变频器的配置即告完毕!
3 DCS系统与电厂辅助系统交换数据
电厂的DCS控制着锅炉、汽轮机、发电机系统,同时也需要零散的辅助系统信息进入管理系统,这就需要获取这些分散的小系统内部分数据信息。
3.1 化水程控系统
主设备包括西门子S7-1500 PLC控制系统:含沉淀池/过滤控制、补给水控制、凝结水控制、污水处理等多套PLC,多台S7-1200和S7-1500通过PROFINET网络连接,相互交换数据,我们把CMDC2PN9网关安排在污水处理系统PLC上。DCS通过连接PROFINET协议转换网关的CMDC2PN9获取化水控制系统相关数据。
3.2 创建工程和安装GSD文件
按前述2.2、2.3节方法创建工程,并按2.4节安装CMDC2PN9的GSDML文件。
3.3 组态CMDC2PN9
按前述2.5节所示组态,与前述不同之处是选择Modbus工作模式为Modbus RTU Slave,DCS作为Modbus RTU主站,访问众多Modbus 从站之一的CMDC2PN9。
CMDC2PN9作为从站,根据DCS系统安排,从站地址被分配为16#地址,该地址在第一个表单地址中设置。
(2)设置从站通讯寄存器:配置120个字的写寄存器和24字的读寄存器,共计288字节交换数据。
如系统输出数据不能满足要求,还可以继续增加CMDC2PN9从站……
到此为止,DCS与PROFINET已经可以相互交换数据了,原理如下:
l 上传的信息在与网关连接的PLC里集中按顺序打包进入QW寄存器区,因为QW区是数据会自动写入网关模块的40001开始到40120寄存器内,方便主站随时用03#命令读入;
l 需要写入的QW寄存器内包括了化水处理关键的工艺参数和设备信息,包括水位、流量、温度等模拟量信息和设备工作状态信息。工作状态信息包括了阀门的开闭、设备的运行、停止等离散状态。对于离散状态信息,我们在PLC里事先应将其合成打包在连续的控制字内,方便高效传输。
l DCS系统传入PLC控制系统的协调命令,一般情况下是比较少的,这里暂时留下接口,方便以后改造升级备用。DCS用06#命令或16#命令向网关40256~40281写入控制数据,即使用绝对地址0100H开始的写寄存器地址区,对应于十进制的40256开始的24个字作为DCS命令写入区,并在IW寄存器里连续获得。
l 本例中:
读写PROFINET内的信息与模块作为从站的寄存器地址对应关系如下图所示;
在某些特定场合下DCS也可以采用01#命令读0000x系列线圈寄存器,用15#命令写多个0000x寄存器。则需要设置0000x系列线圈寄存器与PROFINET网络控制器内的QW、IW指定寄存器地址,用户参数的第一表单低位地址就是设定QW对应起始地址,高位设定IW起始地址。
下面的设置就是QWxx+0~ QWxx+230(74H=116D个字)和IWyy+0~IWyy+38(14H=20D共计20个字),对应例子是QW26~QW256为DCS读取的40001~40116寄存器,IW68~IW106对应DCS写入的40257~40277。
因为指定了0000x系列线圈寄存器地址,所以:
QWxx+232~ QWxx+238(74H=116D起始地址开始的4个字),对应例子是QW258~QW264对应DCS读取00001~00064;
IWyy+40~IWyy+47(14H=20D起始地址开始的4个字),对应例子是DCS写入00001~00064对应IW108~IW114,包含4个字共计64个位状态信息。
详细的设定可参考《CMDC2PN9 Profinet/Modbus网桥用户手册》。
4 Profinet与非标准通讯设备交换数据
由于厂家原因可能设计的通讯规约与标准开放式通讯规约不同,或者采用另外的非标准Modbus通讯方式,往往较难使用市场现有Profinet网桥。CMDC2PN9增加了透明自由通讯方式与Profinet控制器交换数据,能够在控制器内通过简单的编程满足数据交换,下面举例说明。为了方便理解,我们还是使用Modbus 03#、16#指令模拟非标设备通讯规约,便于验证准确性。以下的步骤已经包括了建立工程、安装GSDML文件和组态必要设备步骤。
4.1 设置网桥工作模式
选择自由通讯模式如下:
l 第一区域:这是透明自由通讯控制发送区(红色字体和框);
模块规定在此模式下,控制输出的bit0为透明自由通讯发送控制位,如下例所描述。
QB6.0=0,停止发送通讯协议;
QB6.0=1,发送通讯协议;
l 第二区域:这是透明自由通讯特征码发送区(浅蓝色字示意);
该区域有2个字节的特征码,必须随通讯协议一起传输到QB寄存器。
见下图所示为QB28、QB29。
QB28:这是本组(本次发送)协议的总字节数;
QB29:这是本组(本次发送)协议返回总字节数;
深蓝色字示意这是透明自由通讯协议发送范围;
该区域为用户通过RS-485/RS-422/RS-232端口发送的通讯帧数据。
从控制器插槽4内的Q地址起始地址+2就是该通讯协议发送区。
l 第三区域:是返回数据接收区,在此区得到外部设备返回的信息(需要进行简单计算)。
4.3 编程实例:
l 03#命令读设备数据:
以下用03# Modbus指令模拟读取外部设备数据:
发送总长度 |
接收总长度 |
通讯协议区 |
|||||||
QB28 |
QB29 |
QB30 |
QB31 |
QB32 |
QB33 |
QB34 |
QB35 |
QB36 |
QB37 |
16#08 |
16#09 |
16#01 |
16#03 |
16#00 |
16#00 |
16#00 |
16#02 |
16#C4 |
16#0B |
地址 |
命令 |
起始地址 |
读字数目 |
CRC校验 |
例子中QB28是起始输出地址,也就是本帧发送“通讯协议区”的总长度,即8个字节;
QB29 是即将收到的应答数据总长度。
这样做的目的很简单,因为各个厂家的通讯协议起始码、结束码和校验可能没有,也可能完全不同,而你向外部设备发送的字节数长度和可能接收的长度是可以预先知道的,所以本模块采用这种方式是最简单通讯控制方式,如果接收的长度不确定则不在本模块可用范围内。
“通讯协议区”从QB30开始,共计8个字节,表示要从外部设备获取40001开始的2个字的数据。
其他非Modbus协议按自己通讯规约将特征码和获取数据信息写入QB区发送区内,并把你将要发送的字节数写入QB28,将获得应答数据总长度也写入QB29,本例有CRC校验,即将QB30~QB35内数据进行CRC校验计算,并将其存入最后2个字节内,就做好发送准备了。
其他厂家可能有通讯校验、也可能没有校验(一般不做推荐),也可能带有结束符,或者其他校验方式,比如SUM求和校验、XOR异或校验、LCR等校验方式,照上述步骤执行即可。
一旦QB6被置1,QB30~QB37内的数据通过UART串口传输到外部设备。
外部设备应答的数据帧也将被传输到IB68开始的9个字节输入区,比如:
IB68 |
IB69 |
IB70 |
IB71 |
IB72 |
IB73 |
IB74 |
IB75 |
IB76 |
16#01 |
16#03 |
16#04 |
16#04 |
16#D2 |
16#04 |
16#D3 |
16#18 |
16#67 |
这里IB71、IB72里就是40002的数据,IB73、IB74就是40001的数据。
在控制器内,你可能需要做的是2件事:
a.把IB68~IB74里的数据先进行CRC字计算,计算结果按字节拆分为CRCL比较IB75、CRCH比较IB76,如果完全相等,说明本次接收的数据完全正确,否则本次数据将被忽略丢弃。
b.将IB71、IB72合成为一个字存储在另外的接收字DBW2.100内,即表示DBW2.100为40002内数据,将IB73、IB74合成为一个字存储在另外的接收字DBW2.102内,即表示DBW2.102为40001内数据。
其他寄存器也按类似方式依次读入并计算出接收数据。
l 16#命令写外部设备:
例如发送16#命令通讯帧数据长度13个字节数被写入QB28,接收返回数据帧长度8个字节写入QB29里。
通讯协议区发送的数据帧从QB30开始到QB42共计13个字节,包括了向40002、40001写入十六进制04D2和04D3数据。
项目 符号 |
发送 总长度 |
接收 总长度 |
通讯协议区 |
||||||||||||
QB |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
HEX |
0D |
08 |
01 |
10 |
00 |
00 |
00 |
02 |
04 |
04 |
D2 |
04 |
D3 |
11 |
FB |
QB37、QB38表示40002数据、QB39、QB40表示40001的数据,同样将QB30~QB40的数据进行CRC计算,并拆分为CRCL=QB41、CRCH=QB42,做好发送准备。
一旦QB6置“1”,网关即向外部设备依次发送QB30~QB42里的数据。
外部设备一旦接收到正确数据,一般会返回一个接收到正确数据通讯帧,让网关知道发送的数据已经正确传输,数据帧区的数据如下:
IB68 |
IB69 |
IB70 |
IB71 |
IB72 |
IB73 |
IB74 |
IB75 |
16#01 |
16#10 |
16#00 |
16#00 |
16#00 |
16#02 |
16#41 |
16#C8 |
否则发送控制程序根据需要是否需要再次发送。
参照以上例子,几乎都能满足各个厂家自定的通讯协议与PROFINET控制器交换数据。
需要注意的是:
由于自由通讯协议众多,无法获得超时故障提示,所以判断和发送数据、解析数据和合成数据都需要在控制器内完成,好在控制器功能强大,完成这些简单的计算也十分方便,这就需要编程人员来实现了。
4.4 特别说明
CMDC2PN9主芯片采用西门子推荐的ERTEC200P专用芯片,兼容ARM9,功能多、内存容量大,上电初始化时间稍长。在正常使用中Mobuds通讯超时诊断故障发生会导致BUF灯灭,中途拔掉通讯插头重新插入或者诊断恢复正常会再次点亮。
5 结束语
CMDC2PN9 PROFINET网关产品接口上集成了双PROFINET网口,普通使用无需增加以太网交换机,功能上也集成了Modbus RTU /ASIC 主从站模式和透明传输协议,能胜任大多数现场场合下的设备与设备之间交换数据。具有灵活、简单、低成本,具有一定的推广应用价值!
参考文献
[1]Siemens.SIMATIC.S7-1200使用手册.
[2]Siemens.S7-1200 入门指南S.
[3]Siemens.SIMATIC TIA Portal STEP 7 Basic V10.5.
[4]德阳市捷通科技.CMDC2PN9 Profinet/Modbus网桥用户手册.
共0条 [查看全部] 网友评论