首页 理论教育 常用OB组织块的使用举例详解

常用OB组织块的使用举例详解

时间:2023-06-29 理论教育 版权反馈
【摘要】:现以CPU315,STEP7 V5.3为例介绍常用OB的使用方法,这些OB包括:程序循环组织块;日期时间中断组织块;延时中断组织块;循环中断组织块;硬件中断组织块;诊断中断组织块;机架故障组织块;起动的类型;编程故障组织块;I/O访问故障组织块。OB10程序执行OB10程序按照设定的时间执行,使用STEP7不能时时监控程序的运行,可用Variable Table监控实时数据变化。在OB10_Example程序的Blocks中插入组织块OB10,如图6-21所示。

常用OB组织块的使用举例详解

现以CPU315(6ES7315-2AG10-0AB0),STEP7 V5.3为例介绍常用OB的使用方法,这些OB包括:

程序循环组织块(OB1);

日期时间中断组织块(以OB10为例);

延时中断组织块(以OB20为例);

循环中断组织块(以OB35为例);

硬件中断组织块(以OB40为例);

诊断中断组织块(以OB82为例);

机架故障组织块(以OB86为例);

起动的类型(CPU300以OB100为例,CPU400以OB101、OB102为例);

编程故障组织块(以OB121为例);

I/O访问故障组织块(以OB122为例)。

还有其他的OB,如:I/O冗余故障OB(OB70),CPU冗余故障OB(OB72),通信冗余故障OB(OB73),请咨询CPU400H系统工程师,这里不做说明。

1.程序循环组织块(OB1)

(1)硬件组态

在“OB_Example”项目中插入一S7300站,命名为“OB1_Example”,然后插入“CPU 315-2DP”,如图6-16所示。

978-7-111-46052-7-Chapter06-29.jpg

图6-16 硬件组态

硬件组态完成后,保存编译。

(2)OB1程序执行

OB1的程序循环执行,用STEP7可以时时监控程序的运行,具体程序参见OB_Example/OB1_Example。OB1的STL程序(可转成梯形图)为:

978-7-111-46052-7-Chapter06-30.jpg

将OB1程序和硬件组态下载到CPU中。其中,MB100为时钟存储器,设置方法为进入硬件组态,双击“CPU315-2DP”,选择“Cycle/Clock Memory”,具体设置画面如图6-17所示。

978-7-111-46052-7-Chapter06-31.jpg

图6-17 设置画面

STEP7时时监控画面如图6-18所示。

978-7-111-46052-7-Chapter06-32.jpg

图6-18 STEP7时时监控画面

2.日期时间中断组织块(OB10)

(1)硬件组态在“OB_Example”项目中插入一S7300站,命名为“OB10_Example”,然后插入“CPU 315-2DP”,如图6-19所示。

978-7-111-46052-7-Chapter06-33.jpg

图6-19 硬件组态

双击“CPU 315-2DP”,选择“Time-of-Day Interrupts”选项,选中“Active”,同时设置“Execution”选项,本例选择“Every minute”,“Execution”选项包括:

None:不使用;

Once:只执行一次;

Every minute:每分钟执行一次;

Every hour:每小时执行一次;

Every week:每周执行一次;

Every month:每月执行一次;

End of month:月末执行一次;

Every year:每年执行一次。

设置开始执行的日期(Start date)和时间(Time of day),设置完成后的画面如图6-20所示。

978-7-111-46052-7-Chapter06-34.jpg

图6-20 设置完成后的画面

硬件组态完成后,保存编译。

(2)OB10程序执行

OB10程序按照设定的时间执行,使用STEP7不能时时监控程序的运行,可用Variable Table监控实时数据变化。具体程序参见OB_Example/OB10_Example。

在OB10_Example程序的Blocks中插入组织块OB10,如图6-21所示。

978-7-111-46052-7-Chapter06-35.jpg

图6-21 插入组织块OB10

然后打开组织块OB10编写程序,OB10的STL程序(可转成梯形图)为:

978-7-111-46052-7-Chapter06-36.jpg

将OB10程序和硬件组态下载到CPU中。

