您现在的位置是:首页 > PLC技术 > PLC技术

STEP 7的模块化程序结构——组织方块OB1的作用和

来源:艾特贸易2017-06-05

简介在开始进行编程之前,我们首先要了解 STEP 7 的模块化程序结构,这种结构将复杂的任务分解成一些可单独解决的分任务。 STEP 7 软件将应用程序分解为若干种模块,即 OB (组织块)、

    在开始进行编程之前,我们首先要了解STEP 7的模块化程序结构,这种结构将复杂的任务分解成一些可单独解决的分任务。    STEP 7软件将应用程序分解为若干种模块,即OB(组织块)、FB(功能块)、FC(功能)和DB(数据块)等。    STEP7中的块,诸如功能(FC)和功能块(FB),可以赋予参数,通过使用这些块便实现了结构化编程的概念。这意味着解决单个任务的块,使用局部变量来实现对其自身数据的管理。块仅通过其块参数来实现与“外部”的通信,也即,与过程控制的传感器和执行器,或者与用户程序中的其他块之间的通信。在块的指令段中,一般不直接访问如输入、输出、位存储器或DB中的变量这样的全局地址,只有在调用这些块时才用全局地址去替换块中的局部变量(形式参数)。    结构化编程具有如下一些优点:    1)各单个任务块的创建和测试可以相互独立地进行。    2)通过使用参数,可将块设计得十分灵活。比如,可以创建一钻孔循环,其坐标和钻孔深度可以通过参数传递进来。    3)块可以根据需要在不同的地方以不同的参数数据记录进行调用,也就是说这些块能够被再利用。    4)在预先设计的库中,能够提供用于特殊任务的“可重用”块。    下面首先说明OB0组织块( OB)CPU的操作系统和用户程序之间的接口,OB将用来执行特殊的程序段,主要有循环执行用户程序(例如OB1)、定时执行用户程序(例如OB30~ OB38)、响应I/O模板的硬件中断信号执行的用户程序(例如OB40~OB47)、响应I/O模板的诊断信号执行的用户程序(诊断中断,例如OB82)、CPU启动方式组织块(例如OB90OB100OB101OB102)等。    本节主要介绍OB1(主循环程序)的作用和编程方法。    STEP 7中,OB1是由CPU执行的主循环程序,CPU一行行地读取并且执行程序命令,当CPU返回到第一程序行时,它就精确地完成了一个循环周期。此过程所需要的时间就是一个扫描周期时间。    下面根据选择使用的编程语言,分别介绍用梯形图( LAD)、语句表(STL)和功能块图( FBD)来编写OB1程序。    在用STEP 7建立S7程序时,可以选择3种标准编程语言中的一种,即梯形图(LAD)逻辑语言、语句表( STL)语言或者功能块图(FBD)语言。LAD适合于熟悉继电器逻辑的电气工程师,STL适合于熟悉计算机编程语言的工程师,FBD对习惯于使用逻辑图设计的工程师更为合适。图3-20是分别使用这3种编程语言的示例。
用3种不同编程语言编写程序的示例
    3-20    3种不同编程语言编写程序的示例    在工具条上单击打开图,打开OB1方块,在弹出的对话框中选择项目Getting Started,单击OK按钮确认。单击打开对话框中的Browse(浏览)按钮,选择用某一种编程语言来对OB1进行编程,在出现的路径菜单(C:SIEMENSSTEP7EXAMPLES)中,选择打开以下的项目样板:ZEn01_01_STEP7_STL_1-9ZEn01_03_STEP7_FBD_1-9或者ZEn01 _05_STEP7_LAD_1-9    在图3-21的中间部分,显示了这3个项目样板。    对选中的样板,例如ZEn01_05_ STEP7_ LAD_1-9,采用导航的方法,一直到出现符号表Symbols,用鼠标选中目标并按住鼠标左键,即将符号表复制到项目Getting StartedS7程序文件夹中,然后关闭项目ZEn01_05_STEP7_LAD_1-9的窗口。用鼠标选中目标并按住鼠标左键,拖动目标到所选择的位置,释放鼠标左键,完成复制。图3-21图解说明了这一过程。
