西门子300PLC 软冗余的实现,详细步骤截图
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
主要硬件:(注意冗余要采用有源背板、有源导轨)
本控制柜采用2个315-2DP CPU通过CP343-1连接到以太网交换机实现冗余链路,用DP通讯的IM153-2 冗余套件实现ET200M的冗余通讯。
硬件配置:
添加两个300站点:A和B ,
然后对两个站分别进行硬件配置:
1.打开A站
2.从硬件目录选择机架
3.打开A站的机架,插入电源,插入CPU315-2DP,新建一条DP网络,DP地址为8 如下图:
4.插入ET200从站,DP 地址为3
5.插入CP343-1,新建 Ethernet(1) 网络
6 ET200从站中添加I/O模块,硬件组态完成
冗余的输出地址为0-11 ,后面设置FC100要用到。
7 两个站的硬件组态要一致。
8.添加网络连接
右击A站CPU(B站也行)会出现菜单,选择“添加新连接”(insert new connection),“连接类型”(connection type),我用以太网ISO-TCP协议实现冗余的,点确定。就出现下面这个画面,这里边的ID:7 和LADDR十六进制100,也就是十进制256,后边设置FC100要用到。注意ID(hex)0007 A050 这里是可以选择的,原来是0001 A050,改为0007 A050,这时的ID 就成了7。因为资料上说以太网实现冗余一般Local ID 不能小于2(其他方式实现没说),所以要改一下,两个CPU的都要改一致,这个在后边设置FC100参数要用到。
A站配置完成以后,进行B站的配置,注意两个站的配置要一致。
软件的设置
1.打开冗余程序库,复制里面所需的数据块到程序块里,采用以太网冗余
需要复制SWR_XSEND_300
2.调用FC5, FC6 在库Libraries-->SIMATIC_NET_CP-->CP 300里边可以找到。随便一个位置调
用他们,然后删除。项目的块里就会出现这两个块了。
3.调用IEC定时器块,冗余块里的SFB3 TP是定时器块,IEC定时器分别有SFB3 TP,SFB4
TON,SFB5 TOF等,把SFB4复制到项目里。
4.把冗余需要的数据块、定时器个数及中间变量计算好。数据块号及地址必须是连续的。
5.插入背景数据块DB200-DB240,共41个数据块,作为IEC定时器
6.插入DB20-DB25共6个数据块作为冗余数据块。
7.MB20-MB74 , 55个字节。
8.插入OB35
9.插入OB86
10.插入OB82
11.插入OB100
12.插入OB121
13.插入OB122
14.在OB100里调用,用于初始化冗余在OB100中调用FC100“SWR_START”,用于初始化
冗余,再在OB35中调用FB101“SWR_ZYK”来实现冗余程序和数据的同步,然后再OB86中调用FC102“SWR_DIAG”进行诊断,这个诊断调用一定要有。
15.在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号,如“DB3”,同样是FC100自动生成,不需要手动生成。MPI_ADR:这个参数是对方站的MPI地址,只有用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,等调用FB101的时候只能用这里填写DB5.
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的最后一个输出字节地址,按前边硬件配置,“11”。
MB_NO:冗余程序需要的内存变量地址区的起始地址,按前边提到的,“20”。
MB_LEN:需要的内存变量区长度,以BYTE为单位,“55”。
IEC_NO:冗余的IEC定时器、IEC计数器,所使用的背景数据块的起始地址。我用5个定时器,起始地址用DB200,这里只要填“200”就可以。
IEC_LEN:冗余的IEC定时器、IEC计数器的背景数据块的个数,填“41”。这里的41个背景数据块,会在调用IEC定时器时需要填写,按照前面建的数据块的DB200-DB240不
能随便写。
DB_NO:冗余数据块的起始数据块,按前边说明,我填“20”,只填数字。这里的数据块不能小于两个字节,我插入数据块后随便在里面写INT 变量,使它不小于两个字节就行了,不然会出错。
DB_NO_LEN:这里是填一共用了几个数据块,填“6”。
SLAVE_NO:冗余部分IM153的最低DP地址号,我的IM153设置为3,且只有一个,所以填“3”。
SLAVE_LEN:只有一个冗余DP从站,填“1”。
SLAVE_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停机。没有用到写0
DB_B_A_NO:同上,这个是从B站传到A站的DB(见过例程里边有A->B,和B->A用同一个DB的,我也用了一个,没出问题。主要是我没有互相传送的数据,不知道有数据
的时候是什么样,估计只要两个站一样应该没问题。)
DB_B_A_NO_LEN:同上,没有用到写0
RETURN_VAL:调用FC100的返回值。
EXT_INFO:FC100内部调用其他子块的返回值