在OB10_Example程序的Blocks中插入Variable Table,然后打开,填入地址MW0并点击“Monitor Variable”按钮,设置画面如图6-22所示。

此时可以监控MW0每分钟加1。

978-7-111-46052-7-Chapter06-37.jpg

图6-22 设置画面

3.延时中断组织块(OB20)

(1)硬件组态

在“OB_Example”项目中插入一S7300站,命名为“OB20_Example”,然后插入“CPU 315-2DP”,如图6-23所示。

978-7-111-46052-7-Chapter06-38.jpg

图6-23 硬件组态

双击“CPU 315-2DP”,选择“Interrupts”选项,可以看到CPU支持OB20,组态完的画面如图6-24所示。

978-7-111-46052-7-Chapter06-39.jpg

图6-24 组态完的画面

硬件组态完成后,保存编译。

978-7-111-46052-7-Chapter06-40.jpg

图6-25 插入组织块OB20

(2)OB20程序执行

每一次OB20的程序执行,必须调用SFC32(SRT_DINT),延迟时间在SFC的输入参数中给定,同时给定OB号,调用SFC32且设定的时间延迟到后,执行OB程序,如果再次执行OB程序,需要再次调用SFC32。如果在延迟时间未到之前想取消程序的执行,可以调用SFC33(CAN_DINT),同时可以使用SFC34(QRY_DINT)取得延迟中断的状态,具体的SFC32/33/34的调用方法可参考在线帮助,STEP7不能时时监控程序的运行,可用Variable Table监控实时数据变化。具体程序参见OB_Example/OB20_Example。在OB20_Example程序的Blocks中插入组织块OB20,如图6-25所示。

然后打开组织块OB20编写程序,OB20的STL程序(可转成梯形图)为:

978-7-111-46052-7-Chapter06-41.jpg

打开组织块OB1编写程序,OB1的STL程序(可转成梯形图)为:

978-7-111-46052-7-Chapter06-42.jpg

将OB1、OB20和硬件组态下载到CPU中。在OB20_Example程序的Blocks中插入Variable Table,然后打开,填入地址MW0、M20.0、M20.1、MW18并点击“Monitor Variable”按钮,设置画面如图6-26所示。

此时可以监控MW0的变化,将M20.0置为true,10s后延迟时间到,MW0加1,再将M20.0置为true,10s后延迟时间到,MW0再加1。如果当延迟时间未到,此时将M20.1置为true,那么此次时间延迟中断被取消,MW0不会加1,每次执行的状态都可以从MW18中读出,具体状态的含义请参阅SFC34(QRY_DINT)的在线帮助。

978-7-111-46052-7-Chapter06-43.jpg

图6-26 设置画面

4.循环中断组织块(OB35)

(1)硬件组态

在“OB_Example”项目中插入一S7300站,命名为“OB35_Exam-ple”,然后插入“CPU 315-2DP”,参见OB10硬件组态,双击“CPU315-2DP”,选择“Cyclic Interrupts”选项,修改OB35的执行周期(Exe-cution(ms),范围是1~60000ms),本例设为1000ms,如图6-27所示。

硬件组态完成后,保存编译。

(2)OB35程序执行

OB35程序按照设定的执行周期循环执行,使用STEP7不能时时监控程序的运行,可用Variable Table监控实时数据变化。具体程序参见OB_Example/OB35_Example。

在OB35_Example程序的Blocks中插入组织块OB35,如图6-28所示。

978-7-111-46052-7-Chapter06-44.jpg

图6-27 硬件组态

然后打开组织块OB35编写程序,OB35的STL程序(可转成梯形图)为:

978-7-111-46052-7-Chapter06-45.jpg

将OB351和硬件组态下载到CPU中。在OB35_Example程序的Blocks中插入Variable Table,然后打开,填入地址MW0并点击“Monitor Variable”按钮,设置画面如图6-29所示。

此时可以监控MW0每秒钟加1。可以在OB35中周期性的调用PID模块(FB41/42/43),完成PID调节,也可以OB35中调用周期的数据发送指令,完成数据发送功能,等等,总之,OB35是按设定的循环周期执行。

978-7-111-46052-7-Chapter06-46.jpg

