工程技术人员论文
主题:实现ABB系统AC800M与西门子S7-200PLC的通讯
撰写人:王庆
日期:2012.8.15.
章节
一、引言。
1、1 开发设计通讯的原因。
1、2开发设计通讯的理论基础。
1.2.1)简单的I/0:
1.2.2)模拟量
二、硬件安装与设置。
1、硬件导入。
1.1)识别文件导入选项。
1.2)文件导入图。
2、S7-300硬件组态
3、S7-300对EM277分配电址
3.1)数据类型、数据通道图
3.2)选择数据类型、数据通道
3.3)地址分配图示。
3.4)地址分配图示。
4、PROFIBUS地址设定。
三、利用S7-300作主站(模拟ABB系统)程序应用开发举例。
1、S7-300侧编程:
2、S7-200侧编程:S7-200发送数据,控制S7-300
3、S7-300侧编程:S7-200发送数据,控制S7-300
4、S7-200侧编程:S7-300发送数据控制S7-200
4.1)建立对应关系。
4.2)S7-200侧编程。
4.3)在线测试过程
4.4)S7-200侧编程
5、简要总结:
四、西门子S7-200与ABB/AC800M的通讯开发。
引言
1、从站设置。
2、开关量设置。
2、字模拟量设置。
3、双字模拟量设置
4、程序设计。
5、ABB/ Compact Control Builder AC 800M的设置。
实现ABB系统AC800M与西门子S7-200PLC的通讯
摘要:
论文主要对变量V区的数据处理技术进行了论述,对不同系统间的通讯过程实现、兼容性的技术处理作了详细论述。通过一个具体的案例,通过实例编辑画面,言简意赅的演示自动化过程中不同系统通讯的具体实现,从而为大家在该方面的技术提供案例支持。本文引用了S7300作为主站(模拟ABB系统),建立模型,S7-200作为从站。
一、引言。
1、1 开发设计通讯的原因。
在16万控制系统当中,根据我方提出的方案,在7套离心机控制系统中,进口的安德里茨离心机(这是我方自行设计的系统程序)、进口韦斯法尼亚离心机(5号离心机,由德国人开发的系统),由于其都为单独设计的系统,且都采用西门子PLC控制系统,都满足PROFIBUS-DP通讯协议规范,这与我公司在施工中的ABB的DCS系统采用的通讯协议相同,理论上应该可以进行通讯,但在技术环节实施上需要处理。最初我们并不清楚两个完全不同的系统之间的兼容性如何。不同系统的兼容性,直接决定了系统之间能否实现自由数据的交换,从而实现把现场运行系统的数据可以通过通讯的方式,直接开发设计到整个DCS 控制系统里边。两台离心机中,韦斯法尼亚由于个别原因,暂时无法调试通讯。安德利茨的离心机控制系统,是由我个人自行设计开发调试的系统,所以,我们先调试了安德里茨离心机(1号离心机)的通讯。
在2008年设计安德里茨的控制系统时,我在设计理念上,前瞻性的设计了PROFIBUS-DP 的通讯协议预留接口,即EM277通讯组件。该硬件的基本功能,作为支持PROFIBUS协议的接口,可实现不同电器设备间以总线PROFIBUS形式进行通讯。范围可包含全部支持PROFIBUS的仪表、带PROFIBUS通讯的电器、不同厂家型号支持PROFIBUS的控制系统。
1、2开发设计通讯的理论基础。
首先,我查阅了相关资料。对EM277模拟量数据交换进行了解,EM277具备以下特点。
1.2.1)简单的I/0:
例如在S7300中组态了32字节入/32字节出:
如S7200的VB0-VB31为输出缓冲区,VB32-VB63为输入缓冲区。
S7200的输入可写入上述输入缓冲区中;
S7200的输出(即S7-300的写入)可由输出缓冲区来接收;
1.2.2)模拟量:
如同简单的I/0一样,只不过是简单的数字量I/0为二进制位BOOL型,而模拟量一般如为整型,占一字(2个字节WORD),转换为实数型为两个字(32个二进制位DWORD,即四个VB)。3.弄清S7-300与S7-200的DP通信数据结构及相互关系之后,自己要编
S7-200有32个开关量输入输入,2个模入(整型)要送入S7-300:
在S7-200中32个开关量输入可存入VB32,VB33,VB34,VB35中;
在S7-200中2个模拟量输入可分别存入VW36,VW38中,即VB36,VB37,VB38,VB39中;
二、硬件安装与设置(S7-300模拟ABB系统作为主站)。
然后我在实际开发过程中,利用S7-200与S7-300的模型,设立主从站,进行了测试设计,实现模拟通讯。这是因为,无论西门子系列PLC之间,还是西门子与ABB系统之间,统一按PROFIBUS开放式总线协议进行通讯,这样,在通讯协议上,可以建立联系。模拟西门子系统主从站之间的测试,主要按以下几个步骤进行。
1、硬件导入。
1.1)识别文件导入选项。
首先需要对EM277的GSD文件进行导入。(说明:GSD文件,GSD文件也称为
设备描述文件(General Station Data),是一种进行电器硬件识别的驱动程序。工
业上大量的仪表、电器设备、控制系统都提供GSD文件。)在导入GSD文件后,
西门子S7300PLC才能识别到EM277,也才能在硬件组态中引用EM277。方法,
选中STEP7 的硬件组态窗口中的菜单Option Install new GSD,如下图:
1.2)文件导入图。
在西门子官方网站下载EM277的GSD文件,放置E盘根目录下。搜索导入
2、S7-300硬件组态,如下图所示:
导入完毕后,我们会在硬件组态右侧的工具栏里找到EM277的组态信息。
3、S7-300对EM277分配电址:
3.1)数据类型、数据通道图。
导入GSD 文件后,在右侧的设备选择列表PROFIBUS DP中就会出现
一个PLC的标识栏,在SIMATIC中找到EM277 从站,EM277
PROFIBUS DP。该表显示EM277支持的数据类型、数据通道。如下图:
数据类型、数据通道图
3.2)选择数据类型、数据通道
根据我们需要的通讯字节数,选择一种通讯方式,我在测试程序中选择了32字
节入/32字节出的方式,选择完毕,就是第4页图显示的地址分配内容。选择过
程如下图:
3.3)地址分配图示。
点击EM277,在下方显示地址分配栏,如下图:
S7-300的PQB输出首地址是Q4.0,范围是Q4.0~Q35.0,对应VB1132~VB1163
S7-300的PIB输入首地址是I12.0,范围是I12.0~I43.0,对应VB1164~VB1195 对应关系
PQB0---------VB1132 ~PQB31----------VB1163
PIB0---------VB1164 ~PIB31----------VB1195
4、PROFIBUS地址设定。
双击上图的EM277 图标,出现“属性-DP 从站”设定对话框,点击“PROFIBUS…”键,设定EM277的地址(设定的地址须和EM277 的拨码开关一致)。在这里我选择的是拨码开关1,
对应地址应为1,如下图:
三、程序应用开发举例。这里我做了几个简单的程序组态过程,用来验证通讯程序的可行性。
1、S7-300编程;将QB0传送到QB10(QB10是写到S7-200通讯区地址VB1132数据)
2、S7-200编程:S7-200发送数据,控制S7-300(图1、图2见第20页)
下图是S7-200传送数据演示图:I0.2是从S7-200/ VB1164传送至IB0的数据,
图1
3、S7-300编程:S7-200发送数据,控制S7-300
下图是S7300通过通讯,接收数据建立I0.2~I12.2的自然对应关系,使S7300输出Q0.0的过程;
图1;I0.0是S7-200/VB1164传送至IB0的信号传输过来通知的,其对应的S7-300的输入点是I12.2 通过EM277 DP传送的结果。I0.0点亮,就是I12.2 点亮,从而使S7300 Q0.0输出
图1
图2,I0.1是从S7-200/VB1164传送至IB0的数据。S7-300 /Q0.1是S7-200 I0.1信号传输过来控制的
4、S7-200编程:S7-300发送数据控制S7-200
下边的图1、图2、图3都是演示的这个过程。
4.1)建立对应关系。将QB0传送到VB1132(VB1132是写到S7-300通讯区地址IB10数据)VB1164传送到MB10是将接收的S7-300 QB10数据传送到MB10供程序调用。
图1
4.2)S7-200编程。在SBR_0里边,编一段程序,这个程序,把通过VB1132从S7-300发送过来的数据,启动S7-200里边的开关量输出。如下图:
图2 4.3)在线测试过程:
主控制站PLC S7-300发送数据,在这里强制M8.7为ON作为I输入端,输出Q4.7,如下图:
S7-300编程:S7300/PQB0传送至S7-200/VB1132数据,使IB0与S7300/PQB0建立对应关系。
图3 上图中,M8.7在测试中强制为ON,输出的Q4.7(首地址Q4.0)为PQB0的下标分量,对应关系为PQB0~VB1132,在S7-200一侧,因为QB0送入VB1132,而VB1132又送入MB10,其下标(共8个)在S7300主站Q4.7亮时,通过建立的通讯对应关系直接传送至S7-200,即MB10.7,从而使西门子S7200的
4.4)S7-200编程
S7-200 Q0.7是S7-300 Q4.7信号传输过来控制的,通过EM277 DP传送的结果。
通过以上的输入输出的通讯测试,从S7-300主站强制M8.7,从站就会输出Q4.7,而从站输入I0.0,就会在主站输出Q0.0
5、简要总结:
在S7300与S7200通讯的建立过程中,EM277的地址1132....1195就是S7_300中的PIB0—PIB31和PQB0—PQB31。因为对应S7-200中变量的偏移量是1132,所以
PQB0—PQB31对应S7-200中的VB1132—VB1163;PIB0—PIB31对应S7-200中的
VB1164—VB1195。所以对PQB0—PIB31和PIB0—PQB31进行操作时实际就是同时对S7-200中的VB1132—VB1163和VB1164—VB1195进行操作的,从而控制S7-200的PIB、PQB,达到接收和发送数据控制从站的效果。
四、西门子S7-200与ABB/AC800M的通讯开发(参考西门子S7-300操作实例)。
引言:在16万控制系统与ABB的DCS系统通讯调试过程中,我们参考西门子S7300与S7200的主站、从站的通讯设置,主从站的偏移变量对应关系,主从站的编程,
尤其是主、从站点间通讯的实现过程,受到启示。不同的是ABB与西门子是两
个完全不同公司的产品系统。下面是整个开发测试过程。
1、从站设置。
主要进行S7-200从站的设置,这些设置由ABB主站作为识别的起始地址。
设定地址,由于安德利茨离心机的程序设计中,我设计了3个回路的PID,V区变量分别占用为VB0、VB370、VB616,通过查看S7200程序中的交叉地址,发现在前边V区全部占用,或间断占用,只能选择1030区域至1199区域进行变量的采集。我们选择VB1132作为首地址,如下图:
所以在S7300的DP slave组态中,设定Offset为1132,如下图
2、开关量设置。我这里需要由20多个开关量输入点DI,为了扩展需要,我把点数设计到32点,这就需要占用4个字节,即VB1132、VB113
3、VB113
4、VB1135,对应的主站变量分别为I0.0-I0.7,,I1.0-I1.7,I2.0-I2.7,,I3.0-I3.7。
2、字模拟量设置。有6个VW的模拟量,占用字节为12个,分别为VB1136-VB1147,对应的S7-300的变量分别为VW1136、VW1138、VW1140、VW1142、VW1144、VW1146。
3、双字模拟量设置。由2个VD的模拟量,占用8个字节,分别为VB1148-VB1155,对应的S7-300的变量分别为VD1148、VD1152
4、程序设计。以上关系建立好后,要在S7200里边做客户端的V区程序段,V区的程序遵循以下原则。如下图:图4.4.1、图4.4.2、图4.4.3
VB1132----------------PQB0
……….
VB1163--------------- PQB31
VB1164----------------PIW0
……….
VB1195--------------- PIW31
程序编译如下图:
图4.4.1
图4.4.2
图4.4.3说明:以上S7-200的编程,分别应用了MB,VW,VD,代表的意思分别是字节位、字,双字,占用的V区变量分别是1个字节位,2个字节,4个字节
小结:S7-200P LC,作为从站编程完毕,就建立了与主站一对一的数据关系,从而可实现数据的通讯采集。在主站那边,要把以上的信号进行分解或合并,并建立与之
对应的数据表,这样顺利建立起了数据对应关系,从而为数据采集与通讯创造条
件。
5、ABB/ Compact Control Builder AC 800M的设置。
在S7-200从站设计完毕到主站的V区程序后,在ABB的DCS里边按以下方式设置好对应关系,就可以很方便的读取S7-200的数据了。从而成功实现了在不同系统之间建立通讯关系的实例。
如下图ABB编程平台软件所示:
ABB软件编程平台
里边的对应关系,如下图所示
在实际操作中,我的数值,只需要把这些变量中的分量取出来,可以随意使用。
一个GSD文件的例子如下:
#Pr0fibus DP ;DP设备的GSD文件均以此关键存在GSD Revision=1;GSD文件版本
VendorName="Meglev" ;设备制造商
Model Name="DP Slave" ;产品名称,产品版本
Revision="Version 01" ;产品版本号(可选) RevisionNtmber=01 ;产品识别号
IdemNumber=0x01 ;协议类型(表示DP)
ProtocoI Ident=0 ;站类型(0表示从站)
StationType=0 ;不支持FMS.纯DP从站
FMS Supp=0 ;硬件版本
Hardware Realease="HW1.0" ;软件版本
Soltware Realease="SWl.0" ;支持9.6kbps波特率
9.6 supp=1 ;支持19.2kbps波特率
19.2 supp=l ;9.6kbps时最大延迟时间
MaxTsdr 9.6=60 ;19.2kbps时最大延迟时间MaxTsdrl9.2=60 ;不提供RTS信号
RepeaterCtrl sig=0 ;不提供24V电压
24VPins=0 ;采用的解决方案
Implementation Type="SPC3" ;不支持锁定模式
FreezeMode Supp=0 ;不支持同步模式
SyncMode Supp=0 ;支持自动波特率检测
AutoBaud Supp=l ;不支持改变从站地址
Set SlaveAdd Supp=0 ;故障安全模式类型
Fail Safe=0 ;最大用户参数数据长度(0-237) MaxUser PrmDataLen=0 ;用户参数长度
Usel prmDataLen=0 ;最小从站响应循环间隔
Min Slave Imervall=22 ;是否为模块站
Modular Station=l ;从站最大模块数
MaxModule=l ;最大输入数据长度
MaxInput Len=8 ;最大输出数据长度
MaxOutput Len=8 ;最大数据的长度(输入输出之和) MaxData Len=16 ;最大诊断数据长度(6~244)Slave MaxDiagData Len=6 ;从站类型
Family=3 ;模块1,输入输出各4字节
Module=“Modulel”0x23,0x13;;模块2.输入输出各8字节EndModule
Module="Module2"0x27,0x17;
EndModule