当前位置:文档之家› S7-300软冗余调试总结

S7-300软冗余调试总结

S7-300软冗余调试总结我用的软硬件配置:概述:本系统2个315-2DP CPU通过CP343-1连接到以太网交换机实现冗余链路,用DP 通讯的IM153-2 冗余套件实现ET200M的冗余通讯,CP1612SIEMENS以太网卡连接到交换机实现WINCC与冗余系统的通讯(据说可以直接用计算机网卡实现)。

下面介绍我整理后的实现过程:硬件配置:先添加两个站A站和B站,每个站单独进行配置,硬件配置完后,需要增加一个冗余连接,这需要打开“网络配置”(configure network),在里边右击A站CPU(B站也行)会出现菜单,选择“添加新连接”(insert new connection),如果两个站都配置过,这是就会出现B站的信息,而且默认已经选在了B站CPU上,你需要做的就是在下边选择“连接类型”(connection type),我用以太网ISO-TCP协议实现冗余的,这里根据自己需要的类型选择就行,点OK,就出现下面这个画面,这里边的ID:7 和LADDR十六进制100,也就是十进制256,后边设置FC100要用到。

注意ID(hex)0007 A050 这里是可以选择的,原来是0001 A050,被我改成了0007 A050,这时的ID就成了7。

因为资料上说以太网实现冗余一般Local ID 不能小于2(其他方式实现没说),所以要改一下,两个CPU的都要改一致,这个在后边设置FC100参数要用到,这样就建立了一个新的连接,在界面的下方能看到一个连接出现,另外需要注意的是如果用DP冗余I/O那么ET200M必须两个站里都要做,而且要一模一样,DP地址也一样。

另一个需要注意的是输出地址必须连续,这个一般的时候如果有模拟量数字量混合的话,容易不连续,需要修改一下,改成连续的,比如我这里Q改为0~9,这个在后边FC100设置也要用。

硬件配置需要注意的就这些。

软件实现:要实现软冗余,需要在OB100中调用FC100“SWR_START”,用于初始化冗余,再在OB35中调用FB101“SWR_ZYK”来实现冗余程序和数据的同步,然后再OB86中调用FC102“SWR_DIAG”进行诊断,这个诊断调用必须得做。

首先打开冗余程序库,里边有所需要的数据块:这其中SWR_AGSEND_300是300以太网和DP软冗余用的,SWR_XSEND_300,是MPI 软冗余用的。

后缀是400的当然就是400软冗余用的啦。

这其中有个SFB3 TP ,这个是IEC定时器块,在软冗余程序中如果用到定时器,是不能用原来的Time定时器的,只能用IEC定时器,而且要提前算好你要用的定时器计数器的个数,后边设置FC100要用。

IEC定时器分别有SFB3 TP,SFB4 TON,SFB5 TOF等,具体功能看帮助吧。

把这里边的块都复制到你的项目里,然后还要添加两个FC,分别是这两个FC在Libraries-->SIMATIC_NET_CP-->CP300里边可以找到。

在随便一个位置调用这两个块,然后再删除它们,只要项目的Blocks里边出现这两个块就行啦!这两个块要下载到CPU的,不过不用我们手动调用,据说是FB101内部调用它们以及上边的FB104。

需要用的功能块和功能就这些啦。

下一步就是要调用这些块,来实现软冗余啦。

建议,在做冗余同步程序前,把需要冗余的程序块,数据块,都先做好,这个当然是按照设计要求来做啦,做这些程序的时候,把需要用到的DB块,DB号按连续的方式排列,比如DB40,DB41,DB42,DB43,DB44。

所有需要冗余的DB块号必须为连续的。

还有需要冗余的M内存变量地址如MB0~MB5,以及前边配置硬件时规划好的输出地址0~9。

都必须是连续的。

首先在项目中加入系统组织块OB100“complete restart”,在OB100中调用FC100“SWR_START”。

FC100的参数设置相当复杂,而且基本上出现问题都出在这里,希望大家一定要认真看这一段。

参数设置:AG_KENNUNG:这个参数是确定A、B站的,如果是A站程序,就写入“A”,B站的程序就写入“B”。

DB_WORK_NO:这里需要填入一个DB号,比如填入“DB1”,而这个DB1将来不需要手动生成,FC100会自动生成。

这个DB是实现冗余过程内部需要的数据块。

DB_SEND_NO:同上填入一个DB号,如“DB2”,同样是FC100自动生成,不需要手动生成。

可能是和下边这个DB_RCV_NO一起,都是完成数据同步作用时用的数据块吧。

DB_RCV_NO:同上填入一个DB号,如“DB3”,同样是FC100自动生成,不需要手动生成。

MPI_ADR:这个参数是对方站的MPI地址,只有用MPI方式同步的时候才有意义。

我还是按照实际CPU上边的MPI地址写上了,虽然没用,怕少了会出问题。

LADDR:CP通讯处理器组态时的硬件地址,采用DP或者以太网通讯时才用。

这个地址就是前边硬件配置中插入冗余连接的时候出现的地址LADDR 十六进制0100,或者是十进制256。

VERB_ID:这个就是我们组态硬件是,插入的冗余连接的那个ID号,被我从0001 A050改为了0007 A050,所以ID变成了7,这里就填7。

