西门子S7-1200CPU运行机制探讨

分享到:
569
下一篇 >

  斑竹:

  S7-1200 PLC是西门子全集成自动化(Totally Integrated Automation,TIA)的重要组成部分,它和S7-1500一起,构成了西门子自动化系统PLC控制器的两大支柱。S7-1200 控制器使用灵活、功能强大,可用于控制各种各样的设备以满足您的自动化需求。设计紧凑、组态灵活、功能强大的指令集等特点也使它成为控制各种应用的**解决方案。

  本次话题我们从S7-1200 CPU的运行机制入手,结合它的工程平台TIA Portal,在以下知识点进行讨论,欢迎各位网友参与,积极发表看法或意见,并分享您对S7-1200的使用经验和心得体会。

  1、CPU的工作模式

  2、CPU的扫描机制

  3、事件与中断

  4、存储区及寻址

  5、数据类型

  6、CPU的诊断机制

  我们推荐西门子下载中心的以下资料供大家参考:

  1、操作指南:西门子 S7-1200 PLC 技术参考 V2.7

  2、SIMATIC S7 S7-1200 可编程控制器系统手册

  3、SIMATIC S7-1200 入门手册

  4、S7-1200 的启动是如何工作的?

  5、TIA Portal 在线帮助

  游侠:

  TIA Portal 软件要是能够在线更新就更好了

  符号寻址比以前方便了很多,当是和HMI设备连接,在PLC上更改了程序,重新下载程序会出现HMI部分变量寻址错误。

  奇侠:

  S7-1200与S7-200和S7-300/400启动过程的区别

  1)S7-200和S7-300/400可以用CPU上的模式转换开关来切换STOP/RUN模式,而S7-1200没有,只能用STEP 7来启停CPU。

  在调试 阶段选择默认的启动模式 "暖启动 - 掉电前操作模式",可防止电源恢复时CPU自动进入运行模式,造成设备误启动的风险。

  调试好后,设置启动模式为 "暖启动 – 运行",上电后不需要软件就自动进入运行模式。

  2)S7-300/400上电后只能调用一个启动OB,例如OB100,S7-1200可以调用多个启动OB。

  3)S7-300/400启动时放弃中断,S7-1200在整个启动阶段将中断事件保存到队列,以便在RUN模式进行处理。

  游侠:

  功能太繁琐,界面不适合笔记本操作。特别是在线和下载程序时弹出对话框太多,很麻烦。感觉没有step7好用。*大的一点时,装完后要26G,并且打开软件时间很长。总之……

  软件太大了!运行时好缓慢,我8G内存的电脑都这么慢;软件界面太复杂,窗口太多了。库程序有点问题,*后只能自己编程,才解决问题,应该尽快解决配套的库程序等。

  斑竹:

  以上大多数发言没有涉及主题,我建议大家要围绕主题进行讨论

  奇侠:

  S7-1200和S7-1500指令的比较

  下图是博途中的STEP7 V12帮助中的指令概览。可以看出,S7-1200和S7-1500的指令是兼容的,S7-1200的指令是S7-1500的指令的子集。可以认为S7-1200是精简版的S7-1500。如果暂时没有条件使用S7-1500,可以先使用S7-1200,为今后使用S7-1500打下基础。

  1.可用的编程语言

  S7-1500和S7-1200都能使用梯形图(LAD)、功能块图(FBD)和结构化控制语言(SCL)语言。为了和S7-300/400兼容,S7-1500还可以使用STL语言。

  2.指令的比较

  1)S7-1500的基本指令比S7-1200多9条指令。

  2)扩展指令中只有S7-1500有PROFIenergy(使用 PROFINET 进行能源管理)指令。此外S7-1500比S7-1200多11条指令。

  3)“技术”类指令S7-1500比S7-1200多5条高速计数器指令。

  4)“通信”类指令S7-1200比S7-1500多3条发送电子邮件的指令。


  S7-1200的间接寻址

  S7-1200梯形图中的间接寻址需要通过数组和指令来实现。

  使用指令FieldRead (通过索引变量从数组中读取数值) 和FieldWrite (通过索引变量向数组中写数值),可以实现间接寻址。这两条指令在基本指令的“移动操作”文件夹中。

  在全局数据块“数据块2”中生成名为“数组1”的数组Array[0..5] of Int,其元素的数据类型为Int,元素的下标为0~5。间接寻址的程序见下图。

  点击生成的指令框中的“??”,用下拉式列表设置要写入或读取的数据类型为Int。两条指令的参数MEMBER的实参必须是数组的**个元素,例如本例中的“数据块2”.数组1[0]。

  改变输入参数INDEX(下标)的值,可以读、写不同的数组元素。

  SCL没有FieldRead和FieldWrite指令,但是支持通过变量对数组进行间接寻址,例如

  #Tag_1 := "数据块1".数组1[#Index];

  这种表达方式有点像S7-300/400,但是仍然要通过数组来进行间接寻址。

  S7-1200的数组元素几乎可以使用所有的基本数据类型(包括Bool),所以S7-1200的间接寻址的功能是很强的。其他小型PLC(例如S7-200)的间接寻址不能对数据类型为bool的变量间接寻址。


  游士:

  我们首先从CPU的工作模式谈起。S7-1200和S7-300/400类似,有以下三种工作模式: STOP 模式、 STARTUP 模式和 RUN 模式。CPU 前面的状态 LED 指示当 前工作模式。

  ● 在 STOP 模式下,CPU 不执行程序。 您可以下载项目。

  ● 在 STARTUP 模式下,执行一次启动 OB(如果存在)。 在 STARTUP 模式下不处理任何中断事件。

  ● 在 RUN 模式下会重复执行程序循环 OB。 在 RUN 模式中的任何时刻都可能发生中断事件并对其进行处理。

  下面我们提出以下几个问题,供各位网友讨论?

  (1)对S7-1200下载(软件、硬件)时,什么情况下必须要切换到STOP模式才能完成?

  (2)在STARTUP模式下访问模块的输入和输出有什么区别?访问过程映像输入区和直接访问I/O输入点有什么区别?

  (3)通过暖启动如何影响非保持性和保持性存储区?

  游民:

  更改硬件配置后下载,TIA Portal会提示必须将CPU切换到STOP模式才可以下载。

  奇侠:

  S7-1200与S7-300/400的数据类型

  从下表可以看出,S7-1200比S7-300/400的基本数据类型种类更多。增加了短整数和3种无符号整数,增加了高精度的双精度浮点数,日期和时间值**到纳秒。


  奇侠:

  S7-1200基本数据类型之外的数据类型

  1.数组

  数组是具有相同数据类型的元素的组合。例如Array[0..39] of Int。可以使用1维~6维的数组。

  2.PLC数据类型

  PLC数据类型实际上就是S7-300/400的用户定义的数据类型(UDT)。它用来定义可以在程序中多次使用的数据结构。

  3.结构

  结构(STRUCT)是用来定义包含其他数据类型的数据结构。结构的元素可以是数组或结构,*多可以嵌套8层。

  4.指针

  指针数据类型(Pointer、Any 和 Variant)可用于FB和FC代码块的块接口表中。

  5.参数类型

  仅有VOID,表示输出不需要任何返回值。S7-300/400的参数类型比S7-1200多得多。

  6.系统数据类型

  系统数据类型具有不能更改的不同的数据结构,只能用于某些特定的指令。例如IEC_TIMER等。

  7.硬件数据类型

  硬件数据类型用于识别硬件部件。硬件数据类型常数用来作指令的参数。例如硬件数据类型HW_HSC用于在CTRL_HSC指令中识别高速计数器。

  对S7-1200程序仿真的方法

  S7-1200的程序至今不能仿真。我在8楼讲过S7-1200和S7-1500的基本指令和扩展指令是兼容的,S7-1200的指令是S7-1500的指令的子集。通信类指令中大部分二者可以公用。所以大多数情况可以用S7-1500的仿真软件PLCSIM来对S7-1200的程序仿真。我做过测试,这个方法是可行的。

  游侠:

  S7-1200 做 DP Master 通讯时,DP slave 丢失后,CPU不会停机,也不需要向 CPU 下载组织块

  准诊断数据读取方法:

  在主程序OB1 调用S7-1200“扩展指令/分布式I/O/其它”的 DPNRM_DG指令。单击块参数 LADDR,将在下拉列表中选择DP从站诊断地址,读取的诊断数据存放在DB4 中。

  侠圣:

  用了一段时间的1200,优点很多,但是感觉有以下几个问题:

  1.指针功能差,就是摆设。相信TIA和西门子会完善,想想现在,我在FOR循环中跨越DB块读写数据多麻烦,PEEK,POKE用起来胆战心惊的。DB[i].arryName[j](怪怪的啊,又是符号又是**DB号的)如果可以这样寻址该不错吧.

  2.PLC变量不合理,我在M区定义PLC变量指定变量名和数据类型还不行啊,非得让我指定**地址啊?!(为了让同样的变量放一块,前面插个变量后面的地址全部往后挪,神啊,好累。)万一我在程序中用了**地址,更累!)希望能像可**寻址的DB一样,编译时自己分配。

  总之,寻址问题多多考虑吧,否则,我们只能谢谢你们的复制和粘贴了。

  FB FC给个名字还要给个编号(多余了吧,没见过C语言给函数编号啊),内部机制非得要编号你们编译时自己偷偷摸摸给个号就行了啊,别让我们看到,每次纠结给FC编号,排整齐(强迫症,就算是,不止我有吧)。

  不说了,不然成怨妇了。要更多问题我有的是。

  奇侠:

  S7-1200/1500指令的优点

  1)指令功能强大,完整。例如浮点数指令包含了所有的基本函数,用它们能生成所有的函数。而有的小型PLC缺少一些基本函数,例如S7-200没有反三角函数。

  与S7-200相比,位逻辑指令增加了取反线圈指令,边沿检测指令增加到6条。S7-200的S、R指令需要输入**作的地址连续的位数,实际上绝大多数情况只对一位置位或复位。S7-1200分为只对一位和对位域(多位)置位复位的4条指令,简化了操作。

  采用比较触点,比S7-300的方框比较指令紧凑,易于理解,形象直观。

  可以用CALCULATE指令通过书写公式实现复杂的数**算。

  加法、乘法可以通过添加输入参数实现多个数的连加和连乘。

  2)指令分类合理。分为基本、扩展、工艺(计数、PID、运动控制)、通信4大类。所有的数**算指令合并为数学函数类。

  在老版STEP7中,S7-300/400的很多常用的指令放在库里,用起来不太方便。博途已将S7-300/400指令库里一些常用的指令归到基本指令和扩展指令了。

  3)通过在指令中设置数据类型,将大量的指令合并为一条指令。效果*为明显的是转换指令CONVERT(见下图),被转换数的数据类型有12种,每种可以转换为数种数据类型,相当于好几十条指令。








你可能感兴趣: 工控菜鸟园 图片 自动化系统 S7-1200
无觅相关文章插件,快速提升流量