760 likes | 898 Views
模块三之任务一 编程基础知识. 包头轻工职业技术学院 任课教师 : 张晓晖. 编程基础知识. 学习目标: 学会 PLC 的编程语言与程序结构 数据在存储器中存取方式 CPU 的存储区域 指令寻址方式. 一、 PLC 的编程语言与程序结构. 1 PLC 的编程语言 2 S7-200 的程序结构 3 编程的一般规约. 1 编程语言.
E N D
模块三之任务一编程基础知识 包头轻工职业技术学院 任课教师:张晓晖
编程基础知识 学习目标: 学会 • PLC的编程语言与程序结构 • 数据在存储器中存取方式 • CPU的存储区域 • 指令寻址方式
一、 PLC的编程语言与程序结构 • 1 PLC的编程语言 • 2 S7-200的程序结构 • 3 编程的一般规约
1 编程语言 PLC中的程序由两部分组成,一是操作系统;二是应用程序。操作系统由PLC的生产厂家提供;用户程序是用户为完成特定的控制任务而编写的应用程序。 要开发应用程序,就要用到PLC操作系统提供的编程语言,STEP 7标准软件包是西门子公司为S7-200系列PLC开发的系统程序。他提供了非常丰富编程语言,有十几种,我们主要讲其中三种常用的语言,LD(梯形图语言)、STL(语句表语言)、FDB(功能图语言)。
1)梯形图(LD)语言 梯形图程序设计语言是最常用的一种程序设计语言。它来源于继电器逻辑控制系统的描述。在工业过程控制领域,电气技术人员对继电器逻辑控制技术较为熟悉,因此,由这种逻辑控制技术发展而来的梯形图受到了欢迎,并得到了广泛的应用。梯形图与操作原理图相对应,具有直观性和对应性;与原有的继电器逻辑控制技术的不同点是,梯形图中的能流(Power Fl№ow)不是实际意义的电流,内部的继电器也不是实际存在的继电器,因此,应用时,需与原有继电器逻辑控制技术的有关概念区别对待。
电器控制图 PLC梯形图 类似于电器控制图的一种图形语言。它沿用 了继电器、触点、串并联等术评语,使用的图形 符号,也类似于电器控制符号。通常各厂家都把梯 形图语言作为各型号PLC的第一语言。
PLC梯形图语言的编程原则 • 1、梯形图由多个梯级组成,每个线圈可构成一个梯级, 每个梯级有多条支路,每个梯级代表一个逻辑方程; • 2、梯形图中的继电器继电器、接点、线圈不是物理的, 是PLC存储器中的位(1=ON;0=OFF);编程时常开/ 常闭接点可无限次引用,线圈输出只能是一次; • 3、梯形图中流过的不是物理电流而是“概念电流”,只 能从左向右流; • 4、用户程序的运算是根据PLC的输入/输出映象寄存器中 的内容,逻辑运算结果可以立即被后面的程序使用; • 5、PLC的内部继电器不能做控制用,只能存放逻辑控制 的中间状态; • 6、输出线圈不能直接驱动现场的执行元件,通过I/O模 块上的功率器件来驱动。
2)语句表(STL)语言 是用助记符来表达PLC控制功能的一种语言。它类是于计算机的汇编语言,但比汇编语言直观、易懂、易编程。一般与梯形图配合使用,互为补充。目前大多数PLC都有语句表功能,不过不同厂家生产的PLC语句表所用的助记符互不相同。 语句表 PLC梯形图
3)功能块图(FBD)语言 是用数字电路的逻辑框图来表达PLC控制功能的一种语言。框图的符号与连接关系表达了PLC的功能。 功能块图语言 PLC梯形图
功能块图程序设计语言是采用逻辑门电路的编程语言,有数字电路基础的人很容易掌握。功能块图指令由输入、输出段及逻辑关系函数组成。用STEP7-Micro/Win32编程软件将梯形图转换为FBD程序,方框的左侧为逻辑运算的输入变量,右侧为输出变量,输入输出端的小圆圈表示“非”运算,信号自左向右流动。功能块图程序设计语言是采用逻辑门电路的编程语言,有数字电路基础的人很容易掌握。功能块图指令由输入、输出段及逻辑关系函数组成。用STEP7-Micro/Win32编程软件将梯形图转换为FBD程序,方框的左侧为逻辑运算的输入变量,右侧为输出变量,输入输出端的小圆圈表示“非”运算,信号自左向右流动。
4) 顺序功能流程图(Sequential Function Chart) 顺序功能流程图程序设计是近年来发展起来的一种程序设计。采用顺序功能流程图的描述,控制系统被分为若干个子系统,从功能入手,使系统的操作具有明确的含义,便于设计人员和操作人员设计思想的沟通,便于程序的分工设计和检查调试。顺序功能流程图的主要元素是步、转移、转移条件和动作。
顺序功能流程图程序设计的特点是 • 以功能为主线,条理清楚, 便于对程序操作的理解和沟通 • 对大型的程序,可分工设计,采用较为灵活的程序结构,可节省程序设计时间和调试时间 • 常用于系统的规模校大,程序关系较复杂的场合 • 只有在活动步的命令和操作被 执行后,才对活动步后的转换 进行扫描,因此,整个程序的 扫描时间要大大缩短
5) 结构文本(ST) 结构文本(ST)是为IECll31—3标准创建的一种专用的高级编程语言。与梯形图相比,它能实现复杂的数学运算,编写的程序非常简洁和紧凑。
2 S7-200的程序结构 S7-200CPU的控制程序包括三部分: 主程序: OB1是程序的主体,每个项目必须有只 且有一个。可调用子程序和终中断程序 子程序:一个可选指令的集合,在被其他程序调 用时执行 中断程序:指令的一个可选集合,中断事件发生 时被操作系统调用
3 编程的一般规约 1)网络 在梯形图(LAD)中,程序被分成称为网络的一些程序段。每个梯形图网络是由一个或多个梯级组成。 功能块图(FBD)中,使用网络概念给程序分段。 语句表(STL)程序中,使用“NETWORK'’这个关键词对程序分段。 对梯形图、功能块图、语句表程序分段后,就可通过编程软件实现它们之间的相互转换。
2)梯形图(LAD)/功能块图(FBD) 梯形图中左、右垂直线称为左、右母线。 STEP7-Micro/WIN32梯形图编辑器在绘图时,通常将右母线省略。在左、右母线之间是由触点、线圈或功能框组合的有序排列。梯形图的输入总是在图形的左边,输出总是在图形的右边,因而触点与左母线相连,线圈或功能框终止右母线,从而构成一个梯级。在一个梯级中,左、右母线之间是一个完整的“电路”,不允许“短路”、“开路”,也不允许“能流”反向流动。 功能块图中输入总是在框图的左边,输出总是在框图的右边。
3)允许输入端、允许输出端 在梯形图(LAD)、功能块图(FBD)中,功能框的EN端是允许输入端,功能框的允许输入端必须存在“能流”,才能执行该功能框的功能。 在语句表(STL)程序中没有EN允许输入端,但是允许执行STL指令的条件是栈顶的值必须是“1”。 在梯形图(LAD)、功能块图(FBD)中,功能框的ENO端是允许输出端,允许功能框的布尔量输出。用于指令的级联。 如果功能框允许输入端(EN)存在“能流”,且功能框准确无误地执行了其功能,那么允许输出端(ENO)将把“能流”传到下一个功能框,此时,ENO=I。如果执行过程中存在错误,那么“能流”就在出现错误的功能框终止,即ENO=0。 在语句表(STL)程序中用AENO(ANDENO)指令访问,可以产生与功能框的允许输出端(ENO)相同的效果。
4)条件输入、无条件输入 条件输入:在梯形图(LAD)、功能块图(FBD)中,与“能 流”有关的功能框或线圈不直接与左母线连 接。 无条件输入:在梯形图(LAD)、功能块图(FBD)中,与 “能流”无关的线圈或功能框直接与左母 线连接。例如LBL、NEXT、SCR、SCRE 等。
5)无允许输出端的指令 在梯形图(LAD)、功能块图(FBD)中,无允许输出端(ENO)的指令方框,不能用于级联。如CALLSBR N(N1,…)子程序调用指令和LBL、SCR等。
二、数据在存储器中存取方式 1、数据长度 在计算机中使用的都是二进制数,其最基本的存储单位是位(bit),8位二进制数组成1个字节(Byte),其中的第0位为最低位(LSB),第7位为最高位(MSB),两个字节(16位)组成1个字(Word),两个字(32位)组成1个双字(Double word),把位、字节、字和双字占用的连续位数称为长度。
2 存储器的数据类型 S7-200系列PLC的数据类型可以是字符串、布尔型(0或1)、整数型和实数型(浮点数)。布尔型数据指字节型无符号整数;整数型数包括16位符号整数(INT)和32位符号整数(DINT)。实数型数据采用32位单精度数来表示。数据类型、长度及数据范围如表2-7所示。
3 用一位二进制数表示开关量 二进制数的“位”只有 0和1两种的取值,开关量(或数字量)也只有两种不同的状态,如触点的断开和接通,线圈的失电和得电等。在S7-200梯型图中,可用“位”描述它们,如果该位为1则表示对应的线圈为得电状态,触点为转换状态(常开触点闭合、常闭触点断开);如果该位为0,则表示对应线圈,触点的状态与前者相反。
4 多位二进制数 可以用多位二进制数表示数据。 二进制数遵循“逢2进1”的运算规则,每一位都有一个固定的权值,从右往左的第n位(最低位为0位)的权值为2n,第3位至第0位的权值分别为8,4,2,1,所以二进制数又称为8421码。
5 十六进制数 十六进制数的16位数字分别用0-9和A-F来表示,遵循“逢16进1”的运算规则,每一位都有一个固定的权值,从右往左的第n位(最低位为0位)的权值为16n,十六进制数可以用数字后面加“H”来表示。例2FH。
6 常数 在编程中经常会使用常数。常数数据长度可为字节、字和双字,在机器内部的数据都以二进制存储,但常数的书写可以用二进制、十进制、十六进制、ASCII码或浮点数(实数)等多种形式。几种常数形式分别如表3.9所示。
7 负数 PLC一般用二进制补码来表示有符号数,其最高位为符号位,最高位为0时为正数,为1时为负数,最大的16位正数为16#7FFF(即32 767)。正数的补码是它本身,将正数的补码逐位取反后加1,得到绝对值与它相同的负数的补码。将负数的补码的各位求反后加1,便得到了它的绝对值。例如十进制数35对应的二进制补码为0010 0011,十进制数-35对应的二进制数补码为1101 1101。
8 BCD码 BCD是二进制编码的十进制数的缩写。 BCD码用4位二进制数的组合来表示一位十进制数。 BCD码常用于输入输出设备。
三、 CPU的存储区域 PLC存储区域分三个区:程序区、系统区、 数据区。 程序区:存放应用程序,存储器为EEPROM。 系统区:存放PLC配置结构的参数,如PLC主机及扩展机的I/O配置和地址等,存储器为EEPROM。 数据区:存放应用程序执行过程中所需的数据,存储器为EEPROM和RAM,RAM是EEPROM的备份。数据区又根据存放的数据类型分为若干存储区域。如下:常用数据区域。
1常用数据存储区 S7-200系列PLC的数据存储区按存储数据的长短可划分为字节存储器、字存储器和双字存储器3大类。 字节存储器有7个:I 输入映像寄存器区 Q 输出映像寄存器区 V 变量存储器区 M 内部标位寄存器区 SM 特殊标志位存储区 S 顺序控制继电器存区 L 局部存储器区 字存储器有4个: T 定时器存储器区 C 计数器存储器区 AI 模拟量存储器区 AQ 模拟量存储器区 双字存储器有2个:AC 累加器存储器区 HC 高速计数器存储器区
2 S7-200数据存储区及元件的功能 1)输入映像寄存器I(输入继电器) (1)输入映像寄存器的工作原理 输入继电器是PLC用来接收用户设备输入信号的接口。PLC中的“继电器”与继电器控制系统中的继电器有本质性的差别,是“软继电器”,它实质是存储单元。每一个“输入继电器”线圈都与相应的PLC输入端相连(如“输入继电器”I0.0的线圈与PLC的输入端子0.0相连),当外部开关信号闭合,则“输入继电器的线圈”得电,在程序中其常开触点闭合,常闭触点断开。由于存储单元可以无限次的读取,所以有无数对常开、常闭触点供编程时使用。编程时应注意,“输入继电器”的线圈只能有外部信号来驱动,不能在程序内部用指令来驱动,因此,在用户编制的梯形图中只应出现“输入继电器”的触点,而不应出现“输入继电器”的线圈。
(2)输入映像寄存器的地址分配 S7-200输入映像寄存器区域有IB0 ~IB15共16个字节的存储单元。系统对输入映像寄存器是以字节(8位)为单位进行地址分配的。输入映像寄存器可以按位进行操作,每一位对应一个数字量的输入点。如CPU224的基本单元输入为14点,需占用2×8=16位,即占用IB0和IB1两个字节。而I1.6、I1.7因没有实际输入而未使用,用户程序中不可使用。但如果整个字节未使用如IB3~IB15,则可作为内部标志位(M)使用。 输入继电器可采用位,字节,字或双字来存取。输入继电器位存取的地址编号范围为I0.0 ~I15.7。
2)输出映像寄存器 (1)工作原理 “输出继电器”是用来将输出信号传送到负载的接口,每一个“输出继电器”线圈都与相应的PLC输出相连,并有无数对常开和常闭触点供编程时使用。除此之外,还有一对常开触点与相应PLC输出端相连(如输出继电器Q0.0有一对常开触点与PLC输出端子0.0相连)用于驱动负载。输出继电器线圈的通断状态只能在程序内部用指令驱动。
(2)输出映像寄存器的地址分配 S7-200输出映像寄存器区域有QB0~QB15共16个字节的存储单元。系统对输出映像寄存器也是以字节(8位)为单位进行地址分配的。输出映像寄存器可以按位进行操作,每一位对应一个数字量的输出点。如CPU224的基本单元输出为10点,需占用2×8=16位,即占用QB0和QB1两个字节。但未使用的位和字节均可在用户程序中作为内部标志位使用。 输出继电器可采用位,字节,字或双字来存取。输出继电器位存取的地址编号范围为Q0.0~Q15.7。
以上介绍的两种软继电器都是和用户有联系的 ,因而是PLC 与外部联系的窗口 。下面所介绍的则是与外部设备没有联系的内部软继电器。它们既不能用来接收用户信号,也不能用来驱动外部负载,只能用于编制程序,即线圈和接点都只能出现在梯形图中。
3)变量存储器V 变量存储器主要用于存储变量。用以存储用户程序执行过程中控制逻辑操作运算的中间结果,也可以用来保存与工序或任务有关的其他数据。在进行数据处理时,变量存储器会被经常使用。 变量存储器可以是位寻址,也可按字节、字、双字为单位寻址,其位存取的编号范围根据CPU的型号有所不同,CPU221/222为V0.0~V2047.7共2KB存储容量,CPU224/226为V0.0~V5119.7共5KB存储容量。 变量存储器V的变化范围根据 CPU的信号不同而不同。CPU 224有VB0.0~VB5119.7的5K存储字节。可按位、字节、字或双字使用。
4)内部标志位(M)存储区 内部标志位存储器,用来保存控制继电器的中间操作状态,其作用相当于继电器控制中的中间继电器,内部标志位存储器在PLC中没有输入/输出端与之对应,其线圈的通断状态只能在程序内部用指令驱动,其触点不能直接驱动外部负载,只能在程序内部驱动输出继电器的线圈,再用输出继电器的触点去驱动外部负载。 内部标志位存储器可采用位、字节、字或双字来存取。内部标志位存储器位存取的地址编号范围为M0.0~M31.7共32个字节。
5)特殊标志位(SM)存储器 PLC中还有若干特殊标志位存储器, 特殊标志位存储器位提供大量的状态和控制功能,用来在CPU和用户程序之间交换信息,特殊标志位存储器能以位、字节、字或双字来存取,CPU224的SM的位地址编号范围为SM0.0~SM179.7共180个字节。其中SM0.0~SM29.7的30个字节为只读型区域。
① SMB0为状态位字节,在每次扫描循环结尾由S7-200 CPU更新,定义如下: SM0.0 运行监视,PLC运行RUN状态,该位始终为 1 PLC在运行时利用其触点驱动输出继电器。 SM0.1 初始化脉冲。仅在执行用户程序的第一个 扫描周期时为1。 SM0.2 当RAM中数据丢失时,导通一个扫描周期,用 于出错处理。 SM0.3 PLC上电进入RUN方式,ON一个扫描周期。
SM0.4 分脉冲,该位输出一个占空比为50%的分时钟 脉冲。用作时间基准或简易延时。 SM0.5 秒脉冲,该位输出一个占空比为50%的秒时钟 脉冲。可用作时间基准。 SM0.6 扫描时钟,一个扫描周期为ON(高电平),另 一为OFF(低电平)循环交替。 SM0.7 工作方式开关位置指示,0为TERM位置,可同 编程设备通讯。1为RUN位置。为1时,使自由 端口通讯方式有效。
②SMB1为指令状态位字节,常用于表及数学操作,提供不同指令的错误提示。部分位定义如下: SM1.0 零标志,运算结果为0时,该位置1。 SM1.1 溢出标志,运算结果溢出或查出非法数值 时,该位置1 。 SM1.2 负数标志,数学运算结果为负时,该位为 1。
6) 局部变量存储器(L) • 局部变量存储器L用来存放局部变量,局部变量存储器L和变量存储器V十分相似,主要区别在于全局变量是全局有效,即同一个变量可以被任何程序(主程序、子程序和中断程序)访问。而局部变量只是局部有效,即变量只和特定的程序相关联。 • S7-200有64个字节的局部变量存储器,其中60个字节可以作为暂时存储器,或给子程序传递参数。后4个字节作为系统的保留字节。PLC在运行时,根据需要动态地分配局部变量存储器,在执行主程序时,64个字节的局部变量存储器分配给主程序,当调用子程序或出现中断时,局部变量存储器分配给子程序或中断程序。 • 局部存储器可以按位、字节、字、双字直接寻址,其位存取的地址编号范围为L0.0~L63.7。 • L可以作为地址指针。
7)高速计数器HC • 一般计数器的计数频率受扫描周期的影响,不能太高。而高速计数器可用来累计比CPU 的扫描速度更快的事件。高速计数器的当前值是一个双字长(32位)的整数,且为只读值。 • 高速计数器的地址编号范围根据CPU的型号有所不同,CPU221/222各有4个高速计数器,CPU224/226各有6个高速计数器,编号为HC0~HC5。
8)累加器AC 累加器是用来暂存数据的寄存器,它可以用来存放运算数据、中间数据和结果。CPU提供了4个 32位的累加器,其地址编号为AC0~AC3。累加器的可用长度为32位,可采用字节、字、双字的存取方式,按字节、字只能存取累加器的低8位或低16位,双字可以存取累加器全部的32 位。
9)定时器(相当于时间继电器) • PLC所提供的定时器作用相当于继电器控制系统中的时间继电器。每个定时器可提供无数对常开和常闭触点供编程使用。其设定时间由程序设置。 • 每个定时器有一个16位的当前值寄存器,用于存储定时器累计的时基增量值(1~32767),另有一个状态位表示定时器的状态。若当前值寄存器累计的时基增量值大于等于设定值时,定时器的状态位被置“1”,该定时器的常开触点闭合。
定时器的定时精度分别为1ms 、10ms和100ms三种,CPU222、CPU224及CPU226的定时器地址编号范围为T0~T225,它们分辨率、定时范围并不相同,用户应根据所用CPU型号及时基,正确选用定时器的编号。 • S7-200 CPU中的定时器是对内部时钟累计时间增量的设备,用于时间控制。编址范围T0~T255(22X);T0~T127(21X)。
10)计数器 计数器用于累计计数输入端接收到的由断开到接通的脉冲个数。计数器可提供无数对常开和常闭触点供编程使用,其设定值由程序赋予。 计数器的结构与定时器基本相同,每个计数器有一个16位的当前值寄存器用于存储计数器累计的脉冲数,另有一个状态位表示计数器的状态,若当前值寄存器累计的脉冲数大于等于设定值时,计数器的状态位被置“1”,该计数器的常开触点闭合。计数器的地址编号范围为C0~C255。
11)模拟量输入/输出映像寄存器(AI/AQ) • S7-200的模拟量输入电路是将外部输入的模拟量信号转换成1个字长的数字量存入模拟量输入映像寄存器区域,区域标志符为AI。 • 模拟量输出电路是将模拟量输出映像寄存器区域的1个字长(16位)数值转换为模拟电流或电压输出,区域标志符为AQ。 • 在PLC内的数字量字长为16位,即两个字节,故其地址均以偶数表示,如 AIW0、AIW2…..;AQW0、AQW2…..。