PLC-8N 第三章 S7-300PLC 第5节 用户程序结构与编程
PLC-8N 第三章 S7-300PLC 第5节 用户程序结构与编程
说明: 1)程序写在OB1中。 2)计数值存储在DB1中,需先建立DB1。 DB1的0 ~ 47共48个字节为24个INT数(16位,
2字节),用于存储各小时的计数值。 第48 ~ 55共8个字节用于存储日期-时间。 Byte48:年, Byte49:月, Byte50:日 Byte51:时, Byte52:分, Byte53:秒 Word54:毫秒。 日期-时间均为BCD格式。 3)SFC21为存储器初始化模块。 4)SFC1为读日期-时间模块。
循环处理组织块:如OB1(主程序循环,每个扫描 周期执行一次)
时间中断组织块:如OB10(日期时间中断,即在 设置的日期和时间时启动),OB35(时间循环中 断,即以设定的时间为周期循环执行)
事件中断组织块:如OB20(延时中断,过程事件 出现后延时一段时间再执行中断程序),OB40 (硬件中断,快速响应过程事件)
500 IN2
OB1程序
Network1 I0.1
MW10 MW12 MW14 MW16
FC1
EN
ENO
INn0 OUTn8
INn2
INn4
INn6
<0 MW18
Q4.1 ()
Network2 I0.3
MW20 MW22 MW24 MW26
FC1
EN
ENO
INn0 OUTn8
INn2
INn4
INn6
FC没有静态存储空间,调用后其程序中的 临时变量不保留,其它程序不能使用这些临时 变量。
功能调用方法
3、STEP 7库中的功能块与功能的调用
在STEP 7编程软件中提供了一些常用的功能块 (FB)和功能(FC),用户不用再创建这些子 程序,编程时可直接调用,其方法与调用用户自 己编写的FB或FC相同。
s7-300PLC的编程指令
模块7 s7-300PLC的编程指令
工厂电气控制与PLC教学课件
7.1.2 s7-300的寄存器
s7-300CPU的寄存器有7个,分别为2个累加器、2个地址 寄存器、2个数据块寄存器和1个状态字寄存器。
所谓寻址方式就是指令执行时获取操作数的方式,可以 直接或间接方式给出操作数。s7-300有四种寻址方式:立即 寻址、直接寻址、存储器间接寻址、寄存器间接寻址。
模块7 s7-300PLC的编程指令
工厂电气控制与PLC教学课件
(4)双字(DOUBLE WORD) 数据长度为32位,双字的数据格式可表示为: 二进制,十六进制,BCD码,无符号十进制数。 (5)整数(INT) (6)双整数(DOUBLE INT) (7)实数(REAL也叫浮点数Float) (8)S5TIME(SIMATIC时间) (9)IEC时间(TIME) (10)IEC日期(DATE) (11)日计时(TIME_OF_DAY) (12)字符(CHAR)
无符号十进制数:无符号十进制数的格式为B#(×, ×),取值范围为B#(0,0)~B#(255,255),无符号 十进制数是用十进制的0~255对应二进制数中的 0000_0000~1111_1111(8位),16位二进制数就需要两个 0~255的数来表示,例如:
B#(12,254)=2#0000_1100_1111_1110
3.参数类型
除基本数据类型和复杂数据类型外,STEP7还允许为块 之间传送的形式参数定义参数类型。STEP7定义的参数类型 如下:
(1)TEMER或COUNTER:2字节长,指定当执行块时将使用 的特定定时器或特定计数器。如果赋值给TEMER或COUNTER参 数类型的形参,相应的实际参数必须是定时器或计数器,如 T1,C10。
第5章S7-300PLC指令系统及编程(2)
执行表5-19 的指令,就是在将累加器l 中的实数转换为32 位整数。 但化整的规则不相同,同一实数,执行不同转换指令,所得结果有 些区别。RND 指令中将实数转换为最接近的整数是指:实数的小 数部分执行小于5 舍,大于5 入,等于5 则选择偶数结果。如100.5 化整为100 ,而101 .5 化整为102 。如表5-20所示。
二、数据转换指令 数据转换指令是将累加器1中的数据进行数据类型转换,转换的结 果仍放在累加器1 中。在STEP7 中,可以实现BCD 码与整数、整数 与双整数(长整数)、双整数与实数间的转换,还可以实现整数的 反码、整数的补码、实数求反等数据转换操作。 下面先回顾一下数据格式,然后再介绍数据转换指令的使用方法。 (一)数据格式 PLC 中常用到的数据格式如下: 1.十进制数(BCD 码数)格式 十进制数的每一位用4 个二进制位表示,因为最大的数是9,所 以需要4 位才能表示(1001)。从0到9 的BCD 码数与二进制数表示 是相同的。 2.整数(INT )、双整数(DINT )格式
下面举例说明其用法。 例如,整数求补,其程序和转换过程如图5-68所示。
又例如,实数求反,如图5-69所示
整数的二进制求反,实际上是对原整数用FFFF ( H )FFFFFFFF (H) 进行“异或”操作,因此每一位都变为其相反的值。从STL指令看出, 求反、求补操作均在累加器中进行。
ห้องสมุดไป่ตู้
三、数据比较指令 在编程时有时需要对两个量进行比较。比较指令只能在两个同类 型数据间进行。被比较的两个数可以是:I— 两个整数(16 位定点 数);D—两个双整数(32 位定点数); R—两个实数(32 位的 IEEE 格式浮点数)。若比较的结果为“真”,则令RLO=1 ,否则 RLO =0 。 比较类型有等于、不等于等6 种,用比较符表示。3种数据的6 种 比较如表5-22 所示。它实际上是STL比较指令的格式。在比较指令 的梯形图方块的上部也采用了表5-22 所列出的符号,同一符号在两 种语言格式(STL,LAD )中均使用,对读者记忆更为方便。下面 举例说明比较指令的用法。
电气控制与S7-300 PLC编程技术第5章 S7-300PLC的编程基础
5.4 变量与数制
(2) 数制 4.BCD码 BCD码用4位二进制数表示一位十进制数,各位之间逢十进一。最 高4位用来表示符号,16 位BCD码的范围:–999~+999。 十进制数123对应的BCD码为W#16#123,或2#0000 0001 0010 0011。 因为运算规则是逢16进1,十六进制数W#16#123对应的十进制数为 W#16#123=1×162+2×161+3=291。
5.4 变量与数制
(2) 数制 1.二进制数 二进制数的1位(bit)只能取0和1这两个不同的值,用来表示开关 量的两种不同的状态。ON/OFF,TURE/FALSE。二进制常数: 2#1111_0110_1001_0001。 2.十六进制数 十六进制的16个数字:0~9和A~F,每个占二进制数的4位, W#16#23AF。 3.八进制数 八进制数的8个数字采用0~7八个数字,逢八进位。通常在数字后 面加英文“O”来表示八进制数。
第5章 S7-300PLC的编程基础
5.1 5.2 5.3 5.4 5.5 5.6 5.7 PLC编程语言的国际标准 S7-300PLC的编程语言 梯形图绘制原则 变量与数制 数据类型 PLC中的存储区与寄存器 指令结构与寻址方式
5.1 PLC编程语言的国际标准 1) 指令表IL(Instruction list):西门子称为语句表STL。 2) 结构文本ST(Structured text):西门子称为结构化控
起保停控制梯形图和语句表
起保停控制功能块结构图
5.3 梯形图绘制原则
(1)梯形图按元件从左到右、从上到下绘制。 (2)梯形图中的触点应画在水平支路上,不应画在垂直支路上。 (3)梯形图中只出现输入继电器的触点而不出现输入继电器的线圈。 (4)外部输入、输出、内部继电器(位存储器)、定时器、计数器等 器件的触点可多次重复使用。 (5)梯形图每一行都是从左侧母线开始,线圈接在最右边,触点不能 放在线圈的右边。 (6)线圈不能直接与左侧母线相连。 (7)同一编号的线圈在一个程序中使用两次及以上(称为双线圈输出
电器控制与PLC技术应用 第5章 S7-300的指令系统及编程
2、计数器指令的功能框表示形式
加计数器
减计数器
可加/减计数器
3、 计数器线圈指令
LAD指令 STL指令 L C#... S C no. CU Cno. 功 能 该指令为计数器置初始值。当RLO有上升沿时,将预置值十进制数 (格式为C#...)装入累加器1中作为计数器的当前值。 加计数,程序运行时RLO没有一个上升沿时,计数值加1,若达上限 999时,停止加计数。 减计数,程序运行时RLO没有一个上升沿时,计数值减1,若达下限 0时,则停止减计数。
• 5.2.3 跳变沿检测指令
当信号状态发生变化时就产生跳变沿。指令格式见表5-3。
表5-3 跳变沿检测指令
对RLO跳变沿检测的指令 LAD指令 STL指令 FP <位地址> 功 能 存储区
RLO正跳沿检测,位地址用于存放需要检测的 RLO的上一扫描周期值,当RLO值由0变化到1时, 输出接通一个扫描周期。 Q、M、D
第5章
•
S7-300的指令系统及编程
STEP 7是与西门子公司SIMATIC S7系列PLC相配 套的支持用户开发应用程序的软件包,在STEP 7中, S7系列PLC常用的编程语言有:LAD(梯形图)、 STL(语句表)、FBD(功能块图)等。只有当编 程语言选择为LAD时,在编程环境中,选择主菜单 的Insert项的Program Elements,则编辑环境的左 面出现了指令树窗口,右面出现了用户程序窗口, 在指令树窗口中涵盖了S7-300的所有常用梯形图指 令,用户可以采用双击或拖拽的方式应用到用户程 序的需要处,即用户可以利用指令树窗口的指令在 用户程序窗口中绘制所需的梯形图程序。如图5-1所 示。其他两种常用的编程语言不提供指令帮助。
3. 装入时间值或计数值 4. 地址寄存器装入和传送 5、梯形图方块传送指令
可编程控制器原理及应用——S7-300-400第5章程序结构与程序设计
图5-1 一个用户程序中的块调用
PLC原理及应用
和子程序可以嵌套调用一样,块也可以嵌套调用,即被
调用的块又可以调用别的块。允许嵌套调用的层数(深
度)与CPU和局域数据堆栈(L堆栈)有关。
图5-2 块调用的分层结构
PLC原理及应用
如果存在块调用,各块的创建顺序应遵循:
(1)创建块应从上到下,所以应从最上行的块开始。
PLC原理及应用
在访问数据块时,必须指明数据块的编号、数据类型与位置,以确定 访问该数据块中的哪一个数据。如果访问不存在的数据单元或数据 块,而且没有编写错误处理OB块,CPU将进入STOP模式。 STEP7中对数据单元的寻址如图5-5所示。
图5-5 数据单元的寻址
PLC原理及应用
访问数据块中数据的方法
第5章
程序结构与程序设计
PLC原理及应用
5.1 用户程序的基本结构
5.2 数据块
5.3 逻辑块
5.4 组织块与中断处理
5.5 程序调试
5.6 设计实例
5.7 习 题
PLC原理及应用
5.1 用户程序的基本结构
• S7-300/400的CPU运行两种程序,即操作系统和用户程序。操作系 统完成的任务有:热启动管理,刷新输入、输出的过程映像表,调 用用户程序、采集中断信息,调用中断OB,识别错误并进行错误
PLC原理及应用
特点:
(1)、由于所有的指令都在一个块中,CPU在每个扫
描周期都要处理程序中的全部指令,而实际上许多指令
并不需要每个扫描周期都去处理,因此没有有效地利用
CPU。 (2)、某些需要多次执行的相同或相近的操作,在程 序中需要重复编写,增加编程负担。所以在为S7-300编 写简单程序并且需要较少存储区域时,才建议使用这种 方法。
第5章S7-300的程序结构
1. 编程元件的地址分配
地址 I0.0 I0.1 I0.2 Q4.1 Q4.2 符号 SA SB1 SB2 KM1 KM2 作用 选择开关 1号风机的控制按钮 2号风机的控制按钮 控制1号风机的接触器 控制1 控制2 控制2号风机的接触器
采用只有主程序的方法编控制程序 OB1 I0.1 M0.2 Q4.1 I0.1 M0.0 (P ) I0.2 M0.4 Q4.2 I0.2 M0.3 (P ) Q4.2 M0.4 ( ) Q4.1 M0.2 ( ) Q4.2 ( ) I0.0 Q4.1 ( )
STEP 7基本数据类型
关键字 BOOL BYTE WORD DWORD CHAR S5TIME 长度 (位) 位 1 8 16 32 8 16 该类型的常数举例 True 或 False (1 或0) B#16#A9 W#16#12AF DW#16#ADAC1EF5 'w' S5T#5s_200ms
用户定义
Motor: STRUCT Speed : INT Current: REAL END_STRUCT UDT as block UDT as array Drive:
UDT element (用户定义数据类型 = 基本或复杂数据类型组成的 ARRAY[1..4] 模板)
用户定义 STRUCT Speed : INT UDT1 Current: REAL END_STRUCT
OB FC FB 在OB块、FC块、 FB块的变量声明表中可以定义局部变 量。局部变量只在局部变量定义块中有效。
编程软件STEP7中的变量的数据类型 基本数据类型、 复杂数据类型、 参数数据类型3个大类 1、 基本数据类型 P85表4-1 Bool、 Byte、Word、 Dword、 Char、Int、DInt、Real、 S5Time、Time、Date、Time_Of_Day 2、 复杂数据类型P86 String:字符串类型 Array:数组类型 Structure:结构类型 3、参数数据类型 Timer:定时器类型 Counter:计数器类型
S7-300PLC的编程
S7-300/400PLC的编程技术编程语言与数据类型1 编程语言STEP-7是S7-300/400系列PLC的编程软件。
梯形图、语句表 (即指令表)和功能块图是标准的STEP-7软件包配备的3种基本编程语言,这3种语言可以在STEP-7中相互转换。
1 顺序功能图(SFC)触点和线圈等组成的独立电路称为网络(Network),如下图所示,编程软件自动为网络编号。
梯形图中的触点和线圈可以使用物理地址,例如I0.1,Q0.3等。
如果在符号表中对某些地址定义了符号,例如令I0.1的符号为“起动”,在程序中可用符号地址“起动”来代替物理地址I0.0,这样使程序易于阅读和理解。
用户可以在网络号右边加上网络的标题,在网络号的下面为网络加上注释。
还可以选择在梯形图下面自动加上该网络中使用的符号的信息。
在分析梯形图中的逻辑关系时,为了借用继电器电路图的分析方法,可以想象在梯形图的左有两侧垂直“电源”之间有一个左正右负的直流电源电压,有一个假想的“能流”(PowerFlow)流过线圈。
利用能流这一概念,可以很好地理解和分析梯形图,能流只能从左向右流动。
•4)功能块图(FBD)功能块图(FBD)使用类似于布尔代数的图形逻辑符号来表示控制逻辑。
一些复杂的功能用指令框来表示,功能块图用类似于与门、或门的方框来表示逻辑运算关系。
•5)结构文本(ST)结构文本(ST)是为IEC61131-3标准创建的一种专用的高级编程语言。
STEP-7的S7 SCL(结构化控制语言)是符合lEC61131-3标准的高级文本语言。
它的语言结构与编程语言Pascal和C相似,所以特别适合于习惯使用高级编程语言的人使用。
•6)S7 HiGraph编程语言图形编程语言S7 HiGraph属于可选软件包,它用状态图(State Graphs)来描述异步、非顺序控制过程的编程语言。
•7)S7 CFC编程语言可选软件包CFC(Continuous Function Chart,连续功能图)用图形方式连接程序库中以块的形式提供的各种功能,包括从简单的逻辑操作到复杂的闭环和开环控制等领域。
西门子S7-300 PLC编程及应用教程PPT
1.3 位逻辑指令
二、输出指令(= 、(#)) 输出线圈:
输出线圈(又称赋值指令),将计算出来的逻辑结果写到输出 线圈指定的地址区域。
示例:
1.3 位逻辑指令
二、输出指令(= 、(#)) 中间输出:
中间输出指令是存储逻辑流的中间赋值单元,它可以记录梯形 图中某点的逻辑状态而不影响整个逻辑流的逻辑关系,其符号为线 圈输出的包括里加一“#”字符,即为(#)。
1.1 PLC简介
五、300 PLC的硬件模块 314C型CPU:
3、MCC卡
1.1 PLC简介
五、300 PLC的硬件模块 接口模块:
接口模块用于多机架配置时连接主机架(CR)和扩展机架(ER)。使用 IM360/361接口模块可以扩展3个机架,主机架使用IM360,扩展机架使用IM361, 各相邻机架之间的电缆最长为10m。
1.3 位逻辑指令
四、异或和同或指令(X、XN) 异或:
异或指令是指两个指令位逻辑状态相异时逻辑结果为 “1”, 否则为“0”,异或指令用助记符X表示。
示例:
1.3 位逻辑指令
四、异或和同或指令(X、XN) 同或:
同或指令是指两个指令位逻辑状态相同时逻辑结果为“1”, 否则为“0”,同或指令用助记符XN表示。
示例:
1.3 位逻辑指令
五、取反指令(NOT) 讲解:
能流取反指令是将取反指令前的逻辑串运算结果RLO进行取反, 并将取反后的值保存在逻辑位RLO,能流取反触点中间标有“NOT”。
示例:
1.3 位逻辑指令
六、置复位和触发器指令(S、R、SR、RS) 置复位:
置位指令(S、Set)是当逻辑运算结果RLO为“1”时,将指 定的位地址置位(置为1状态并保持),当逻辑运算结果RLO为 “0”时,该指令对指定的地址状态没有影响。
第5讲:S7-300 PLC结构化编程
工程实训中心
第5讲 S7-300 PLC结构化编程
例题:十字路口交通灯控制
为了控制十字路口的交通,在十字路口设立了红绿灯。当合上 控制开关K后,东西方向绿灯首先亮20s,接着闪烁5s后熄灭,然后 黄灯亮5s后灭,接着红灯亮30s后灭,然后绿灯亮循环……对应东 西方向绿灯和黄灯亮的时候,南北方向红灯亮,然后绿灯亮20s后 闪烁5s熄灭,黄灯亮5s后灭,接着红灯亮循环……断开控制开关 后,所有的灯都熄灭。
(2)为新建功能块(FB)编程 选取指令树下的“多重实例”并
打开,能看到已经定义的所有 的静态变量(STAT)。 选取静态变量,静态变量被放 置到程序段中。
工程实训中心
第5讲 S7-300 PLC结构化编程
主程序(OB1)编程
在主程序中调用还有多重实例的功能块(FB),并定义其所需 要的数据块。
每条传送带分别有一个启动按钮、一个停止按钮、一 个运行反馈信号和一个过载信号,如果启动输出信号发出 一段时间后,电机运行信号没有反馈(用接触器触点检 测),则启动输出信号被取消,同时指示灯以2HZ频率闪 烁,按下停止按钮并释放,该报警消除;当有过载信号产 生时电机停止运行,同时指示灯以1HZ频率闪烁。
启动条件:1个 结束条件:1个 定时延时:4个 工作过程:4个
In:1个Bool In:1个Bool In:4个Timer,4个S5Time Out:4个
实际编程过程中,如果遇到有边沿检测信号,需要在In_Out类型中增加 参数数目。
plc s7-300自学系列第五章
图5.1 STEP7 3种设计程序的方法
Date: 2017/5/6
Page: 2
5.1 S7-300的程序结构
1、线性化编程 线性化编程类似于硬件继电器控制电路,整个用户程序放在循环控 制组织块OB1(主程序)中,循环扫描时不断地依次执行OB1中的全部指 令,如图5.2。 这种方式的程序结构简单,不涉及功能块、功能、数据块、局域变 量和中断等比较复杂的概念,分析起来一目了然。这种结构是用于编写 一些规模较小,运行过程比较简单的控制程序。 由于所有的指令都在一个块中,即使程序中的某些部分在大多数时 候并不需要执行,每个扫描周期都要执行所有的指令,因此没有有效地 利用CPU。此外如果要求多次执行相同或类似的操作,需要重复编写程序。 OB1
Date: 2017/5/6
Page: 9
5.3.1 组织块(OB)
SIMATIC S7系列CPU的全部组织块的资源及优先权等级见表5.2。 不同的CPU模板具有不同的功能,因此并不是任何CPU模板都具有表 5.1所示的全部组织块资源,如CPU312IFM只有OB1,OB40和OB100。
表5.2 组织块
表5.1逻辑块和数据块
Date: 2017/5/6
Page: 8
5.3.1 组织块(OB)
组织块是CPU的操作系统与用户程序的接口,由操作系统调用,用于 控制扫描循环和中断程序的执行、PLC的启动和错误处理等。OB与不同的 CPU类型是相关的,某一型号的CPU支持哪些OB是确定的。例如,OB35和 OB40可以在CPU315-2DP中使用,而OB36和OB41则不行。因此用户只能编 写目标CPU支持的OB。 OB1是对应于循环执行的主程序的程序块,它是STEP7程序的主干。 其他大多数OB则对应于不同的中断处理程序(另外还有启动程序和背景 程序等非中断类的OB)。与每一个OB紧密相连的是它对应的类型和优先 级。OB的类型指出了它的功能,例如延时中断、硬件中断等;OB的优先 级则用于表明一个OB是否可以被另外一个OB中断,优先级较低的OB总是 可以被优先级较高的OB中断。在S7系列CPU中,背景循环OB90的优先级最 低,其次就是OB1,它的优先级是1,因此OB1通常总是可以被其他的OB中 断。对于S7-300的CPU各个OB的优先级都是固定的,用户无法更改。
plc plc-3 第三章 s7-300plc的编程基础及指令系统
模拟量输出:PQW + 字地址
例如PQW272 (字地址为偶数字节地址)
精选ppt
5、位(状态)存储区寻址 依CPU型号,存储器大小为128~2048B不等,
支持位寻址、字节寻址、字寻址和双字寻址。 位 存 储 区 以 M 标 识 , 如 : M0.0 、 MB0 、
说明
2进制常数 16进制字节常数 16进制字常数 16进制双字常数 32位整数常数 S5时间常数(16位) 计数器常数(3位BCD,0~999)
精选ppt
二、CPU内部寄存器 1. 累加器(ACCU1、ACCU2) 两个32位累加器,用于处理字节、字、双字。 2. 状态字寄存器 16位状态字寄存器用于存储CPU执行指令的状态。
中自由分配任何所选则模块的地址。
应注意,只有某些型号的CPU支持用户自定义 寻址。
3、信号模块的寻址 数字量输入:I + 字节地址 + 位地址 IB + 字节地址(0、1、2…) IW + 字的低字节地址(0、2、4…) 如I0.0,IB0,IW0 (字地址为0、2、4、…..偶
数地址,即IW0由IB0和IB1组成,IW2由IB2和 IB3组成)等。
第三章 S7-300PLC编程基础及指令系统
第1节 S7-300PLC编程语言及基本程序结构
一、ST-300PLC的编程语言
S7-300使用STEP 7软件编程, STEP 7是S7300/400PLC的通用编程软件。
STEP 7标准版配备了梯形图(LAD)、语句 表(STL)及功能块图(FBD)三种编程语言, 各语言中的部分指令在STEP 7中可互相转换。
S7-300 PLC第5章 控制指令与顺序控制
4.多流程 如图5-7c所示,一个顺序控制任务,如果存在多个 相互独立的工艺流程,则需要采用多流程设计,这 种结构主要用于处理复杂的顺序控制任务。
5.2.4 顺序功能图的编程
顺序功能图的每一步用梯形图编程时都需要用 两个程序段来表示,第1个程序段实现从当前 步到下一步的转换,第2个程序段实现转换以 后的步的功能。
…… //完成循环后,在此继续执行程序扫描。
5.1.2 程序控制指令
程序控制指令是指功能块(FB、FC、SFB、 SFC)调用指令和逻辑块(OB,FB,FC)结束指 令。调用块或结束块可以是有条件的或是无条 件的。
CALL指令可以调用用户编写的功能块或操作系统提 供的功能块,CALL指令的操作数是功能块类型及其 编号,当调用的功能块是FB块时还要提供相应的背 景数据块DB。使用CALL指令可以为被调用功能块中 的形参赋以实际参数,调用时应保证实参与形参的 数据类型一致。
5.1 控制指令
5.1.1 逻辑控制指令 1. 无条件跳转指令 无条件跳转指令JU执行时,将直接中断当前的
线性程序扫描,并跳转到由指令后面的标号所 指定的目标地址处重新执行线性程序扫描。 STL 形式的无条件跳转指令格式:JU<跳转标 号> LAD形式的无条件跳转指令格式:
注意:LAD形式的无条件跳转指令,直接连接到最左 边母线,否则将变成条件跳转指令
3. 条件跳转指令 条件跳转指令是根据状态位或前一条指令的执行结
果与0的关系,来决定是否跳转。
指令 JC JCN JCB JNB JBI
JNBI JO JOS
表5-1 条件跳转指令的格式及说明
说明 当RLO=1时,跳转
当RLO=0时,跳转
当RLO=1时,且BR=1时 跳转
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
500 IN2
OB1程序
Network1 I0.1
MW10 MW12 MW14 MW16
FC1
EN
ENO
INn0 OUTn8
INn2
INn4
INn6
<0 MW18
Q4.1 ()
Network2 I0.3
MW20 MW22 MW24 MW26
FC1
EN
ENO
INn0 OUTn8
INn2
INn4
INn6
调用时可指明其输入、输出,如某些参数未指 明,则使用背景数据块中的数据。
功能块调用
2、功能(FC)的创建与调用
1)功能的创建
如控制程序不需要保存自己的数据,则可用功能 (FC)来编程,FC没有背景数据块,不能给其 变量分配初值,也没有静态变量。FC的创建方法 与FB类似。
在SIMATIC管理器中打开工程内S7程序文件夹 下的“块( BLOCK)”文件夹,然后,右键点击 右侧窗口栏,选择“插入新对象(InsertNew Object)”中的“功能(Function )”,再分配 编号即可插入新的功能。
要创建共享数据块时,可在SIMATIC管理器中打 开工程内S7程序文件夹下的“块( BLOCK)”文 件夹,然后,右键点击右侧窗口栏,选择“插入 新对象(InsertNew Object)”中的“数据块 (DATA Block)”,再分配编号即可插入新的 数据块。打开该块后,即可定义变量。
数据块变量定义
根据题意可使用FC完成运算部分,然后在OB1中 调用该FC。
在FC中定义4个整型输入变量(依次为INn0、 INn2、 INn4和INn6),1个整型输出变量 (OUTn8 ),及3个临时整型变量(依次为 TEMP1、TEMP2和TEMP3)。
FC1程序
Network1 DIV_I EN ENO
SFB41模块带有自己的背景数据块,用于存 放其各种参数及状态信息等,如比例增益、 积分时间、微分时间、自动/手动、自动输出 值、手动输出值、起用P/I/D、扫描时间等。
SFB41模块调用
2)系统功能(SFC)的调用
对于系统功能,在程序中可直接调用,与一般 指令类似,只需将输入和输出端进行相应的变 量连接即可。
K1和K2的值与极性控制BIPOLAR有关, BIPOLAR=0时,K1=0.0,K2=27648.0;
BIPOLAR=1时,K1=-27648.0, K2=27648.0 。
上例中上面的调用是将模拟量输入通道 PIW752的数据转换为0~100%之间的数据。 即将输入PIW752的模拟量进行百分量处理。
双击插入的功能块,进行功能块编程。
先进行变量声明,这些变量声明实际上就是定 义该FB的背景数据块的结构及其变量的初值。 然后,再编写该功能块的程序。
功能块的创建
功能块在管理器中的显示
FB变量声明(以实验二FB调用为例)
FB编程
2)功能块(FB)的调用
功能块创建后,在其它程序中可有条件调用和 无条件调用。采用梯形图编程时,FB如同一条 功能指令。其它程序在调用该功能块时,需指 定其背景数据块的编号,然后,在编译调用程 序时会自动生成对应的背景数据块(调用FB时, 系统会提示分配背景数据块)。
上例中的调用是将MD120中的实数按0.0~100.0% 对应转换为0~27648之间的数据,并由模拟量输出 通道PQW800输出。
4、系统功能块与系统功能的调用
系统功能块(SFB)和系统功能(SFC)的调用方法 与STEP 7库中提供的功能块(FB)和功能 (FC)的调用相同。只是SFB和SFC是集成在 CPU模块内,程序代码本身不占用用户程序存 储空间。但SFB调用时需用户提供背景数据块, 其背景数据块仍占用用户的存储空间。
<0 MW28
Q4.3 ()
Network3 I0.5
MW30 MW32 MW34 MW36
FC1
EN
ENO
INn0 OUTn8
INn2
INn4
INn6
<0 MW38
Q4.5 ()
2、易拉罐生产线计数 易拉罐生产线需要统计每小时生产的易拉罐数
量。系统中有一传感器,每当一易拉罐经过时, 就产生一个脉冲。要求编制程序将一天24小时 生产的易拉罐数量统计出来,并分别存储在24 个数据寄存器中。 I/O分配: I0.0—启动按钮(自锁型按钮); I0.1—复位按钮; I0.2—计数输入;
据块和背景数据块。
1、组织块(OB)
启动组织块:如OB100 (暖启动,PLC启动时执 行一次。)
循环处理组织块:如OB1(主程序循环,每个扫描 周期执行一次)
时间中断组织块:如OB10(日期时间中断,即在 设置的日期和时间时启动),OB35(时间织块:如OB20(延时中断,过程事件 出现后延时一段时间再执行中断程序),OB40 (硬件中断,快速响应过程事件)
FC没有静态存储空间,调用后其程序中的 临时变量不保留,其它程序不能使用这些临时 变量。
功能调用方法
3、STEP 7库中的功能块与功能的调用
在STEP 7编程软件中提供了一些常用的功能块 (FB)和功能(FC),用户不用再创建这些子 程序,编程时可直接调用,其方法与调用用户自 己编写的FB或FC相同。
此外,CPU模块所支持的SFB和SFC与CPU型 号有关。
编程时,这些系统功能块或系统功能位于编程 部件窗口中的“库\Standard Library\System Function Blocks内,可依程序需要来调用。
1)系统功能块(SFB)的调用
系统功能块由系统提供,带有背景数据块, 如SFB 41模块就是控制系统中常用的PID模 块。
说明: 1)程序写在OB1中。 2)计数值存储在DB1中,需先建立DB1。 DB1的0 ~ 47共48个字节为24个INT数(16位,
2字节),用于存储各小时的计数值。 第48 ~ 55共8个字节用于存储日期-时间。 Byte48:年, Byte49:月, Byte50:日 Byte51:时, Byte52:分, Byte53:秒 Word54:毫秒。 日期-时间均为BCD格式。 3)SFC21为存储器初始化模块。 4)SFC1为读日期-时间模块。
应注意:PLC支持的各种组织块的数量与CPU型 号有关。
2、系统功能块(SFB)和系统功能(SFC)
SFB是系统提供的子程序,集成在CPU模块中, 有背景数据块,背景数据块可在编译时自动生成。 例如连续PID控制块SFB 41(名称为CONT_C)。
SFC也是系统提供的子程序,且集成在CPU模块 中,但无背景数据块,而是以参数传递的形式交 换数据。如设置和读取系统时钟的SFC 0和SFC 1 等。
统
OB
DBn SFBs
SFCs DBn FBs
FCs
至少包含1个OB
用户程序
DBn SFBs
SFCs DBn FBs FCs
DBn SFBs
SFCs DBn FBs
FCs
用户程序中可包含的程序块或数据块的数量与 CPU型号有关,分为1024/2048/4096个。单个块 的最大容量为64K。
程序块调用嵌套深度一般为8或16层。
这些部件位于编程部件窗口中的“库\ Standard Library下的相关目录下。
以功能FC105为例,该功能为输入标度变换,既 将输入数据按规定的上限和下限进行线性转换。
FC105调用(常用于模拟量输入处理等)
OUT = [((IN -K1)/(K2-K1))*(HI_LIM-LO_LIM)] + LO_LIM
现以系统功能SFC20“块传送”功能为例说明 调用方法。(见下图)
这里,SRCBLK规定原数据区起始地址及要传 送的字节数,指针型地址(P#)。DSTBLK规 定目的数据区起始地址,RET_VAL规定错误 代码存储地址。
SFC20调用
5、共享数据块的创建及数据调用
1)共享数据块的定义
共享数据块通常是用户对一些全局变量的定义, 也包括变量名、变量数据类型及初始值等。一般 在程序设计时预先定义,然后再在程序中使用其 内部的变量。
#INn6 IN1 OUT #TEMP1
#INn2 IN2
MUL_I EN ENO
#INn0 IN1 OUT #TEMP2
#INn4 IN2
Network2
SUB_I EN ENO
ADD_I EN ENO
#TEMP1 IN1 OUT #TEMP3 #TEMP3 IN1 OUT #OUTn8
#TEMP2 IN2
双击插入的功能,进行功能编程。
先进行变量声明,然后编写该功能的执行程序。
FC变量声明
FC编程
2)功能(FC )的调用
功能(FC)创建后,在其它程序中可有条 件调用或无条件调用。采用梯形图编程时,FC 也如同一条功能指令。因其没有背景数据块, 所以调用必须指明各输入/输出参数。
此外,FC提供了一个特殊的输出参数—— 返回值,编程时可指定一个存储单元来存储返 回值。例如:使用M区寄存器作为存储单元。
对于简单的程序可只包含OB1,称作线性化编 程。
将复杂的自动化任务分割成反映过程技术的功 能或可多次处理的小任务,可以更易于控制复 杂任务。这些任务以相应的程序块表示,称为 结构化编程。
二、功能块与功能的创建和调用
1、功能块(FB)的创建与调用
1)功能块的创建
在SIMATIC管理器中打开工程内S7程序文件 夹下的“块( BLOCK)”文件夹,然后,右键 点击右侧窗口栏,选择“插入新对象 (InsertNew Object)”中的“功能块 (Function Block)”,再分配编号即可插入 新的功能块。
FC是用户编写的或STEP 7库中提供的无背景数据 块的子程序。调用时必须提供输入和输出参数。