我们来扒一扒那些西门子1200用法

很多从日系PLC或者200PLC过来的人,很不习惯于S7 1200 或者TIA PORTAL 里面的一些专业术语,比如OB,DB,FC,FB等等,其实这些术语也包含于S7 300,400 ,1500等。

所以今天讲解的内容,理论上也适应于这些PLC,虽然我没有玩过这些东西,但是TIA PORTAL适合于西门子全系列PLC,很多概念性的东西都是一致的。

S7 1200的功能强大正式基于拥有各种类型的block和多种变量类型。

S7 1200 由以下几类基本元素组成:

OB:组织块,英文名Organization block。组织块是CPU系统和用户程序之间的接口,可以在CPU上电启动时调用,也可以循环调用,也可以在PLC发生错误时候调用。

DB:数据块,英文名Data block。从字面含义便知主要用于储存用户数据,比如模拟量转换数据,相当于200里面的V区,欧姆龙PLC的W区。

FC:函数,英文名Function。我们常常在FC函数中写一些需要重复执行的代码,可以在程序不同地方调用,可以被OB调用,也可以被FC调用。使用FC可以简化我们需要重复执行的任务,提高代码的运行效率。FC类似于200的子程序。

FB:FC+DB组合,意思是含有DB块的FC函数,与FC的区别是当函数调用结束后,通过Static变量仍然可以保留数值,经常用于调用间的数据共享。

OB组织块

当我们新建一个程序时,系统会自动建立一个Main[OB1]程序,该程序会在PLC的每个扫描周期被调用。Main程序和200里面的主程序,是一个同样的概念。也类似于C里面的Main ,即为函数入口点,我们可以在Main程序里面调用各种函数和块。

下面的图是在程序中调用一个FC和FB,然后在FC中调用另外一个FC,形成嵌套调用。

注:<Main>、<SumFC>、<调用FC>、<调用FB>是别名,方便我们记忆和理解,真正的地址在[.....]中,如OB1,FC2,FC1,FB1等等。

图1 Main程序

图2 Main调用结构

图1显示了Main程序具体内容,图2显示了Main程序的调用结构。图中很多元素的概念,我们暂时不需要了解,但是可以看到一些整体概念,Mian程序包含程序段1(NW1)和程序段2(NW2),在Main的调用结构中包含了3个元素test、调用FB和调用FC。

其实应该是4个,还有一个嵌套在<调用FC>中,点击<调用FC>左侧箭头,出现如下图所示:

图3 FC嵌套调用

图4 OB分类

我们来分析上图中的OB类型。OB块主要用于程序循环、启动、延时中断、循环中断、硬件中断、HSC中断、诊断错误和时间错误八大事件。

OB块还有两个属性是编号和优先级,优先级越高,中断级别越高。在同样的优先级别,OB编号越小,越优先执行。

从图1中,我们看到Main程序的地址在OB1,是一个循环运行程序,优先级为1较低。

时间错误事件的优先级最高,当发生该事件时,会暂停执行Main程序,优先执行时间错误事件OB块。程序循环OB类块的编号属性为'1;>=123',意为我们可以创建多个类似OB块。

因为新建程序默认OB编号为1,假设我们要创立该事件类型OB块,那么默认编号为123起,同时OB1的执行要优先于OB123。诊断错误事件OB块和时间错误OB块只有一个。

图5 添加OB新块

图6 手动选择创建编号

图5 添加OB新块界面,我们可以看到,在红色矩形框处,OB编号数值为123,我们选择的创建方式为自动。如果你想起用别的编号,可以选择手动方式,同时可以选择创建OB块采用的语言。大家不妨自己试一试哦。

这里讲解几个常用的OB类型块使用,其他类型OB块使用,大家可以翻阅系统编程手册。

程序循环事件OB块(program cycle):该块主要用于执行循环运行的程序,一般一个程序中创建一个便可以,就是默认的Main程序(OB1),我们可以通过调用FC和FB来实现其他功能。系统CPU每个扫描周期都会执行该类型OB块。

启动事件OB块(Startup):该块主要用于初始化变量,当PLC断电重启或者CPU从STOP切换为RUN时候执行,往后不再运行,也就是只运行一次。我们新建一个DB1块,添加两个,设置初始值,如下图所示:

图7 添加DB块变量

然后新建一个Startup事件OB块,写如下程序(SCL语言):

图8 Startup事件OB块程序

我们可以看到该类型OB块编号为100,如果再建一个该类型OB块,编号必须>=123。然后我们下载程序,这里顺便提一下下载选项,如下图所示:

图9 下载选项

如果是初次下载,选择'硬件和软件(仅更改)'。如果不是初次,可以选择你修改的部分,这样会提高下载速度。

图10 程序运行结果

循环中断事件OB块(Cyclic interrupt):常常用于需要定时执行的任务,比如我们需要1秒钟采样50个模拟值,我们可以把循环时间设置为20毫秒。可能会有人问,为什么不采用普通定时器每隔20毫秒采样一次呢?

因为普通定时器会受到CPU扫描周期的影响。在PID程序中,我们需要采用循环中断事件来调整计算PID输出。

图11 添加循环中断事件OB块

在实验程序里,通过INC指令把DB1块里面的变量,每隔1秒加1,运行效果如下:

图12 循环中断事件OB

我们会看到在OB30这个程序块里面,'Data'.Var2的值会每隔1秒变化,如果把INC指令放在Main[OB1]里面会是什么情况呢?

诊断错误事件OB块(Diagnostic error interrupt):当PLC发生故障时,会触发该事件;解除故障时,也会触发该事件,在该模块里面,我们可以读到故障信息。

图13 添加诊断错误事件OB块

在实验程序里,我们需要捕捉模拟量输入的溢出错误,所以需要对模拟量输入进行如下配置:

