西门子冗余plc如何选择?

2018年12月17日11:36:58 发表评论 1,150 阅读

西门子哪些型号的PLC可以做冗余?

S7-300可以做软冗余,S7-400H可以做冗余,最新出了S7-1500的冗余系统。

WinCC构架很多,看你要什么样的冗余,可以参看《WinCC V7.4 典型架构选型指南》

如果要构建冗余系统,请参看《如何构建一个 WinCC 冗余项目》

S7-300的软冗余举例说明:

S7-300的软冗余要求从站必须通过有源底板连接。从站的所有模块需要确保没有故障,即SF灯不亮尤其是通讯模块。

S7-300的软冗余分为三种方式:MPI ,DP ,以太网。三种冗余方式的通讯速度不同,以太网通讯速度最快,DP通讯速度次之,MPI通讯速度最慢。不同的通讯方式选择的功能块不相同,具体功能块的选择如图1所示:

s7-300数据包

s7-400数据包

下面以以太网冗余为例,简述冗余过程:

  1. 插入两个S7-300的站,SIMATIC 300(A) 和 SIMATIC 300(B)。
  2. 设置A站的IP地址为192.168.0.10 ,B站的地址为192.168.0.20 。
  3. 在A站的块中插入OB100、OB35、OB86组织块,并对其中的OB100、OB35、OB86进行编程。
  4. 在组态网络中新建ISO-ON-TCP链接。要求ID号要大于2且主从站的ID号一致。

 

上图为最终效果图,下图为过程

主站设置如左图所示步骤,从站不需要再次设定但需要在从站中给该从站的通讯ID号与主站相同且大于2。,图例设置为0007

S7-300软冗余

S7-300软冗余

  1. 在OB100中我们调用FC100’SWR_START’进行软冗余的初始化。

FC100’SWR_START的各个引脚的注释请参照最后的附录

调用FC100的位置如图

西门子冗余plc如何选择?-5

S7-300软冗余

S7-300软冗余

图中1表示为当前CPU的站号,A站写A,B站写B。

S7-300软冗余

S7-300软冗余

图中2填写对方的地址,MPI_ADR表示对方的MPI地址,LADDR表示CP通讯处理器组态的硬件地址,采用PROFIBUS或Ethernet网络进行数据同步时才有意义,默认值为256不需要更改。VERB_ID表示网络链接的ID号,在NETPRO窗口中组态的链接的ID值,如FDL Connection、ISO Connection或S7 Connection。数值要大于2。DP_MASTER_SYS_ID表示DP主站网络的ID号,你可以在硬件组态中双击链接ET200M从站紫色的PROFIBUS主从网络,获取该ID值 。

图中3填写输出模块(DO..AO)总的起始地址和最终地址。地址必须是连续的,中间不能含有没有定义的地址。

双击

图中4填写冗余的M、计时器背景数据块、DB数据块的起始地址和长度。数据必须是连续的,且冗余的DB块的数据不得小于2个字节。

图中5填写ET200从站的起始地址和个数。

表中需要注意的事项;

  1. 冗余的DB块中数据必须大于2个字节,否则冗余会报错。
  2. 模块的输出DO,AO必须为连续的地址,冗余初始化中的输出中不能有无效地址。
  3. 上表中的DB1,DB2,DB3数据块不需要人工创建,下载程序时CPU会自动创建数据块。
  4. 更改OB100中的FC100程序时,需要清空CPU 内的所有程序。清空的方式为在线删除块内的所有数据。
  5. 非冗余的DB块需要手动创建,数据必须大于2个字节。
  6. 一般我们建议您将您的非冗余程序段编写在OB1当中,而将冗余程序段编写在OB35当中,我们这里使用的是OB35的默认属性,即每100ms中断触发一次,您可以根据实际的需要在CPU属性中修改中断的时间间隔。