DP_MASTER_SYS_ID:这个是DP主站网络的ID号,不是DP地址号,只要在硬件组态中,双击DP线,就可以出现这个号码,如下图,这里填1。

DB_COM_NO:这个是调用FB101的时候使用的FB101的背景数据块,一般默认是DB5,我使用的是DB101,为了和FB101对应。

一定要记住,等调用FB101的时候只能用这里填写的这个DB啦!DB_KOMMUN:这个参数是连接ET200M的DP通讯口类型,如果是CPU集成的DP通讯口连接ET200M就填“1”,如果是CP通讯卡上的DP口连接ET200M填“2”。

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

选项是两个1:对于基本地址0,1,2,3,4……4:对于基本地址0,4,8,12….我是没看懂,填了“1”。

PAA_FIRST:冗余ET200M的第一个输出字节地址,按前边硬件配置,我填“0”。

PAA_LAST:冗余ET200M的最后一个输出字节地址,按前边硬件配置,我填“9”。

MB_NO:冗余程序需要的内存变量地址区的起始地址,按前边提到的,我填“0”。

MB_LEN:需要的内存变量区长度,以BYTE为单位,我填“6”。

IEC_NO:冗余的IEC定时器、IEC计数器,所使用的背景数据块的起始地址。

我用5个定时器,起始地址用DB200,这里只要填“200”就可以。

IEC_LEN:冗余的IEC定时器、IEC计数器的背景数据块的个数,我用5个,所以填“5”。

这里的5个背景数据块,会在调用IEC定时器时需要填写,不要忘记这里已经登记过了,不能乱写的。

另外据说这些DB 的大小不能小于2个字。

需要自己好好理解一下。

我没太明白,开始的时候出错了,我就直接在每个DB里加了个INT型变量,使它不小于2个字,反正最后没出错,能用。

也不知道是不是这里的问题。

(当时是现场调试,不求甚解,解决就行,呵呵,诸位见谅,哪位试出具体情况,还请赐教)DB_NO:冗余数据块的起始数据块,按前边说明,我填“40”,只填数字。

DB_NO_LEN:这里是填一共用了几个数据块,我用了5个,于是填“5”。

SLA VE_NO:冗余部分IM153的最低DP地址号,我的IM153设置为2,且只有一个,所以填“2”。

SLA VE_LEN:只有一个冗余DP从站,填“1”。

(这里冗余的DP从站如果不是一个,这里DP地址号要连续起来,比如2,3,4,5)。

SLA VE_DISTANCE:IM153-2的PROFIBUS地址设置的标识符,如果两个PROFIBUS接口地址一样,则填“1”,如果不同(即分别为n和n+1)则填“2”。

DB_A_B_NO:将非冗余数据从A站传送到B站,所用的发送数据DB。

将那些需要传输的数据都直接或者间接存到这个DB里,系统会自己传送。

DB_A_B_NO_LEN:上边选择的非冗余数据交换DB的数据量,就是字节数,A,B站这个参数必须一样,否则CPU停机。

DB_B_A_NO:同上,这个是从B站传到A站的DB(见过例程里边有A->B,和B->A用同一个DB的,我也用了一个,没出问题。

主要是我没有互相传送的数据,不知道有数据的时候是什么样,估计只要两个站一样应该没问题。

)DB_B_A_NO_LEN:同上RETURN_V AL:调用FC100的返回值。

(一般都用MW2,如果返回值为16#0,无故障,其他参照故障代码说明。

)EXT_INFO:FC100内部调用其他子块的返回值(一般用MW4,意义同上)下一步,在OB35中调用FB101“SWR_ZYK”,先插入OB35,然后打开OB35,用STL语言方式打开,第一次调用FB101代码如下(代码中标点为了看清楚,我改成中文标点了,可能不能复制直接使用,自己抄一遍吧):CALL "SWR_ZYK" ,DB101DB_WORK_NO :=DB1CALL_POSITION :=TRUERETURN_V AL :="FB101_ON_RETURN_V AL" MW6EXT_INFO :="FB101_ON_EXT_INF" MW8DB101,是调用FB101的背景数据块,你可以自己设定,但是这个DB必须跟FC100的参数DB_COM_NO设置的一样。

这个DB是自动生成的。

而且,这个DB的大小是根据不同的冗余同步方式而变化的,MPI同步时为194字节;如果是DP或者以太网同步时,DB的大小为358字节。

如果出现如上图错误,则可以检查此DB大小,或者将CPU停机,然后在线删除此DB,再从新生成,并下载一次。

DB_WORK_NO:DB 1,这个是FC100中调用的冗余工作DB ,必须和FC100中调用的一致。

CALL_POSITION :=TRUE,这里必须是TRUE,我用LAD调用怎么也写不上去这个TRUE,所以没办法用了STL语言调用,呵呵,比较笨!RETURN_V AL := 这个是调用FB101的返回值,一般用的是MW8EXT_INFO := 这个是FB101调用子块的返回值,一般用的是MW10启动调用完成,下边就是需要冗余的程序了。

先判断本站是否是主站,如果是主站,执行冗余程序,如果是从站,跳过冗余程序,直接执行FB101的结束调用。

用DB101.DBX9.1来判断,这个可以看背景数据块DB101的详细解释。

(我的背景数据块为DB101,你需要根据自己的背景数据块定。

相关主题