图14 添加溢出诊断功能

图15 AI通道硬件标识符

在配置硬件组态时,TIA PORTAL 将为每个硬件对象(如模块、接口或模块端口,甚至是智能设备的传输区)自动分配硬件标识符,相当于我们的身份证号码,独一无二。

图16 诊断程序

在诊断程序中,我们可以获取错误IO状态,硬件标识符和通道,并添加了STP指令。当错误发生时候,使PLC处于STOP状态,若不添加STP指令,PLC仍以RUN状态运行。

图17 诊断运行结果

通过读取IO_State,LADDR和Channel三个变量,IO状态以二进制格式显示,第4位为1,所以会出现错误。具体每个变量含义请看下图:

图18 诊断错误中断 OB 的启动信息

结束语

这期我们主要讲解TIA PORTAL 编程中一个非常重要的元素OB块,该内容不仅适合于1200,同样也适用于1500,300,400。

由于1200本身的功能限制,1200的知识点还是与其他型号有所区别。与200相比,则是程序结构分类更为精细。

(0)

相关推荐

  • SCL与STL的区别是什么?16个SCL常见问题及解答

        SCL  与 与 STL : S7-SCL 可以编译成 STL, 虽然其代码量相对于 STL 编程有所增加,但我们更关心的是程序结构和程序的总体效率.类似于计算机行业的发展,汇编语言已经被舍弃 ...

  • PLC初学者不知道什么是FC、FB、OB、DB块,一定要明白

    最近经常有初学西门子PLC编程的朋友,对于FC.FB.OB.DB块特别迷茫,一开始的时候可能很多人都会遇到类似的问题 一. 组织块,组织块是操作系统和用户程序之间的接口.OB 用于执行具体的程序,我们 ...

  • 西门子OB组织块介绍

    OB组织块 ● 什么是组织块? 组织块是操作系统和用户程序之间的接口.OB 用于执行具体的程序: 在 CPU 启动时 循环程序处理 在循环或延时时间到达时 当发生外部条件触发时 当发生故障.错误时 O ...

  • 西门子PLC编程中FB与FC的区别

    FB是功能块,带有背景数据块  FC是功能,或者说函数.FB,FC块都是子程序,它们都可以调用其它FB,FC块,也可以被OB,FB,FC块调用. FB使用背景数据块作为存储区,FC没有独立的存储区,可 ...

  • 西门子PLC S7

    大家好我是狂暴的点,今天我来分享一下TIA portal 博途编程软件中常用函数块和数据块的单间介绍. TIA 博途(TIA Portal)是西门子新推出的,面向工业自动化领域的新一代工程软件平台,主 ...

  • 西门子1200用法讲解

    很多从日系PLC或者200PLC过来的人,很不习惯于S7 1200 或者TIA PORTAL 里面的一些专业术语,比如OB,DB,FC,FB等等,其实这些术语也包含于S7 300,400 ,1500等 ...

  • 验资50万,保利翔龙天汇究竟长啥样?我去扒了扒

    前两天,房产君的老友郭胖,约我去看一个黄埔全新盘,还神秘兮兮的说,这个盘,相当的牛,要不是托了他二舅老爷的邻居的外孙女的妈妈的堂姐的关系,还看不了. 呦呵,这么神秘的,那我这个踩盘小能手,必须去会会, ...

  • 肿瘤、心脑血管疾病、痴呆、新生儿畸形……扒一扒吸烟的危害到底有多大?

    大家都知道 吸烟对"肺"不好 如果你认为吸烟只是伤肺 那可就错了 吸烟的危害可远不止于此 -- 数据显示,我国吸烟人数超过3亿,15岁及以上人群吸烟率为26.6%,其中成年男性吸烟 ...

  • 收藏 | 扒一扒西欧喷气式战斗机家族谱合辑(上)

    孙磊东/文 噔噔噔 春节前夕, 航知贴心为大家汇总了20年发过的 苏霍伊战斗机家族谱合辑 今天, 我们继续汇总西欧喷气式战机家族谱 供大家收藏! 话不多说,就在下文↓ 西欧喷气式战斗机的历史 上图中的 ...

  • 收藏 | 扒一扒西欧喷气式战斗机家族谱合辑 (下)

    孙磊东/文 18 1958年 菲亚特G.91战斗轰炸机 菲亚特公司出品,英文名称Fiat G.91,是意大利应北大西洋公约组织要求所研制的一种轻型攻击机,也是二战结束后意大利首次自行研制的亚音速喷气式 ...

  • 单月壕掷16亿,我们扒了扒B站游戏投资版图的秘密

    下个航向.文/依光流&灰信鸽去年到今年业内资本动作频繁,其中出手投资最多的三家业内厂商,便是腾讯.IGG和B站.这三家当中,B站的资本动作相对特殊一些,带着更强的平台属性.也牵动着当下年轻人市 ...

  • 扒一扒质量管理中的十个常见“误区”

    质量管理中的十个常见"误区": 01 片面依赖于事后把关 质量部门,就是单纯的质量检验部门,只有质量检验功能,而没有质量管理体系保持功能,更加没有质量改进和完善功能.质量部门只负责 ...

  • 西门子1200与300 的九大区别,你都知道吗?

    限时领取-西门子PLC全套学习资料! (点击上方红字,免费领资料) S7-1200作为新推出的紧凑型控制器,其产品定位在原有的SIMATIC S7-200和S7-300之间,它与S7-300的区别主要 ...

  • 非得从零开始学习?扒一扒强化学习的致命缺陷

    大数据文摘编译作品 作者:Andrey Kurenkov 编译:Hope.爽爽.茶西.halcyon Deepmind在Alphago上的成就把强化学习这一方法带入了人工智能的主流学习领域,[从零开始 ...