在OB35里调用FB 101 ‘SWR_ZYK’ 功能块,FB101块中封装了冗余功能的程序段,实现冗余功能。调用FB101时,你可以在线地读出RETURN_VAL参数的数值,如果为0,说明冗余链接正常。如果为8015说明数据同步的连接不成功,这是一个常见的错误,原因可能是CP342-5之间的FDL链接建立的不正确或物理链路不通,或者是FC100的VERB_ID参数与NETPRO中的链接ID号不一致。当执行”SWR_START”程序块时,系统分配这些数据区,不能用S7的定时器和计数器,只能使用IEC标准的定时器和计数器。你可以在软冗余手册的第三章第9节找到对应的诊断信息。OB35中的程序可以分为4个部分。

西门子冗余plc如何选择?-9

  1. 在OB86中调用诊断功能块FC 102 ‘SWR_DIAG’,当系统出现PROFIBUS总线错误时,该功能块返回诊断信息,供FB101使用。

西门子冗余plc如何选择?-10

  1. 插入FB101内部调用的FB104,FC5、FC6等功能块,将所有的程序块下载到PLC当中。

备注

A.在使用MPI进行冗余通讯时不需要建立任何通讯连接,只需将通讯线接好即可。

在使用以太网进行通讯时需要建立通讯连接。注意,图中的ID号不能小于2且主站和备站的ID号相同。通讯时选择的通讯方式如图中的Type。组态完成后需要将主动连接的CPU进行下载。

 

B.在使用DP进行冗余通讯时需要建立通讯连接,连接类型选择FDL。通讯连接建立后需要将主动连接的站的CPU进行下载。

S7-300软冗余时的wincc连接设置(以太网通讯)

  1. 建立变量,按照正常非冗余的方式建立。
  2. 建立冗余连接。打开任意一个编辑画面,在动态向导中的系统函数中选择创建冗余连接如图

西门子冗余plc如何选择?-12

选择主用的连接如图,选择的是SXYC。 西门子冗余plc如何选择?-13

设置备用的连接如图

西门子冗余plc如何选择?-14

  1. 在全局脚本中添加脚本

MSRTCreateMsg( ServiceID, &MsgCreate, &Error );

}

}

}

if ( ServiceID != 0 )

{ MSRTStopMsgService ( ServiceID, &Error );

}

if ( GetTagDWordWait( "@SXYC@ConnectionState" ) == 0 )

{ SetTagDWord( "@SXYC@ForceConnectionState", 1 );

}

else

{ if ( GetTagBitWait( "SWR_wincc.Standby" ) == TRUE )

{ SetTagDWord( "@SXYC@ForceConnectionState", 0 );

}

}

return 1;

只需要紫色的C语言这其中的几个变量"@SXYC@ConnectionState", "@SXYC@ForceConnectionState"这两个变量在前边说到的@SW变量组里边有。其中的SW是连接的名字,需要对应上自己前边建的连接的名字。"SWR_wincc.Standby"这个变量就是FB101冗余程序块的背景数据块中的变量DB***.DBX9.1,这个变量是手动建立的,名称也可以自己设定, ***是在PLC冗余程序中调用冗余程序时自己设定的背景数据块号,我用的是DB5,所以我这里变量就连接DB5.DBX9.1这个数据位。

附录

FC100各引脚的含义

参数名 数据类型 描述 例子
AG_KENNUNG 字符型 SIMATIC 300(A) 站应当填 ‘A’

SIMATIC 300(B) 站应当填 ‘B’

‘A’
DB_WORK_NO 数据块名称 软冗余功能实现所需要使用的内部数据块,用户不用生成该块,也无需读写其中的数据 DB1
DB_SEND_NO 数据块名称 存放发送数据所使用的内部数据块,A→B或B→A,用户不用生成该块,也无需读写其中的数据 DB2
DB_RCV_NO 数据块名称 存放接收数据所使用的内部数据块,AB或BA,用户不用生成该块,也无需读写其中的数据 DB3
MPI_ADR 整型 对方站的MPI站地址,进行MPI网络数据同步时才有意义 4
LADDR 整型 CP通讯处理器组态的硬件地址,采用PROFIBUS或Ethernet网络进行数据同步时才有意义 256
VERB_ID 整型 网络链接的ID号,在NETPRO窗口中组态的链接的ID值,如FDL Connection、ISO Connection或S7 Connection。 7
DP_MASTER_SYS_ID 整型 DP主站网络的ID号,你可以在硬件组态中双击链接ET200M从站紫色的PROFIBUS主从网络,获取该ID值(Master System No)。 1
DB_COM_NO 数据块名称 FB101所用使用的背景数据块,需用户手动生成该块,并可以读取状态字DBW8和控制字DBW10,获取系统信息或手动切换主备系统 DB5
DP-KOMMUN 整型 确定链接ET200从站的DP通讯口类型:

1. 使用CPU上集成DP通讯口链接ET200从站;

2. 使用CP通讯卡上的DP通讯口链接ET200从站

1
ADR_MODUS 整型 CPU分配I/O地址的矩阵的增量,不同CPU的地址矩阵不同:

1, 对于基本地址 0, 1, 2, 3 ...

4, 对于基本地址 0, 4, 8, 12 ...

1
PAA_FIRST 整数 冗余的ET200M站第一个输出字节的地址 88
PAA_LAST 整型 ET200M站最后一个输出字节的地址,PAA_FIRST 到

PAA_LAST的字节范围必须是连续定义的。

107
MB_NO 整型 冗余的M数据区的起始字节地址 0
MB_LEN 整型 冗余的M数据区的字节个数,如MB_NO为20,MB_LEN为30,则MB20-MB49这个数据段为冗余数据区; 4
IEC_NO 整型 冗余的IEC定时器、IEC计数器所使用的起始背景数据块 111
IEC_LEN 整型 冗余的IEC定时器、IEC计数器所使用的背景数据块的个数,如IEC_NO设为111,IEC_LEN设为7,则DB111-DB117为存放冗余同步定时器、计数器的背景数据去 0
DB_NO 整型 冗余的起始数据 8
DB_NO_LEN 整型 冗余的数据块个数,如DB_NO为8,DB_NO_LEN为2,则DB8-DB9为冗余的数据块 2
SLAVE_NO 整型 ET200从站的最低站地址 3
SLAVE_LEN 整型 ET200从站的个数,如SLAVE_NO为3,SLAVE_LEN为2,则该软冗余系统连接了站号为3,4的两个ET200从站,站号必须连续。 2
SLAVE_DISTANCE 整型 确定所链接ET200从站上IM153-2模块的PROFIBUS DP站地址:

1. 2块IM153-2模块的DP口使用相同的站地址;

2. 2块IM153-2模块的DP口的站地址为n和n+1;

1
DB_A_B_NO 数据块名称 通过数据同步链路(Redundency Link),A、B站之间还能进行一些非冗余数据通讯,即2个PLC之间的普通数据交换,该参数即定义从A站到B站,交换的非冗余数据块。 DB11
DB_A_B_NO_LEN WORD A站到B站,非冗余数据块中交换的字节数,如DB_A_B_NO设为DB11,DB_A_B_NO_LEN设为. W#16#64,则A站的DB11.DBB0-DB11.DBB99 被复制到B站的DB11.DBB0-DB11.DBB99,因为W#16#64代表16进制64,即一共复制100个字节数据。 W#16#64
DB_B_A_NO 数据块名称 该参数即定义从B站到A站,交换的非冗余数据块。 DB12
DB_B_A_NO_LEN WORD B站到A站,非冗余数据块中交换的字节数,如DB_B_A_NO设为DB12,DB_B_A_NO_LEN设为. W#16#64,则B站的DB12.DBB0-DB12.DBB99 被复制到A站的DB12.DBB0-DB12.DBB99,因为W#16#64代表16进制64,即一共复制100个字节数据。 W#16#64
RETURN_VAL WORD 调用FC100的返回值,为0代表正常,其他返回值您可以在错误代码表中找到对应的错误原因。 MW2
EXT_INFO WORD FC100中内部调用的一些功能块所返回的错误代码 MW4
weinxin
plc入门知识问答
每一个PLC工程师都应该关注的微信公众账号,只需输入您的问题,就会有答案

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: