导读:
     程序采用结构化程序,把程序分成多个模块,各模块完成相应的功能。结合起来就能实现一个复杂的控制系统。就像高级语言一样,用子程序实现特定的功能,再通过主程序调用各子程序,从而能实现复杂的程序。
在S7-300/400PLC中写在OB1模块里和程序就是主程序,子程序写在功能(FC),功能块(FB)。
      ① FC运行是产生临时变量执行结束后数据就丢失-----不具有储存功能
      ② FB运行时需要调用各种参数,于是就产生了背景数据块DB。例如用FB41来作PID控制,则它的PID控制参数就要存在DB里面。FB具有储存功能
      ③ 系统功能块(SFB)和系统功能(SFC)也是相当于子程序,只不过SFB和SFC是集成在S7 CPU中的功能块,用户能直接调用不需自已写程序。
      ④ SFC与FC不具有储存功能,FB和SFB具有储存功能。
      ⑤ OB模块相当于子程序,负责调用其他模块。如果程序简单只需要OB就可以实现。
用西门子plc编程时,可以用到功能块FB和功能FC(FB、FC都是组织块)资料上说FB与FC都可以作为用户编写的子程序,但两者是有一定区别的,在使用时应注意。
     FB--功能块,带背景数据块 
     FC--功能,相当于函数 
     他们之间的主要区别是:FC使用的是共享数据块,FB使用的是背景数据块。
     举个例子,如果您要对3个参数相同的电机进行控制,那么只需要使用FB编程外加3个背景数据块就可以了,但是,如果您使用FC,那么您需要不断的修改共享数据块,否则会导致数据丢失。FB确保了3个电机的参数互不干扰。
      FB,FC本质都是一样的,都相当于子程序,可以被其他程序调用(也可以调用其他子程序)。他们的最大区别是,FB与DB配合使用,DB中保存着FB使用的数据,即使FB退出后也会一直保留。FC就没有一个永久的数据块来存放数据,只在运行期间会被分配一个临时的数据区。
在实际编程中,是使用FB还是FC,要看实际的需要决定。
      FB与FC没有太大的差别,FB带有背景数据块,而FC没有。所以FB带上不同的数据块,就可以带上不同的参数值。这样就可以用同一FB和不同的背景数据块,被多个对象调用。FC和FB像C中的函数,只不过FB可以生成静态变量,在下次函数调用时数据可以保留,而FC的变量只在调用期内有效,下次调用又重新更换。
      这是一般的理解;FB需要背景数据块,而FC是没有的;参数的传递方式不同,FB的输入输出对应着背景数据块地址,而FC的输入输出是没有实际地址对应的,只有的程序调用时,才会和实际的地址产生对应关系。FB参数传递的是数据,FC参数传递的是数据的地址。
      FB(功能块)的处理方式是围绕着数据块处理数据,他的入口参数和出口参数都是数据块里的数据,以及STAT的数据都是数据块里,入口参数和出口参数、STAT可以认为是静态数据,这些数据不会因为函数消失而逝去,他会一直保存在数据块里。FB里的变量与他的背景数据块是一一对应的,而他的对应并不是一层不变的。
      更确切的说,FB里的变量在调用时将根据AR2的值当作偏移量与背景数据块是一一对应。如果一个FB功能块里没有入口参数、出口参数及STAT数据,他将不需要背景数据块,这时的FB和没有入口出口参数的FC就没有什么区别了,就只能使用临时变量和全局变量了。
      用很多人认为,FB的背景数据块必须由FB生成、FB里的第一个变量对应着背景数据块的第一个变量,还有就是由FB生成的数据块只能作为FB的背景数据块使用。其实这些理解是错误的,FB的背景数据块不一定是通过FB生成的,可以像生成共享数据块一样生成FB的背景数据块。
  
      换句话说,普通的数据块也可以作为FB的背景数据块,不过这种做法是有一定前提的,就是这个数据块的字节数必须大于等于FB所需的字节数,如果小于FB所需的字节数时,FB访问到超出背景数据块的变量时就会找不到变量的地址,肯定会出错了。FB里的第一个变量对应可以对应数据块字节数减去FB所需背景数据块字节数里的任意位置的变量。

西门子PLC中OB、FC、FB、SFC、SFB的区别是什么?相关推荐

  1. 西门子1200PLC中OB,FC,FB,DB

    1.基础知识 临时变量:存储在L堆栈中,块执行结束后,变量消失: 静态变量:存储在背景数据块中,块调用结束后,变量被保留: (1)OB组织块 OB1(MAIN)主程序块 OB100:上电初始化,PLC ...

  2. scl语言用plc脉冲做定时器_西门子PLC中使用SCL语言编程的技巧

    中使用 SCL 语言编程的技巧 前言:两年半前我就在工控网上发表了有关 SCL 编程的知识 << 在 S7300400 型 PLC 中使用高级语言编程 >>, 但发表完 后,即 ...

  3. 西门子PLC中DB与DI有什么区别

    数据块用来存放用户程序使用的共享数据,DBX是数据块中的数据位,DBB.DBW和DBD分别是数据块中的数 据字节.数据字和数据双字. 背景数据块用来为FB(功能块)提供参数,DIX是背景数据块中的数据 ...

  4. .net通过S7.net读写西门子PLC中,字符串,bool,整数,小数及byte型

    注:.net中通过TCP/IP方式通过S7.net.dll动态库,连接到西门子PLC,西门子程序中许勾选优化块,程序读取需要 db块号+偏移量 一.使用VS项目,在项目中添加S7.net动态库 代码中 ...

  5. 西门子PLC中的累加器 ACCU1/2的个人理解

    在1500的PLC中使用STL编程时,产生了关于累加器的一个疑问. 如果使用L指令连续加载两个值,然后再进行加法操作,那么ACCU1中就存储了刚刚L加载的两个值,然后再将刚刚加载的两个值进行加法操作. ...

  6. 西门子PLC中STL语言状态字

    其含义分别为:二进制结果位(BR).组合状态位(CC1.CC0).溢出状态保持e799bee5baa631333365646261位(OS).溢出位(OV).域值位(OR).状态位(STA).逻辑操作 ...

  7. c语言怎么读取西门子plc数据,怎样读取西门子PLC中的程序

    使用上载功能即可 上载(又称上传)是将CPU装载存储器中的程序复制到编程器或PC的硬盘中. 下面几种方法可以实现程序的上载: 在SIMATIC管理器中,执行菜单PLC/Upload Station t ...

  8. 西门子PLC中的高地址,低字节如何理解?

    首先分析MD10这个32位双子存储器的组成:MD拆分开来由MW10与MW12这两个字组成.而MW10与MW12拆分开来由MB10,MB11,MB12,MB13. 那么MD10这个32位寄存器数据位是如 ...

  9. Softing dataFEED OPC Suite将西门子PLC数据存储到Oracle数据库中

    一 背景 现代工业产品不仅生产批量大,而且过程自动化程度高,这对于用户追溯产品设计与制造过程中产生的数据而言,无疑是个新的挑战.与此同时,制造商们对产品制造过程中产生的大量工艺数据也愈发重视,并不断寻 ...

最新文章

  1. Linux下udp程序怎么运行,Linux下UDP的连接程序示例(阻塞、非阻塞)
  2. android判断以太网还是wifi,对比平台--WiFi和以太网之间的区别
  3. C#: 旋转图片到正确位置
  4. placement new--《C++必知必会》 条款35
  5. 计算机专业核心技术,计算机系多媒体核心技术实验室建设专业方案(10页)-原创力文档...
  6. html页面设置不可点击事件,css怎么设置div不可点击?
  7. 从Mysql slave system lock延迟说开去
  8. [js] 写一个方法实现promise失败后自动重试
  9. 数据行业工作3年,我靠这7个能力,成为领导青睐的高级数据分析师
  10. 互联网java面试_互联网java面试宝典
  11. ★LeetCode(942)——增减字符串匹配(JavaScript)
  12. 129个百度网盘资源搜索网站大全(建议收藏)
  13. Python实现多个Excel文件合并到一个文件中
  14. MSSQL父子关系表的SQL查询(SQL Query for Parent Child Relationship)
  15. 皮尔森相关系数的python实现_深入理解皮尔逊相关系数python代码
  16. C# dataGridView中插入excel表格
  17. 会计科目类词汇(中英)
  18. scratch项目:自制电子乐器(Scratch声音类积木的应用/scratch的声音魔法)
  19. Git与bitbucket简单使用
  20. 华为鸿蒙HarmonyOS,华为鸿蒙HarmonyOS 2.0

热门文章

  1. 细数Xcode 6 给我们带来的新特性
  2. unity 画球面_unity中实现Mesh画球体、半球体、四分之一球体以及任意弧面
  3. 弹窗Modal实现和有滚动条偏移解决方法。
  4. NVIDIA Jetson TX2 简单介绍
  5. NOTES常见问题及解决方法
  6. table合并单元格
  7. 完全用linux工作,放弃windows
  8. node.js -redis -bull
  9. 亚马逊云、阿里云、腾讯云三国鼎立-横向对比
  10. P3223 [HNOI2012]排队(高中排列组合)