(1) S7程序的组成。作为计算机控制系统的一种,PLC与其他计算机控制系统一样,从本质上说,PLC 用户程序同样都是由各种指令所组成的集合,只不过是当采用不同编程语言时,指令的表现形式有所不同而已。
S7系列PLC的用户程序的组成如图3-6所示。程序由不同的逻辑块(OB、FC、FB、SFB、SFC)与数据块(DB)所组成,数据块DB是用于存储程序数据的存储单元,逻辑块则是程序的构成主体。在S7程序中,逻辑块由多个网络(Network)组成,而指令则是组成网络的基本元素。
图3-6 S7系列PLC的用户程序的组成
(2) 逻辑块(Logie Block)。逻辑块是指为了实现控制对象中某一部分功能而设计的、相对独立的指令集合。在不同PLC中可以使用的逻辑块种类与数量是不同的。如对S7-200 PLC,可以使用的逻辑块为主程序(组织 OB1)、子程序(SBRn)、中断程序(INRn)与数据块DBI,DBI的数据存储需要通过变量寄存器V 实现;而对S7-300/400PLC,可以使用的逻辑块包括组织块(OBn)、程序块(FCn)、功能块(FBn)、系统程序块(SFCn)、系统功能块(SFBn)等多种,并可以使用数据块(DBn)。
(3) 网络(Network)。逻辑块中功能相对独立的程序段称为网络。在S7系列PLC中,为了对程序进行逐段注释,引入了”网络”这一概念作为基本的注释单位。网络具有一定的编号,编号通常由编辑软件自动生成。
在S7系列PLC中,网络有规定的格式要求。例如,网络一般应以直接连接在梯形图”主母线”的触点作为起始,因此,即使实际并不需要触点信号,为了满足格式的要求,也要在编程时插入恒定为”1”状态的触点(如SMO.0)作为起始。再如,当网络中直接连接于”主母线”的触点多于1个时,原则上每一网络只能有一个线圈输出,为此,对于需要多个线圈在同一网络中的情况,应通过恒定为”1”状态的触点(如SM0.0)将其转化为多个线圈输出。
当PLC采用指令表进行编程时,如果仅仅从编程的度考虑,完全可以不划分网络,但这样的程序一般不能转换为梯形图。因此,为了转换的路要,在指令表编程时同样应插入”网络(Network)”这一关键词。
(4)指令。指令是组成PLC用户程序的基本组成元素,编程的实质是运用编程语言进行各类指令的编写过程。
在不同的PLC上,指令都有规定的格式与要求,指令的功能也不尽相同,因此,熟悉指令并能够熟练使用各种指令是每一个PLC使用者必须掌握的基本内容和应具备的基本功。
PLC的指令多种多样,有基本逻辑运算指令、数据比较指令、格式转换指令、数学运算指令、功能指令等,而且对于不同的PLC具有不同的要求。
S7指令的格式
(1) S7的指令格式。在PLC积序中,指令由操作码与操作数两部分组成,如图3-7所示。
指令中的操作码用来定义CPU需要执行的操作;操作数用来定义操作对象。通俗地说操作码告诉CPU要做什么,而操作数则告诉CPU 用什么去做。
图3-7 指令格式
PLC的操作码又称为指令代码,它由英文字母或者字符组成,如”LD”、”A”、”O”、”=”等都是指令代码。
PLC的操作数又称为操作对象,在S7中,可以通过”地址”或”数据”两种形式来定义操作对象,其中,地址又可以分为”**地址”与”符号地址”两种;数据包括”基本数据”、”复合数据”与”参数”三类。
(2)**地址与符号地址。当操作对象通过”地址”定义时,可以使用”**地址(Memory address)”与”符号地址(Symbol address)”两种*方式。
在PLC程序中使用”符号地址”可以方便PLC程序编辑、阅读、检查,但它只能在编程器中使用,并需要编制专门的注释文件(如符号表、变量声明表等)。
**地址是实际PLC中能够接受的地址,不管在编程时是否使用符号地址,CPU中存储的只能是**地址。因此,当使用编程器对某一PLC内部的程序进行读出操作时,只能输出**。
使用**地址与符号地址编程的程序如图3-8、图3-9所示。
图3-8 使用**地址编程的程序
图3-9 使用符号地址编程的程序
浔之漫智控技术(上海)有限公司专注于西门子等