图6-28 插入组织块OB35

5.硬件中断组织块(OB40)

(1)硬件组态

在“OB_Example”项目中插入一S7300站,命名为“OB40_Exam-ple”,然后插入“CPU 315-2DP”和一块具有中断功能的数字量输入模板“6ES7321-7BH01-0AB0”。

双击“6ES7321-7BH01-0AB0”模板,选择“Inputs”选项,同时选中“Hardware interrupt”和“Trigger for Hardware Interrupt”选项,如图6-30所示。

978-7-111-46052-7-Chapter06-47.jpg

图6-29 设置画面

978-7-111-46052-7-Chapter06-48.jpg

图6-30 硬件组态

点击“OK”,然后双击“CPU315-2DP”,选择“Inter-rupts”选项,可以看到CPU支持OB40,如图6-31所示。

硬件组态完成后,保存编译。

(2)OB40程序执行

OB40程序在硬件组态中设定的硬件中断发生后执行,当OB40执行时可以通过它的临时变量OB40_MDL_ADDR读出产生硬件中断的模板的逻辑地址,通过OB40_POINT_ADDR可以读出产生硬件中断的通道,临时变量的具体含义请参阅在线帮助。STEP7不能时时监控程序的运行,可用Variable Table监控实时数据变化。具体程序参见OB_Example/OB40_Exam-ple。

在OB40_Example程序的Blocks中插入组织块OB40,如图6-32所示。

978-7-111-46052-7-Chapter06-49.jpg

图6-31 组态完成画面

978-7-111-46052-7-Chapter06-50.jpg

图6-32 插入组织块OB40

然后打开组织块OB40编写程序,OB40的STL程序(可转成梯形图)为:

978-7-111-46052-7-Chapter06-51.jpg

978-7-111-46052-7-Chapter06-52.jpg

将OB40和硬件组态下载到CPU中。

在OB40_Example程序的Blocks中插入Variable Table,然后打开,填入地址MW0、MW10、MD12并点击“Monitor Variable”按钮,设置画面如图6-33所示。

此时可以监控MW0的变化,每当I0.1有上升沿脉冲产生MW0加1,MW10为硬件中断模板的逻辑地址,本例中为0,MD12为中断产生的通道号,注意此值以十六进制表示。

6.诊断中断组织块(OB82)

结合模板的断线检测应用和SFC51来说明诊断中断组织块OB82的使用方法。

978-7-111-46052-7-Chapter06-53.jpg

图6-33 设置画面

(1)硬件组态

在“OB_Example”项目中插入一S7300站,命名为“OB82_Example”,然后插入“CPU 315-2DP”和一块具有中断功能的模拟量输入模板“6ES7331-7KF02-0AB0”,配置“SM331-7KF02-0AB0”模块的“Inputs”选项,选择0-1通道组为2线制电流(2DMU),其他通道组为电压,并注意模板的量程卡与设置的相同。选中“Enable”框中的“Diagnostic Interrupt”选项,选中“Diagnostics”选项中的0-1通道组中的“Group Diagnostics”和“with Check for Wire Break”选项,配置完成的画面如图6-34所示。

978-7-111-46052-7-Chapter06-54.jpg

图6-34 配置完成的画面

点击“OK”,然后双击“CPU315-2DP”,选择Interrupts选项,可以看到CPU支持OB82,如图6-35所示。

硬件组态完成后,保存编译。

(2)OB82程序执行

OB82程序在硬件组态中设定的诊断中断发生后执行,当OB82执行时可以通过它的临时变量OB82_MDL_ADDR读出产生诊断中断的模板的逻辑地址,OB82其他临时变量的具体含义请参阅OB82的在线帮助。STEP7不能时时监控程序的运行。接下来完成诊断程序。

978-7-111-46052-7-Chapter06-55.jpg

图6-35 组态完成画面

1)在OB_Example/OB82_Example/CPU315-2DP/S7 Program(7)/Sources下面插入STL Source文件STL Source(1)。

2)打开空的OB1程序,然后选中Libraries→Standard Libraries→System Function Blocks→SFC51 RDSYSST DIAGNSTC,按“F1”键,出现SFC51的在线帮助信息。可具体读一下信息的内容,然后在信息的最底部点击“Example for module diagnostics with the SFC 51”,然后点击“STL Source File”,选中全部STL Source源程序复制到STL Source(1)中,存盘编译此源程序,提示没有错误

3)在Blocks中生成OB1、OB82、DB13和SFC51。

4)打开OB82的程序并做简单修改,将19和20行复制到go:后面并保存,具体变化如图6-36所示。

978-7-111-46052-7-Chapter06-56.jpg

图6-36 具体变化

5)将整个S7-300站的程序和硬件组态下载到CPU中。下载完成后,将CPU的模式选择开关切换到RUN位置,此时CPU“RUN”灯亮、“SF”灯亮,SM331的“SF”灯亮。同时,查看CPU的诊断缓冲区Hardware→Online,双击CPU,选择“Diagnostic Buffer”,可获得相应的故障信息。

6)打开数据块DB13,在线监控,具体画面如图6-37所示。

978-7-111-46052-7-Chapter06-57.jpg

图6-37 数据块DB13的在线监控画面(www.xing528.com)

因为通道断线是一个到来事件,所以诊断信息存储到COME数组中,具体每一字节的含义参见S7-300的硬件手册中B Diagnostics Data of Signal Modules部分的详细说明,S7-300的硬件手册可以从西门子网站下载,下载网址为:http://support.automation.siemens.com/WW/view/en/8859629。

7)本例中COME数组字节的含义解释如下:

COME[1]=16#0D 表示通道错误,外部故障和模板问题;

COME[2]=16#15 表示此段信息为模拟量模板的通道信息;

COME[3]=16#00 表示CPU处于运行状态,无字节2中标示的故障信息;

COME[4]=16#00 表示无字节3中标示的故障信息;COME[5]=16#71表示模拟量输入;

COME[6]=16#08 表示模板的每个通道有8个诊断位;COME[7]=16#08表示模板的通道数;

COME[8]=16#03 表示0通道错误和1通道错误,其他通道正常;

COME[9]=16#10 表示0通道断线;

COME[10]=16#10 表示1通道断线;

COME[11]=16#00 表示2通道正常,其他通道与2通道相同。

8)如何读取其他信息的诊断可详细参考OB82、SFC51和S7-300的硬件手册中B/Diagnos-tics Data of Signal Modules部分的说明。

7.机架故障组织块(OB86)

(1)硬件组态

在“OB_Example”项目中插入一S7300站,命名为“OB86_Example”,然后插入“CPU 315-2DP”,选择DP作为主站,在DP主站下面添加一ET200M从站,并在从站中插入一模拟量模块SM331(6ES7331-7KF02-0AB0),同时注意CPU的DP主站地址和ET200M从站地址不能相同,并且ET200M的站地址必须和ET200M上的实际地址一致,组态完成后的画面如图6-38所示。

然后双击“CPU315-2DP”,选择“Interrupts”选项,可以看到CPU支持OB86,画面如图6-39所示。

硬件组态完成后,保存编译。

(2)OB86程序执行

978-7-111-46052-7-Chapter06-58.jpg

图6-38 组态完成后的画面

978-7-111-46052-7-Chapter06-59.jpg

图6-39 组态完成画面

OB86程序在通信发生问题后或者访问不到配置的机架或站时执行,此时程序还可能需要调用OB82和OB122等组织块,当OB86执行时可以通过它的临时变量读出产生故障的错误代码和事件类型,通过它们的组合可以得出具体的错误信息,这些信息可以通过OB86的在线帮助查到,同时也可以读到产生错误的模块地址和机架的信息,临时变量的具体含义请参阅在线帮助。STEP7不能时时监控程序的运行,可用Variable Table监控实时数据变化。具体程序参见OB_Example/OB86_Example。

978-7-111-46052-7-Chapter06-60.jpg

图6-40 插入组织块OB86

在OB86_Example程序的Blocks中插入组织块OB86,如图6-40所示。

然后打开组织块OB86编写程序,OB86的STL程序(可转成梯形图)为:

978-7-111-46052-7-Chapter06-61.jpg

978-7-111-46052-7-Chapter06-62.jpg

注意:将OB86的临时变量OB86_RACKS_FLTD Array[0..31]改为OB86_Z23 DWORD。将OB86和硬件组态下载到CPU。在OB86_Example程序的Blocks中插入Variable Table,然后打开,填入地址“MB0、MB1、MW2、MD4”并点击“Monitor Variable”按钮,设置画面如图6-41所示。

此时可以读到MB0、MB1为16#39和16#C4,可以通过它们的组合得出主站逻辑地址为2047的站有通信错误,出现错误的从站地址为3。更多的信息读取请参阅OB86的在线帮助。

978-7-111-46052-7-Chapter06-63.jpg

图6-41 设置画面

8.起动的类型(OB100)

(1)硬件组态

在“OB_Example”项目中插入一S7300站,命名为“OB100_Example”,然后插入“CPU 315-2DP”,参见OB10硬件组态。

(2)OB100程序执行

OB100程序在CPU执行Warm Re-start时执行,且只执行一次,可用于变量的初始化,用STEP不能时时监控程序运行,可用Variable Table监控数据变化。具体程序参见OB_Example/OB100_Example。在OB100_Example程序的Blocks中插入组织块OB100,如图6-42所示。

978-7-111-46052-7-Chapter06-64.jpg

图6-42 插入组织块OB100

然后打开组织块OB100编写程序,OB100的STL程序(可转成梯形图)为:

978-7-111-46052-7-Chapter06-65.jpg

在OB100_Example程序的Blocks中插入Variable Table,然后打开,填入地址MW0并点击“Monitor Variable”按钮,设置画面如图6-43所示。

此时可以监控MW0为123,如果修改MW0的值为0,则MW0不会再被赋值为123,只有当CPU再次执行Warm Restart(重新上电或者从Stop切换到Run状态)后才会被赋值。

9.编程故障组织块(OB121)

(1)硬件组态

在“OB_Example”项目中插入一S7300站,命名为“OB121_Example”,然后插入“CPU 315-2DP”,参见OB10硬件组态。

978-7-111-46052-7-Chapter06-66.jpg

图6-43 设置画面

(2)OB121程序执行

OB121程序在CPU程序执行错误时执行,此错误不包括用户程序的逻辑错误和功能错误等,例如当CPU调用一未下载到CPU中的程序块,CPU会调用OB121,通过临时变量OB121_BLK_TYPE可以得出出现错误的程序块。使用STEP7不能时时监控程序的运行,可用Variable Table监控数据变化。具体程序参见OB_Example/OB121_Example。

1)在OB121_Example程序的Blocks中插入组织块OB121,然后打开组织块OB121编写程序。OB121的STL程序(可转成梯形图)为:

978-7-111-46052-7-Chapter06-67.jpg

978-7-111-46052-7-Chapter06-68.jpg

2)在OB121_Example程序的Blocks中插入FC1,然后打开FC1编写程序。FC1的STL程序(可转成梯形图)为:

978-7-111-46052-7-Chapter06-69.jpg

先将硬件组态和OB1下载到CPU中,此时CPU能正常运行。在OB121_Example程序的Blocks中插入Variable Table,然后打开,填入地址MW0和M10.0并点击“Monitor Variable”按钮,程序运行正常,将M10.0置为true,CPU报错并停机,查看CPU的诊断缓冲区信息,发现为编程错误,将OB121下载到CPU中,再将M10.0置为true,CPU会报错误但不停机,MW0立刻为16#88,查看OB121的在线帮助,16#88表示为OB程序错误,检查发现FC1未下载。设置画面如图6-44所示。

978-7-111-46052-7-Chapter06-70.jpg

图6-44 设置画面

下载FC1后再将M10.0置为true,CPU不会再报错,程序也不会再调用OB121。

10.I/O访问故障组织块(OB122)

(1)硬件组态

在“OB_Example”项目中插入一S7300站,命名为“OB122_Example”,然后插入“CPU315-2DP”和一块模拟量输入模板“6ES7331-7KF02-0AB0”,配置“SM331-7KF02-0AB0”模块的“Inputs”选项,选择所有通道组为电压类型,注意模板的量程卡与设置的相同。模拟量的逻辑输入地址为256...271,配置完成的画面如图6-45所示。