复制符号地址表和打开OB1程序组织方块
    3-21    复制符号地址表和打开OB1程序组织方块    Getting Started项目的右边窗口,双击OB1,从而打开了用LAD(或STL/FBD)来编写OB1程序的编程窗口。图3 -22所示为这一窗口的各个部分。
 S7程序的编程窗口(以梯形图逻辑语言的编程为例)
    3-22    S7程序的编程窗口(以梯形图逻辑语言的编程为例)    3-23和图3-24采用图解的方法举例说明,怎样使用梯形图逻辑语言来编写一个串联电路和并联电路的程序。图3-25进一步说明怎样编写一个存储置位、复位电路。图3-26所示为梯形图逻辑语言编程中的绝对地址和符号地址。
用梯形图逻辑语言编写一个串联电路程序示例
    3-23    用梯形图逻辑语言编写一个串联电路程序示例
用梯形图逻辑语言编写一个并联电路程序示例
    3-24    用梯形图逻辑语言编写一个并联电路程序示例
用梯形图逻辑语言编写SR单元(存储置位、复位)程序示例
    3-25    用梯形图逻辑语言编写SR单元(存储置位、复位)程序示例
梯形图逻辑语言编程中的绝对地址和符号地址
    3-26    梯形图逻辑语言编程中的绝对地址和符号地址    以上介绍了使用梯形图( LAD)逻辑语言编写的串联电路、并联电路和SR触发器的程序网络段。下面将用语句表( STL)语言和功能块图(FBD)语言来编写同样的电路程序,如图3-27~3-33所示。
用语句表语言完成“与”(AND)指令语句程序示例
    3-27    用语句表语言完成“与”(AND)指令语句程序示例    在用语句表语言编程的过程中,如果出现红色符号,这表明在已经建立的符号表中没有该符号,或者存在语法错误。    在编程过程中,也可以直接从符号表中插入符号名。单击??.?符号,然后单击菜单命令InsertSymbol,通过下拉表的滚动条,找到相应的符号名,选择这一符号名,即可自动地替代??.?地址。    在图3-28中,网络段1的说明是,当两个输入点“Key_1”和“Key_2”都激活时(都是信号状态“1= 24V),则“Green_Light”激活。亦即为了使“绿灯”接通,必须两个输入同时为“1”状态。    网络段2的说明是,当两个输入点“Key_3”和“Key_4”中有一个激活时(有一个是信号状态“1= 24V),则输出“Red_Light”激活。亦即为了使“红灯”接通,只需两个输入中有一个为“1”状态。
用语句表语言编写“或”指令和“存储置位/复位”指令程序示例
    3-28    用语句表语言编写“或”指令和“存储置位/复位”指令程序示例
语句表语言编程中的绝对地址和符号地址
    3-29    语句表语言编程中的绝对地址和符号地址
用功能块图语言编写“与”(AND)逻辑功能程序示例
    3-30    用功能块图语言编写“与”(AND)逻辑功能程序示例
用功能块图语言编写“或(OR)”逻辑功能程序示例
    3-31    用功能块图语言编写“或(OR)”逻辑功能程序示例
用功能块图语言编写SR功能(存储置位/复位)程序示例
    3-32    用功能块图语言编写SR功能(存储置位/复位)程序示例    网络段3的说明是,当输入“Automatic_On”激活时,由于S指令的作用,输出“Au tomatic_Mode”被激活,且一直保持激活状态,即使输入“Automatic_On”又变成非激活状态,对输出也没有影响。当输入“Manual_On”激活时,R指令起作用,输出“Automatic_Mode”复位到非激活状态,且一直保持非激活状态,即使输入“Manual_On”又变成非激活状态,对输出也没有影响。输出的状态是由S (Set)R(Reset)操作来决定的。    如果两个输入同时被激活,则首先是置位功能,随后是处理复位功能,由于主程序( OB1)是顺序执行,因此一个OB1周期结束时的结果使输出处于复位状态,这种情况称复位优先。
功能块图语言编程中的绝对地址和符号地址
    3-33    功能块图语言编程中的绝对地址和符号地址