
04s7-300编程语言与指令系统01剖析.ppt
43页第4章 S7-300编程语言 与指令系统,电气控制技术与PLC应用,2,,第4章 S7-300编程语言与指令系统,4.0 概述 S7-300PLC软件分为操作系统和用户程序两部分 操作系统是由PLC的生产厂家提供的,用于支持和管理用户程序 用户程序是用户为完成特定的任务而编写的应用程序 西门子为S7-300PLC配备的编程软件——STEP73,,4.1 STEP7编程语言 STEP7是S7-300/400系列PLC应用设计软件包 标准版配有基本语言: STL(语句表) LAD(梯形图) FBD(功能块图) 专业版附加有: GRAPH(顺序功能图) SCL(结构化控制语言) HiGraph(图形编程语言) CFC(连续功能图) 不同的编程语言可供不同知识背景的人员采用 用户可选择某一种语言或几种语言混合编程4,,,1. LAD(梯形图) 梯形图是一种图形语言,形象直观,容易掌握,用户第一编程语言 梯形图类似于继电器控制电路图的表达方式 适合熟悉继电器控制电路的用户使用5,2. STL(Statement List,语句表) 语句表类似汇编语言,低级语言 语句表适合习惯汇编语言的用户使用 语句表在运行时间和存储空间有优势。
6,,,3. FBD(Function Block Diagram,功能块图) 功能块图类似于数字电路的逻辑符号 适合有数字电路基础的编程人员使用7,,,,,8,GRAPH是描述控制程序顺序行为特征的图形化编程语言 适用于顺序控制的编程 GRAPH把控制任务分成若干步,某一步转换到下一步是由条件来控制的 GRAPH易读、开发效率极高4.GRAPH(Sequential Function Chart,顺序功能图),,9,S7-SCL类似于PASCAL的高级编辑语言 用于S7-300/400和C7的编程 具有PLC公开的基本标准认证,符合IEC 1131-3 (结构化文本)标准5.SCL (Structured Control Language,结构化控制语言),,10,4.2 数据类型 一个变量需要定义名称和数据类型 数据类型决定了数据的长度、取值范围等属性 STEP 7中数据类型分为三大类: 基本数据类型 复杂数据类型 参数数据类型,,11,,4.2.1 基本数据类型 位(Bit) 数据类型为BOOL型,例I0.0、Q0.1、M0.0 长度为1位,取值True和False(或1和0) 字节(Byte) 长度为8位(Bit),无符号数,例如IB0、QB0、MB0。
取值范围为16进制00~FF(0~255) 16进制格式为B#16#0~B#16#FF 字(Word) 长度为16位、2字节(Byte),无符号数例如IW0、QW0、MW0 取值范围为16进制0000~FFFF(0~65 536) 字的起始地址必须是偶数12,,字的引用格式 2进制格式:2#0~2#1111_1111_1111_1111 16进制格式:W#16#0000~W#16#FFFF 10进制格式:B#(0,0)~B#(255,255) BCD格式:C#-999~C#999或C#0~C#999,13,,双字(Double Word) 长度为32位、双字,无符号数例如MD100 双字的起始地址必须是偶数 取值范围为16进制00000000~FFFFFFFF(0~4,294,967,295) 双字的引用 2进制格式: 2#0~2#1111_1111_1111_1111_1111_1111_1111_1111 16进制格式: W#16#0000_0000~W#16#FFFF_FFFF 十进制格式:B#(0,0,0,0)~B#(255,255,255,255),14,,字符类型(Char) 长度为1字节。
表示ASCII字符,例如“A”、“a” 整数(Int) 长度为2字节,有符号数,用补码表示 取值范围为-215~215-1 (-32,768~32,767)15,,长整数(Dint) 长度为4字节,有符号数,用补码表示 取值范围为-231~231-1(-2,147,483,648~2,147,483,647) 引用格式为L#-2147483648~L#2147483647 实数(Real) 长度为4字节,用来表示小数,例如3.14 取值范围为±1.175495E-38~±3.402823E+38 存储小,范围大,但运算费时 定时器常数(S5Time) 长度为2字节,用来设置S5时间常数 引用格式为S5T#1H_10M_10S_20MS 取值范围为S5T#0H_0M_0S_0MS~S5T#2H_46M_30S_0MS,增量为10 ms16,数据格式(16位),BCD,整数,BCD,,负数,整数,正数,+296,-413,PG,CPU,,17,数据格式(32位),,,,实数 = +1,5 * 2 126-127 = 0,75,DW#16#296,L#+296,+0.75 或 +7.5 E-1,BCD,DINT,REAL,,18,图4-1 基本数据类型说明,19,,4.2.2 复杂数据类型 是由基本数据类型组合而成,也包括长度超过32位的数据类型。
复杂数据类型有以下几种: 数组(ARRAY) 结构(STRUCT) 字符串(STRING) 日期和时间(DATE_AND_TIME) 用户定义的数据类型(UDT) 功能块类型(FB、SFB),20,,(1) 数组类型(Array) 由同一类型的数据组合在一起而形成的; 数组中的元素可以是基本或复杂数据类型中的任一数据类型(Array类型除外); 数组的维数最大6维; 数组中每一维的下标取值范围是-32768~32767; 下标的下限必须小于其上限; 例如: A[13,15,14] INT 表示三维数组; A[1,2,3]表示数组中的一个元素21,,(2) 结构类型(Struct) 由不同类型的数据组合在一起而形成的; 结构的元素可以是基本或是复杂数据类型; 结构通常用来定义一组相关的数据,例如电机的一组数据可以按如下方式定义: Motor:STRUCT Speed:INT Current:REAL END_STRUCT,22,,(3) 字符串类型(String) 由最多254个字符(CHAR)组成的一维数组; 最大长度为256字节(其中前两个字节存储字符串长度信息); 字符串常数用单引号括起来,例如‘Abcde-300F’。
23,,(4) 日期时间数据类型( Date_And_Time) 用于存储年、月、日、时、分、秒、毫秒和星期,占用8个字节,用BCD格式保存; 星期天的代码为1,星期一~六的代码为2~7 例如: DT#2004-07-16-12:30:16.200 表示2004年7月16日12时30分16.2秒24,,(5) 用户定义类型(User-Defined Data Types,UDT) 表示用户自定义的结构,当作一个数据类型“模板”,存放在UDT块中(UDT1~UDT65535); 将基本数据类型和复合数据类型组合在一起形成新的数据类型 (6) 功能块类型(FB、SFB) 只能在FB的静态变量区定义,用于实现多背景DB25,,4.2.3 参数数据类型 参数类型用于逻辑块(FB、FC)之间传递参数的数据类型主要有以下几种: (1)TIMER(定时器)和COUNTER(计数器); (2)BLOCK(块):指定一个块用作输入和输出,实参应为同类型的块; (3)POINTER:用变量的地址作为实参; (4)ANY:用于实参的数据类型未知或可以使用任何数据类型的情况 形式参数(Formal Parameter) 实际参数(Actual Parameter),26,,4.3 S7-300指令基础 4.3.1 PLC用户存储区的分类及功能 S7-300PLC的存储区分系统存储区、装载存储区和工作存储器三个基本存储区。
CPU可以读/写映像存储区来访问对应的I/O口27,S7-300 的存储器概念,,,,,注释,符号,块: • 逻辑块 (OB,FC,FB) • 数据块 (DB),,,28,装载存储器:RAM、或Flash ROM,用来储存下载来的用户程序和数据包括存储卡 工作存储器:高速RAM,用于存储运行时的程序和数据,一般指OB、FB、FC、DB等29,系统存储器:包含下面的存储器区域: 过程映象输入和输出表(PII, PIQ) 输入过程映像PII:I0.0 输出过程映像PIQ:Q8.0 位存储器(M):M0.1…… 定时器(T):T0、T1、…… 计数器(C):C0、C1、…… 数据块:数据块DBX、DBB、DBW、DBD;背景数据块DIX、DIB、DIW、DID 外设I/O区:外设输入PIB、PIW、PID,外设输出PQB、PQW、PQD,,30,保持存储器:非易失RAM,用来保存位存储器、定时器、计数器和数据块 外设I/O存储区:PI和PQ,可直接访问31,表4-2 系统存储区及其功能,32,表4-2 系统存储区及其功能(续),33,4.3.2 指令操作数 指令由操作码和操作数组成 操作码代表所要完成的具体操作 操作数就是要处理的数据,或简单的说就是被“操作的对象”。
它可以是: 数据位:输入位、输出位、存储器位 定时器/计数器:预置值、累计值 程序控制 状态字中的位 ……等等,,34,4.3.3 CPU中的寄存器 1. 累加器ACCUx: S7-300PLC有2个32位的累加器 (ACCU1、ACCU2) 用于处理位、字节、字和双字的寄存器 可以把操作数送入累加器,并经运算和处理,结果除保存在ACCU1中外,还可以传送到存储区 处理8位或16位数据时,数据存放在累加器的低端(右对齐),,35,2. 状态字寄存器(16位) 用来存储CPU执行指令时的状态; 有些指令的执行会影响到状态字中的位; 指令的执行也会受到状态字的影响; 可用位逻辑指令和字逻辑指令来访问和检测状态字图4-8 状态字的结构,,36,⑴首次检测位(FC) 若FC位的状态为0,表示一个梯形逻辑网络的开始,或指令语句为第一条指令 FC在逻辑串的开始时为“0”,在逻辑串的执行过程中为“1” 当一个逻辑串结束时(如输出或者跳转等),FC被清0 ⑵逻辑运算结果(RLO) RLO(Result of Logic Operation),用于存储位逻辑指令或比较指令的结果 ⑶状态位(STA) 状态位不能用指令检测,仅在程序测试中被CPU解释并使用。
37,⑷或位(OR) 在先“与”后“或”的逻辑运算中,暂存逻辑“与”的结果,以便进行后面的逻辑“或”运算其它指令将OR位清0 ⑸溢出位(OV) OV被置1,表示算术运算或浮点数比较指令执行时出错(溢出、非法操作、不规范格式 ) ⑹溢出状态保持位(OS) OV被置1时OS也被置1;OV被清0时OS仍保持该位用来表明先前的指令执行时是否产生过错误 ⑺条件码1(CC1)和条件码0(CC0) 用这两位来表示累加器1中产生的算术运算或逻辑运算结果与0的大小关系见表4-4、4-538,表4-4 算术运算后的CC1和CC0,表4-5 比较指令、移位指令执行后的CC1和CC0,39,⑻二进制结果位(BR) 在LAD方块指令中,BR位与ENO有对应关系,用于表示方块指令执行是否正确: 如果执行出错,BR和ENO均为0; 如果执行正确,BR和ENO位均为1 在FB和FC程序中,当功能块正确运行后使BR位为1,否则使其为0 ⑼状态9~15位未用,,40,4.3.4 寻址方式 在STEP 7中,操作数可以是常数、状态位、各寄存器、数据块(DB)、功能块(FB和FC)、系统功能块(SFB和SFC)以及各存储区中的单元。
寻址方式就是指令执行时获取操作数的方式 S7-300有4种寻址方式: 立即寻址 存储。