硬件组态完成后,保存编译。

(2)OB122程序执行

OB122程序在出现I/O访问错误时被调用,例如当CPU程序访问一未定义的I/O地址,CPU会出现I/O访问错误,CPU会调用OB122,如果OB122未下载,CPU会报故障停机。通过临时变量OB122_SW_FLT可以读出错误代码,通过OB122_BLK_TYPE得出出现错误的程序块,通过OB122_MEM_AREA可以读出被访问的地址类型,通过OB122_MEM_ADDR可以读出发生错误的存储器地址。使用STEP7不能时时监控程序的运行,可用Variable Table监控数据变化。具体程序参见OB_Example/OB122_Example。

978-7-111-46052-7-Chapter06-71.jpg

图6-45 配置完成的画面

1)在OB122_Example程序的Blocks中插入组织块OB122,然后打开组织块OB122编写程序,OB122的STL程序(可转成梯形图)为:

978-7-111-46052-7-Chapter06-72.jpg

978-7-111-46052-7-Chapter06-73.jpg

先将硬件组态和OB1下载到CPU中,此时CPU能正常运行,在OB122_Example程序的Blocks中插入Variable Table,然后打开,填入地址MW0、MW2、MW4、MW6和M10.0并点击“Monitor Variable”按钮,程序运行正常,将M10.0置为true,CPU会报错误并停机。查看CPU的诊断缓冲区信息,发现为I/O访问错误,将OB122下载到CPU中,再将M10.0置为true,CPU会报错误但不停机,MW0为16#0042,MW2为16#0000,MW4为16#00200,MW62为16#012C,查看OB121的在线帮助可得到相应的故障信息,具体监控画面如图6-46所示。

978-7-111-46052-7-Chapter06-74.jpg

图6-46 监控画面

检查并修改OB1程序为:

978-7-111-46052-7-Chapter06-75.jpg

重新下载OB1,运行程序CPU不会再报错,程序能正常运行。

11.起动的类型(OB101)

(1)硬件组态

在“OB_Example”项目中插入一S7400站,命名为“OB101_Example”,然后插入“CPU412-1(6ES7412-1XF03-0AB0 Ver1.2)”,组态完成画面如图6-47所示。

双击“CPU 412-1”,设置起动方式,选择“Hot Restart”,具体画面如图6-48所示。

组态完成后保存编译。

978-7-111-46052-7-Chapter06-76.jpg

图6-47 组态完成画面

978-7-111-46052-7-Chapter06-77.jpg

图6-48 具体画面

(2)OB101程序执行

OB101程序在CPU执行Hot Restart时执行且只执行一次,可用于变量的初始化,使用STEP7不能时时监控程序的运行,可用Variable Table监控数据变化。具体程序参见OB_Example/OB101_Example。在OB101_Example程序的Blocks中插入组织块OB101,然后打开组织块OB101编写程序,OB101的STL程序(可转成梯形图)为:

978-7-111-46052-7-Chapter06-78.jpg

将程序和硬件组态下载到CPU中,然后执行Hot Restart。

在OB101_Example程序的Blocks中插入Variable Table,然后打开,填入地址MW0并点击“Monitor Variable”按钮,设置画面如图6-49所示。

978-7-111-46052-7-Chapter06-79.jpg

图6-49 设置画面

此时可以监控MW0为123,如果修改MW0的值为0,则MW0不会再被赋值为123,只有当CPU再次执行Hot Restart后才会被赋值。

12.起动的类型(OB102)

(1)硬件组态

在“OB_Example”项目中插入一S7400站,命名为“OB102_Example”,然后插入“CPU412-1(6ES7412-1XF03-0AB0 Ver1.2)”,组态参见OB101部分,设置起动方式,选择“Cold Restart”,具体画面如图6-50所示。

978-7-111-46052-7-Chapter06-80.jpg

图6-50 硬件组态画面

组态完成后保存编译。

(2)OB102程序执行

