西门子哪些型号的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数据包
下面以以太网冗余为例,简述冗余过程:
插入两个s7-300的站,simatic 300(a) 和 simatic 300(b)。
设置a站的ip地址为192.168.0.10 ,b站的地址为192.168.0.20 。
在a站的块中插入ob100、ob35、ob86组织块,并对其中的ob100、ob35、ob86进行编程。
在组态网络中新建iso-on-tcp链接。要求id号要大于2且主从站的id号一致。
上图为终效果图,下图为过程
主站设置如左图所示步骤,从站不需要再次设定但需要在从站中给该从站的通讯id号与主站相同且大于2。,图例设置为0007
s7-300软冗余
在ob100中我们调用fc100’swr_start’进行软冗余的初始化。
fc100’swr_start的各个引脚的注释请参照后的附录
调用fc100的位置如图
s7-300软冗余
图中1表示为当前cpu的站号,a站写a,b站写b。
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从站的起始地址和个数。
表中需要注意的事项;
冗余的db块中数据必须大于2个字节,否则冗余会报错。
模块的输出do,ao必须为连续的地址,冗余初始化中的输出中不能有无效地址。
上表中的db1,db2,db3数据块不需要人工创建,下载程序时cpu会自动创建数据块。
更改ob100中的fc100程序时,需要清空cpu 内的所有程序。清空的方式为在线删除块内的所有数据。
非冗余的db块需要手动创建,数据必须大于2个字节。
一般我们建议您将您的非冗余程序段编写在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个部分。
在ob86中调用诊断功能块fc 102 ‘swr_diag’,当系统出现profibus总线错误时,该功能块返回诊断信息,供fb101使用。
插入fb101内部调用的fb104,fc5、fc6等功能块,将所有的程序块下载到plc当中。
备注
a.在使用mpi进行冗余通讯时不需要建立任何通讯连接,只需将通讯线接好即可。
在使用以太网进行通讯时需要建立通讯连接。注意,图中的id号不能小于2且主站和备站的id号相同。通讯时选择的通讯方式如图中的type。组态完成后需要将主动连接的cpu进行下载。
b.在使用dp进行冗余通讯时需要建立通讯连接,连接类型选择fdl。通讯连接建立后需要将主动连接的站的cpu进行下载。
s7-300软冗余时的wincc连接设置(以太网通讯)
建立变量,按照正常非冗余的方式建立。
建立冗余连接。打开任意一个编辑画面,在动态向导中的系统函数中选择创建冗余连接如图
,
选择主用的连接如图,选择的是sxyc。
设置备用的连接如图
在全局脚本中添加脚本
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
数据块名称
存放接收数据所使用的内部数据块,ab或ba,用户不用生成该块,也无需读写其中的数据
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