网络组态。系统的网络结构如下:
图8
以上网络结构中包括了4条链路:
§ 用于上位机编程和监控的MPI链路;
§ A站与ET200从站Master Line PROFIBUS链路;
§ B站与ET200从站Reserve Line PROFIBUS链路;
§ A站和B站之间进行数据同步的Synchronization Line PROFIBUS链路。
您可以通过点击图中的状态读取按钮,获取当前FDL链接的状态,上图的左下角显示当前在线读取FDL的状态为OK。
5. 在A站的Block中插入OB1(主循环程序块)、OB35(定时中断组织块)、OB100(暖启动调用程序块)、OB80(在
主系统与备用系统切换时间超时时,调用该块)、OB82 (DP-Slave ET200站上的IM153-2模块出错报警,调用该功能块)、
OB83 (DP从站的接口模块与主站链接断开或链接重新建立时调用该块)、OB85(程序运行出错或DP从站连接失败调用
该块)、OB86(主从站通讯出错调用该块)、OB87(通讯失败调用该块)、OB122(外围设备访问出错调用该块)、
OB121等组织块,并对其中的OB100、OB35、OB86进行编程。
6. 在OB100中我们调用FC 100 ‘SWR_START’进行软冗余的初始化,有几个参数需要特别注意,LADDR应当和CP342-5
的硬件地址相一致,例子程序为256,VERB_ID必须和你在NETPRO中创建的FDL链路的ID号一致,例子程序为1,
DB_COM_NO为系统中未使用的数据块,建议仍采用DB5。
如下表格给出了FC100功能块参数的说明和例子,供您编程参考:
|
参数名
|
数据类型
|
描述
|
例子
|
|
AG_KENNUNG
|
字符型
|
A站应当填 ‘A’
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网络数据同步时才有意义
|
2
|
|
LADDR
|
整型
|
CP通讯处理器组态的硬件地址,采用PROFIBUS或Ethernet网络进行数据同步时才有意义
|
256
|
|
VERB_ID
|
整型
|
网络链接的ID号,在NETPRO窗口中组态的链接的ID值,如FDL Connection、ISO Connection或S7 Connection。
|
1
|
|
DP_MASTER_SYS_ID
|
整型
|
DP主站网络的ID号,你可以在NETPRO窗口中双击链接ET200M从站紫色的PROFIBUS主从网络,获取该ID值。
|
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, if base addresses 0, 1, 2, 3 ...
4, if base addresses 0, 4, 8, 12 ...
|
1
|
|
PAA_FIRST
|
整数
|
ET200M站第一个输出字节的地址
|
0
|
|
PAA_LAST
|
整型
|
ET200M站最后一个输出字节的地址,PAA_FIRST 到
PAA_LAST的字节范围必须是ET200M站上连续定义的。
|
4
|
|
MB_NO
|
整型
|
冗余的M数据区的起始字节地址
|
20
|
|
MB_LEN
|
整型
|
冗余的M数据区的字节个数,如MB_NO为20,MB_LEN为30,则MB20-MB49这个数据段为冗余数据区;
|
30
|
|
IEC_NO
|
整型
|
冗余的IEC定时器、IEC计数器所使用的起始背景数据块
|
111
|
|
IEC_LEN
|
整型
|
冗余的IEC定时器、IEC计数器所使用的背景数据块的个数,如IEC_NO设为111,IEC_LEN设为7,则DB111-DB117为存放冗余同步定时器、计数器的背景数据去
|
7
|
|
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从站,站号必须连续。
|
|
|
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站,非冗余数据块中交换的Word字数,如DB_A_B_NO设为DB11,DB_A_B_NO_LEN设为. W#16#64,则A站的DB11.DBW0-DB11.DBW198被复制到B站的DB11.DBW0-DB11.DBW198,因为W#16#64代表16进制64,即一共复制100个数据字。
|
W#16#64
|
|
DB_B_A_NO
|
数据块名称
|
该参数即定义从B站到A站,交换的非冗余数据块。
|
DB12
|
|
DB_B_A_NO_LEN
|
WORD
|
B站到A站,非冗余数据块中交换的Word字数,如DB_B_A_NO设为DB12,DB_B_A_NO_LEN设为. W#16#64,则B站的DB12.DBW0-DB12.DBW198被复制到A站的DB12.DBW0-DB12.DBW198,因为W#16#64代表16进制64,即一共复制100个数据字。
|
W#16#64
|
|
RETURN_VAL
|
WORD
|
调用FC100的返回值,为0代表正常,其他返回值您可以在错误代码表中找到对应的错误原因。
|
MW2
|
|
EXT_INFO
|
WORD
|
FC100中内部调用的一些功能块所返回的错误代码
|
MW4
|
表5
7.一般我们建议您将您的非冗余程序段编写在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个部分,如下图所示:
0


