1、3.5.1、ControlLogix 控制器控制器 3.5 LOGIX5000 控制器存储器资源ContolLogix系统具有两个系统具有两个CPU,逻辑逻辑CPU和背和背 板板CPU存储器也划分为两个互相独立的部分存储器也划分为两个互相独立的部分逻辑逻辑CPUCPU负责执行用户程序和处理数据负责执行用户程序和处理数据.背板背板CPUCPU负责与负责与I/OI/O模块的通讯模块的通讯,接收接收I/OI/O数据数据两个两个CPUCPU互相独立运行互相独立运行3.5.2、CompactLogix,FlexLogix,and DriveLogix controllers3.5 LOGIX5000 控
2、制器资源 具有单一的连续存储区域具有单一的连续存储区域 具有一个具有一个CPU,这个这个CPU承担所有的工作承担所有的工作 CPU在不同的任务中执行与在不同的任务中执行与I/O模块的通讯模块的通讯,网络通讯等功能网络通讯等功能3.5.3、程序所需存储容量计算程序所需存储容量计算 下列公式用于估计控制器的存储器需求下列公式用于估计控制器的存储器需求 控制器任务数控制器任务数_*4000=_bytes(最少需最少需要一个)离散离散 I/O 点数点数_*400=_bytes 模拟模拟 I/O点数点数_*2600=_bytes DeviceNet 模块数模块数1_*7400=_bytes 其他通讯模块
3、数其他通讯模块数2_*2000=_bytes 运动控制轴数运动控制轴数_*8000=_bytes 总计总计=_bytes 保留保留 20-30%的控制器内存以备扩充之用的控制器内存以备扩充之用 3.5 LOGIX5000 控制器资源3.6.1、可编程控制器编程语言的国际标准 IEC-国际电工委员会为电子技术的所有领域制订全球标准的世界性组织。IEC1131-可编程控制器标准,1994年5月公布,IEC1131-3是可编程控制器的编程语言标准。IEC1131-3 详细地说明了句法、语义和下述5种编程语言表达方式 1 顺序功能图(Sequential Function Chart)2 梯形图 (L
4、adder Diagram)3 功能块图 (Function Block Diagram)4 指令表 (Instruction List)5 结构文本 (Structured Text)3.6 PLC编程语言 步1步2步3动作1动作2转换1转换2I0.1M.0.3I0.2Q1.1图3-2 顺序功能图图3-3 梯形图能流3.6.23.6.2、编程语言简介、编程语言简介1.1.顺序功能图(顺序功能图(SFCSFC)一种位于其它语言之上的图形语言,用来编制顺序控制程序。顺序功能图提供了一种组织程序的图形化方法,在顺序功能图中可以用别的语言嵌套编程。步、转换和动作是顺序功能图中的三种主要元件。可以用顺
5、序功能图来描述系统的功能,根据它可以很容易地画出梯形图程序。3.6 PLC编程语言 2.2.梯形图(梯形图(LADLAD)梯形图最接近于继电器接触器控制系统的电路原理图,直观易懂,很容易被熟悉继电器控制的电气技术人员掌握,是应用最多的一种编程语言。梯形图由触点、线圈和用方框图表示的功能块组成。触点代表逻辑输入条件,如外部的开关、按钮和内部条件等。线圈通常代表逻辑输出结果,用来控制外部的指示灯、交流接触器和内部输出条件等。功能块用来表示定时器、计数器或者数学运算等附加指令。在分析梯形图的逻辑关系时,为了借助继电器电路图的分析方法,可以想象左右两侧垂直母线之间有一个左正右负的直流电源电压,某些PL
6、C编程软件的梯形图中省略了右侧的垂直母线,当图中的I0.1与I0.2触点接通,或M0.3与I0.2的触点接通时,有一个假想的“能流”(Power Flow)流过Q1.1的线圈。利用这一能流的概念,可以帮助我们更好的理解和分析梯形图,能流只能从左向右流动。触点和线圈组成的独立电路称为一个梯级(RUNG,在STEP7中称为网络NETWORK),梯形图中,程序的逻辑运算是按从左到右的方向执行,与能流的方向一致。各梯级按从上到下的顺序执行,执行完所有梯级后,返回最上面的网络重新执行。3.6 PLC编程语言 3.3.功能块图(功能块图(FBDFBD)功能块图是一种图形化的编程方式,通过放置功能块,并用连
7、线连接功能块的输入输出至程序变量或其他功能块形成程序,是一种比梯形图高级的编程语言。3.6 PLC编程语言 4.4.语句表语句表STLSTL 这是一种采用类似汇编语言助记符的形式编写PLC程序的方法,可编程序控制器编程软件提供一组指令,由这些指令组成的程序称指令表程序或语句表程序。语句表程序比较适合熟悉可编程序控制器和逻辑程序设计的经验丰富的程序员,语句表可以实现某些不能用梯形图或功能图实现的功能。5.5.结构文本结构文本STLSTL(STRUCT TEXTSTRUCT TEXT)结构文本是为IEC1131-3标准创建的一种专用高级语言,它类似BASIC语言或PASCAL语言,具有赋值、条件语
8、句、循环语句等高级语言功能,使用方便,当需要进行复杂运算和处理大量数据时,才用这种编程语言,使用它可以大大节省编程时间。3.6 PLC编程语言 3.7.1、控制器中的软件构成、控制器中的软件构成 LOGIX5000控制器操作系统是一个有优先级的多任务控制器操作系统是一个有优先级的多任务系统系统 控制器中的程序被划分为控制器中的程序被划分为 任务任务(Task)(Task)程序程序(Program)(Program)例程例程(Routine)(Routine)控制器中的软件构成如下图控制器中的软件构成如下图 3.7 RSLogix5000编程基本概念控制器中的用户程序控制器中的用户程序Task8
9、Task1Program1Program32控制器错误处理程序控制器错误处理程序Main RoutineFault RoutineOther RoutinesProgram(local)TagsConfigurationStatusWatchDogController(Global)TagsI/O DataSystem-Shared Data软件界面软件界面 3.7 RSLogix5000编程基本概念3.7.23.7.2、任务(、任务(TaskTask)按程序执行方式的不同将程序划分成不同性质的任按程序执行方式的不同将程序划分成不同性质的任务(务(TASKTASK)。)。连续性任务连续性任务
10、周期性任务或周期性任务或 基于事件的任务。基于事件的任务。CompactLogix控制器支持的任务数量控制器支持的任务数量 1769-L35E,L43E支持支持8个任务个任务 L20、L30支持支持4个任务,个任务,一个控制器程序中只能有一个连续型任务。一个控制器程序中只能有一个连续型任务。创建工程后,主任务(创建工程后,主任务(Main Task)被自动创建并被定被自动创建并被定义成连续任务。义成连续任务。3.7 RSLogix5000编程基本概念3.7.3、任务优先级、任务优先级(Priority)任务优先级概念任务优先级概念 控制器中的每个任务都有一个优先级。LOGIX5000支持15个
11、优先级。1为最高,15为最低 当多个任务被触发时,操作系统使用优先级来决定该执行哪个任务。用户可以组态周期性任务从最低优先级15到最高优先级1 高优先级任务都会中断任何低优先级任务。连续性任务具有最低的优先级,它经常被周期性任务中断。3.7 RSLogix5000编程基本概念 I/O数据处理任务 CompactLogix控制器使用一个专用的周期性任务以优先级7处理I/O数据。这个周期性任务以RPI(请求 信 息 包 间 隔)速 度 执 行,该 R P I 是 用 户 为CompactBus组态的,并且最快可达每1ms一次。该周期性任务的全部执行时间为它扫描已组态的I/O模块的时间。任务组态会影
12、响控制器如何接收I/O数据。优先级为1到6的任务优先于专用的I/O任务。在这个优先级范围的任务会影响I/O的处理时间。如果用户组态I/O RPI为1ms,组态优先级1到6 的任务需要500s执行完并且按预定每毫秒都运行。这需要专用于I/O的任务在500s内就完成扫描组态I/O的任务。3.7 RSLogix5000编程基本概念 任务执行时间的考虑 如果用户安排2个高优先级任务(1到6)每毫秒运行,并且它们都需要500s或更多的时间去执行,那么CPU时间不会留给专用于I/O任务了。若设定周期2ms,如果用户有很多已组态的I/O,并且专用I/O任务的执行时间已经接近于2ms(或者高优先级任务和专用于
13、I/O任务之和接近于2ms),会导致没有CPU时间留给低优先级的任务(8到15)。如果用户的程序需要按一个确定的速率对输入反应并控制输出,则可组态一个周期性任务,其优先级高于7(为1到6)。这可以防止专用于I/O任务影响程序的周期速率。如果用户的程序包含许多数学运算和数据处理,则需要把此逻辑程序放在优先级低于7(8到15)的任务中,例如连续性任务,以便使专用于I/O任务不受程序的不利影响。3.7 RSLogix5000编程基本概念任务优先级总结任务优先级总结A优先级最高的任务中断所有优先级低的任务。B专用于I/O任务可以被优先级为1到6的任务中断。专用于I/O任 务 可 以 中 断 优 先 级
14、 为 8 到 1 5 的 任 务。这 个 任 务 按CompactLogix系统预定的RPI速率运行。C连续性任务运行在最低的优先级,它可以被所有其它的任务中断。D一个低优先级的任务可以被高优先级的任务中断很多次。E如果没有高优先级的任务运行,那么当连续性任务完成一次全扫描之后会立刻自动重新启动。3.7 RSLogix5000编程基本概念3.7.43.7.4、程序(、程序(ProgramProgram)每个程序包含一个局部数据区(称为每个程序包含一个局部数据区(称为Program Tags),主例程(主例程(Main Routine)、子例程、子例程(SubRoutine)和错误处和错误处理例
15、程(理例程(Fault Routine)。程序非常适合于多个程序员同时开发一个项目的情况,程序非常适合于多个程序员同时开发一个项目的情况,由于每个程序有自己的独立局部变量,不必担心变量被由于每个程序有自己的独立局部变量,不必担心变量被重复定义。或者将控制不同设备的部分使用不同的程序重复定义。或者将控制不同设备的部分使用不同的程序实现实现 主程序在工程创建时自动定义。主程序在工程创建时自动定义。每个任务可以最大安排每个任务可以最大安排32个程序。个程序。分配给一个任务的程序总是按顺序执行。不属于任何任分配给一个任务的程序总是按顺序执行。不属于任何任务的程序被显示为非预定程序。程序只能在控制器项目
16、务的程序被显示为非预定程序。程序只能在控制器项目管理器中出现一次,不能被多个任务共享。管理器中出现一次,不能被多个任务共享。在控制器扫描程序之前,用户必须在任务中指定(预定)在控制器扫描程序之前,用户必须在任务中指定(预定)程序。程序。3.7 RSLogix5000编程基本概念3.7.53.7.5、例程(、例程(RoutineRoutine)例程是用一种编程语言编写的逻辑指令的集合。每个程序都有一个主例程。当控制器触发相关的任务或调用相关的程序时主例程是第一个被执行的例程。使用调用指令如Jump to Subroutine(JSR)调用其它例程。用户也可以指定一个可选的程序故障例程。如果在相关
17、程序的任何例程中发生指令执行故障时控制器将执行此例程。一个程序中的例程数量仅受PLC内存的限制。主例程在工程创建时自动定义在主任务的主程序中。3.7 RSLogix5000编程基本概念 3.7 RSLogix5000编程基本概念3.7.6、内务处理的百分率(System Overhead Percentage)概念系统内务处理百分率指定了控制器专用于通讯和后台功能时间的百分率。系统内务处理功能包括:与编程和HMI设备(例如:RSLogix5000软件)通讯 响应消息 发送消息 串口消息和指令的处理控制器属性对话框允许用户为系统内务处理指定百分率.控制器每次最多花费1ms执行一次系统内务处理功能
18、。如果控制器在1ms内完成内务处理功能,那么它会继续执行连续性任务。内务处理百分率对程序的影响内务处理百分率对程序的影响 增加系统内务处理百分率,分配给执行连续性任务的时间会减少。若控制器不需要管理通讯,则控制器会使用通讯时间去执行连续性任务。增加系统内务处理百分率会增加通讯的性能。增加的系统内务处理百分率也会增加整体扫描时间。内务处理任务与连续任务之间的任务切换也会占用额外的处理器时间 3.7 RSLogix5000编程基本概念 内务处理百分率与处理器时间分配内务处理百分率与处理器时间分配按照下列时间片:连续性任务运行:内务处理发生持续:109 ms1 ms204 ms1 ms332 ms1
19、 ms501 ms1 ms 3.7 RSLogix5000编程基本概念 3.7 RSLogix5000编程基本概念内务处理百分率与处理器时间分配示例内务处理百分率与处理器时间分配示例3.7.7、基于符号标签名、基于符号标签名(Symbolic Tag Name)的编程的编程 RSLogix5000支持符号编程,可以定义符号标签名,并在指令中使用 标签名最多40个字符长。标签名必须以大小写字母、下画线开头,剩余字符可以为字母、数字或下划线。数据标签别名 可以将标签名定义为另一个标签名的别名。使用别名可以创建可重用的工程,在编程时使用一组标签名,再在工程实现时将它们指向实际的I/O地址。从而可以将
20、硬件设计和软件设计分开进行。所有标签名都被下载到控制器中并可重新上载 第七节 RSLogix5000编程基本概念3.7.8、数据类型、数据类型 基本数据类型 SINT、INT、DINT、BOOL、REAL 复合数据类型 数组,最多三维。数据元素可为基本数据类型或结构。自定义结构,可以使用基本数据类型创建结构,结构中的数组只能是一维数据。独立的基本数据类型的数据标签将占用4个字节32位内存空间。对SINT、INT类型,控制器总是转换成DINT进行运算,再返回SINT和INT。第七节 RSLogix5000编程基本概念3.7 RSLogix5000编程基本概念基本数据类型内存空间分配基本数据类型内
21、存空间分配 数据类型的选择数据类型的选择 数值或数组索引变量使用DINT 浮点数和模拟量使用REAL SINT、INT型主要用于自定义结构和与不支持DINT类型的外部设备通讯的情况 将BOOL型值组合成DINT数组以充分利用PLC内存,同时也使位变量值能够利用FBC、DDT指令存取。3.7 RSLogix5000编程基本概念3.7.9、数组、数组 数组用于存储具有相同存储类型的一组数据,控制器为数组分配一块连续的存储空间。可以定义一维、二维或三维数组 自定义结构中只能包含一维数组做为结构成员。数组下标从0开始 例 Tag Name Type一维数组 Array1 DINT7二维数组 Array
22、2 DINT3,5三维数组 Array3 DINT2,3,7 3.7 RSLogix5000编程基本概念3.7 RSLogix5000编程基本概念BOOL96占12字节SINT10 占12字节,其中两字节空闲INT5占12字节,其中两字节空闲DINT3占12字节,REAL3占12字节 数组的间接寻址 间接寻址比直接寻址速度慢 可以使用表达式作为索引,例如:MyArray10+MyIndex 使用DINT类型的TAG作为索引可以使执行速度更快3.7 RSLogix5000编程基本概念3.7.10、自定义结构 自定义结构可以将多种数据类型的变量组合在一个结构中。当使用BOOL、SINT、INT类型
23、时,把相同类型的成员放在一起。3.7 RSLogix5000编程基本概念3.7.11、标签(Tags)l标签是存储数据的控制器存储区域的符号名 控制器标签(Controller Tags)整个工程内可访问 程序标签(Program Tags)仅在所在程序内可访问 3.7 RSLogix5000编程基本概念 3.7 RSLogix5000编程基本概念 标签的类型 标签分为四种类型 Base,基本标签:在工程中存储可进行各种运算的数值 Alias,别名标签:给已存在的标签取的另外一个名字 Produced,生产者标签:用于发送(广播)数据至其它控制器 Consumed,消费者标签:用于从其它控制器
24、发来的数据 3.7 RSLogix5000编程基本概念3.7.12、I/O寻址方式 创建工程后应首先配置I/O模块。I/O模块配置后,每个I/O通道对应的地址标签名被自动创建在控制器标签列表中。可以为I/O标签创建更有意义的别名以容易识别。I/O标签名的由通讯节点名、模块所在物理机箱的槽号、类型(I/O/C)、成员名(Data/Fault)、数据位 等构成,格式如下:Location:SlotNumber:Type.MemberName.SubMemberName.Bit 详见下页图 3.7 RSLogix5000编程基本概念地址变量 意义 Location(位置)标识网络位置LOCAL本地框
25、架SlotNumber(槽号)I/O模块在它的框架中的槽号Type(类型)数据类型:I输入,O输出,C组态 MemberName(成员名称)从I/O模块中来的特定数据;由模块可以存储数据的类型决定 例如:Data(数据)和Fault(故障)是I/O模块中可用的数据域。Data(数据)是向I/O点发送或从I/O点接收数据的通用名。Ch0DataSubMemberName(子成员名称)与MemberName(成员名称)相关的特殊数据。Bit(可选的)I/O模块中的特定点;由I/O模块的大小决定(对于32点的模块为0-31)。3.7 RSLogix5000编程基本概念Location:SlotNum
26、ber:Type.MemberName.SubMemberName.Bit 例:Local:3:I.data.0 Local:2:I.Ch0Data 例:在本地CompactBus上使用了两组I/O模块。Bank 1为 组1,Bank 2为 组2 3.7 RSLogix5000编程基本概念位置:实例标签名:在本地组1,槽1的输入模块Local:1:CLocal:1:I.data在本地组1,槽1的输入模块 Local:2:CLocal:2:ILocal:2:O在本地组2,槽3的模拟量输入模块 Local:3:CLocal:3:I.Ch0Data在本地组2,槽4的模拟量输出模块 Local:4:C
27、Local:4:ILocal:4:O在本地组2,槽5的模拟量输入模块Local:5:CLocal:5:I 3.7 RSLogix5000编程基本概念编程基本概念 任务Task 连续性任务、周期性任务、事件的任务 程序Program Controller Tags,Program Tags 每个任务最多可分配32个程序 例程Routine I/O任务,优先级为7 内务处理百分率 标签 基本标签,别名标签,Produced,Consumed 数据类型 基本数据类型,SINT,INT,DINT,REAL 数组和自定义结构 I/O寻址方式3.7.13、RSLogix5000软件使用初步1.创建工程 点
28、File-New,则出现新控制器对话框,选处理器,取工程名,选择工程路径,填写好描述,点OK,则工程被创建。第七节 RSLogix5000编程基本概念软件界面ControllerorganizerOn-LineStatus barInstructionset toolbarVerify WindowComponentcreate toolbarUser customizedInstruction tabMessage BarCurrent rungpositionFile operationtoolbarApplicationVerify buttonsPop-up TagTooltipsLa
29、dder editorWindowCut/Copy/PasteUndo/Redo2 设置工程属性 点Edit-Controller Properties可以设定串口参数(如波特率、协议等)、系统时间、非易失存储器等参数。3.7 RSLogix5000编程基本概念3 创建并配置I/O模块 RSLogix5000中,所有I/O模块和通讯模块必须人工添加 用右键单击Controller Organizer(控制器项目管理器)中的I/O Configuration文件夹下的CompactBus Local,选New Module,出现Select Module Type 对话框。选择存在的模块点OK,
30、在随后出现的对话框中输入模块配置参数如模块名称、所在槽号、描述等信息。3.7 RSLogix5000编程基本概念4 创建标签和别名 右键单击Controller Organizer中的Controller Tags文件夹,选Edit Tags,在Tag Editor中输入需要的Tags和Aliases名字。要创建Base Tag,则需要选择此Tag的数据类型。要创建的是Alias Tag,则需选择Alias For,既为哪个已存在的Tag创建别名。3.7 RSLogix5000编程基本概念5 输入梯形图程序 双击Main Routine 右侧窗口进入梯形图编辑状态。自动插入一个空的梯级。在指令组选择标签上选适当的指令组,如BIT、Timer/Counter组。在指令工具条中选择适当的指令加入梯级。加入新的分支,加入指令。点Verify按钮校验,修改错误。下载、调试。3.7 RSLogix5000编程基本概念