OB102程序在CPU执行Cold Restart时执行,且只执行一次,可用于变量的初始化,使用STEP7不能时时监控程序的运行,可用Variable Table监控数据变化。具体程序参见OB_Example/OB102_Example。在OB102_Example程序的Blocks中插入组织块OB102,然后打开组织块OB102编写程序,OB102的STL程序(可转成梯形图)为:

978-7-111-46052-7-Chapter06-81.jpg

将程序和硬件组态下载到CPU中,然后执行Cold Restart。在OB102_Example程序的Blocks中插入Variable Table,然后打开,填入地址MW0并点击“Monitor Variable”按钮,设置画面如图6-51所示。

此时可以监控MW0为123,如果修改MW0的值为0,则MW0不会再被赋值为123,只有当CPU再次执行Hot Restart后才会被赋值。

978-7-111-46052-7-Chapter06-82.jpg

图6-51 设置画面

13.有关组织块的常问问题

(1)CPU的SF红灯亮,CPU停机是什么原因造成的?

当CPU的SF红灯亮,CPU停机后不知道是什么原因,此时怎么办呢?您需要去查看CPU的诊断缓冲区,根据缓冲区中提供的停机信息采取相应的措施,例如需要OB82、OB86的组织块下载等。那么如何查看CPU的诊断缓冲区呢?

方法一:首先建立STEP7与CPU的通信,然后打开硬件组态,点击“Offline〈-〉Online”按钮,然后双击CPU,选择“Diagnostic Buffer”选项,可以查看CPU的故障信息,具体画面如图6-52、图6-53所示。

978-7-111-46052-7-Chapter06-83.jpg

图6-52 设置画面(一)

方法二:首先建立STEP7与CPU的通信,然后打开硬件组态,点击CPU,然后选择“PLC→Module Information...”选项,具体画面如图6-54所示。

再选择“Diagnostic Buffer”选项,可以查看CPU的故障信息,具体画面同上。

(2)为什么监控OB100程序时,感觉程序没有运行?

因为OB100为暖起动组织块,只有当CPU执行暖起动操作时才执行OB100的程序,且只执行一个周期,所以当监控OB100程序时感觉程序没有运行。

978-7-111-46052-7-Chapter06-84.jpg

图6-53 设置画面(二)

978-7-111-46052-7-Chapter06-85.jpg

图6-54 设置画面

(3)OB35的循环时间最长为60s,但想实现5min的循环周期怎么办?

将OB35的执行周期设为60000ms,在组织块OB35中做一加法计数,当计数值等于5后执行相应的程序,然后将计数值清零,简单程序举例如下。组织块OB35的STL程序为:

978-7-111-46052-7-Chapter06-86.jpg

978-7-111-46052-7-Chapter06-87.jpg

(4)在冗余电源配置中,电源模块掉电,调用哪个OB可以防止CPU停机?

通过在程序中添加OB83可以防止CPU停机,而添加OB81不能防止CPU停机。通常我们很容易以为OB81就是处理所有电源故障的OB,但对于冗余电源配置中,某个电源模块掉电故障,实际上CPU当作模块插拔故障来处理,因此需调用OB83。如图6-55所示当程序中没有插入OB83时电源模块掉电,CPU会停机。查看“Diagnostic Buffer”中显示的信息是模块插拔故障导致停机。

978-7-111-46052-7-Chapter06-88.jpg

图6-55 查看故障信息(一)

如图6-56所示当程序中没有插入OB83时电源模块掉电后恢复,CPU停机不恢复。查看“Diagnostic Buffer”中显示的信息是模块插入恢复。

978-7-111-46052-7-Chapter06-89.jpg

图6-56 查看故障信息(二)

如图6-57所示当程序中插入OB83时电源模块掉电,CPU不会停机。查看“Diagnostic Buff-er”中显示的信息是模块拔除故障调用OB83。

978-7-111-46052-7-Chapter06-90.jpg

图6-57 查看故障信息(三)

如图6-58所示当程序中插入OB83时电源模块掉电后恢复,CPU不停机,外部故障灯恢复。查看“Diagnostic Buffer”中显示的信息是模块插入恢复。

978-7-111-46052-7-Chapter06-91.jpg

图6-58 查看故障信息(四)

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