1.41k likes | 1.58k Views
第 5 章 应用指令. 5.1 程序控制类指令 5.2 特殊指令. 5.1 程序控制类指令. 5.1.1 结束及暂停 指令 5.1.2 看门狗 指令 5.1.3 跳转指令 5.1.4 子程序指令 5.1.5 程序循环 指令 5.1.6 顺序控制继电器 指令 5.1.7 与 ENO 指令. 返回本章首页. 5.1.1 结束及暂停. 1. 结束指令 结束指令有两条: END 和 MEND 。两条指令在梯形图中以线圈形式编程。 END ,条件结束指令。使能输入有效时,终止用户主程序。
E N D
第5章 应用指令 5.1 程序控制类指令 5.2 特殊指令
5.1 程序控制类指令 • 5.1.1结束及暂停指令 • 5.1.2看门狗指令 • 5.1.3跳转指令 • 5.1.4子程序指令 • 5.1.5程序循环指令 • 5.1.6顺序控制继电器指令 • 5.1.7与ENO指令 返回本章首页
5.1.1 结束及暂停 • 1. 结束指令 • 结束指令有两条:END和MEND。两条指令在梯形图中以线圈形式编程。 • END,条件结束指令。使能输入有效时,终止用户主程序。 • MEND无条件结束指令。无条件终止用户程序的执行,返回主程序的第一条指令。 • 用Micro/Win32编程时,编程人员不需手工输入MEND指令,而是由软件自动加在主程序结尾。指令格式:END (无操作数)
2. 暂停指令 • STOP,暂停指令。使能输入有效时,该指令使主机CPU的工作方式由RUN切换到STOP方式,从而立即终止用户程序的执行。 • STOP指令在梯形图中以线圈形式编程。指令不含操作数。指令的执行不考虑对特殊标志寄存器位和能流的影响。 • 指令格式:STOP (无操作数) 返回本节
5.1.2 看门狗 • WDR,看门狗复位指令。当使能输入有效时,执行WDR指令,每执行一次,看门狗定时器就被复位一次。 • S7的看门狗WDR的设定值为300ms,有时在循环或调用子程序,响应中断服务程序时,扫描时间超过300ms, WDR会认为出错。 • 可用本指令可用以延长扫描周期,从而可以有效避免看门狗超时错误。 • 指令格式:WDR (无操作数) • 程序实例:指令STOP、END、WDR的应用如图5.2所示。
图5.1 停止、结束、看门狗指令 返回本节
5.1.3 跳转 • 1. 跳转指令 • 与跳转相关的指令有下面两条: • (1)跳转指令 • JMP,跳转指令。使能输入有效时,使程序流程跳到同一程序中的指定标号n处执行。执行跳转指令时,逻辑堆栈的栈顶值总是1。 • (2)标号指令 • LBL,标号指令。标记程序段,作为跳转指令执行时跳转到的目的位置。操作数n为0~255的字型数据。
程序实例: • 某生产线对产品进行加工处理,同时用增减计数器对成品进行计数,如果检测到100个成品就要跳过某些控制程序直接进入小包装控制程序;若检测到900个成品,则程序跳转到大包装控制程序。 • 程序如下:
5.1.4 子程序指令 编写子程序的步骤 1 .建立子程序 2. 编写子程序 3.在主程序、其他子程序、或中断程序中调用子程序(带参数的子程序)
1. 建立子程序 • 可用编程软件Edit菜单中的Insert选项,选择Subroutine,以建立或插入一个新的子程序,同时在指令树窗口可以看到新建的子程序图标,默认的程序名是SBR_n,编号n从0开始按递增顺序生成,可以在图标上直接更改子程序的程序名。在指令树窗口双击子程序的图标就可对它进行编辑。
SBR1 EN ( RET ) 2. 子程序调用 • (1)子程序调用和返回指令 • 子程序调用 • 子程序条件返回 • (2)注意事项 • 可有64个子程序,可以嵌套子程序,最大嵌套深度为8 • 子程序内不能用END指令 • 不允许直接递归(自己调用自己),可间接递归 • (3)应用实例
图5.3所示的程序实现用外部控制条件分别调用两个子程序。图5.3所示的程序实现用外部控制条件分别调用两个子程序。 • 图5.3 子程序调用举例
3. 带参数的子程序调用 • (1)子程序参数---最多可带16个参数,每个参数包含: • 变量名 • 变量类型 (IN类型、IN/OUT、OUT) • 数据类型 (位、字节、字、双字、实型) • (2)参数子程序调用的规则 • 参数与局部变量标的定义相匹配 • 参数顺序是:输入,输入/输出,输出 • (3)程序实例
图5.5 带参数的子程序调用 返回本节
以上面指令为例,局部变量表分配如表5.1所示,程序段如图5.5所示。以上面指令为例,局部变量表分配如表5.1所示,程序段如图5.5所示。 • 表5.1 局部变量表例
FOR EN ENO INDX INIT FINAL (NEXT) 5.1.5 程序循环 1.循环开始FOR 每执行一次循环计数值加1,当计数值大于终值,则循环终止。 2.循环结束NEXT 3.程序实例 计数值 初值 终值
图5.6 程序循环(2) 返回本节
5.1.7 顺序控制继电器 • 顺序控制继电器S是专门用于编写顺序控制程序(常称为步进控制)的。 • 所谓顺序控制,使生产过程按生产工艺的要求预先安排的顺序自动地进行生产的控制方式。 • 一个步进控制程序是由若干个SCR段组成,每个SCR段对应步进控制中的一个功能控制步。
Sx.y SCR LSCR Sn (SCRT) SCRT Sn Sn (SCRE) SCRE • 1. 顺序继电器指令 • (1)段开始指令 • 功能:标记一个SCR段的开始,操作数是顺序继电器Sx.y(如S0.0)。 • 当顺序继电器Sx.y=1启动SCR x.y的顺序程序。即允许该SCR段工作。 • (2)段转移 • 功能:是当Sx.y=1,将当前的SCR段停止,切换到下一个SCR。其操作数为下一个SCR的标志位(如S0.1) • (3)段结束 • 功能:标记一个段的结束。 Sn
2. 程序实例 • 本例是用顺序继电器实现的顺序控制中的一个步的程序段,这一步实现的功能是使两个电机M1和M2起动运行20秒后停止,切换到下一步。 • 程序如图5.7所示。 返回本节
3. 结构形式 • (1)顺序结构 • (2)分支结构 • 选择性分支 • 并发性分支 • (3)循环结构 • (4)复合结构
Q0.0 Q0.1 Q0.2 S0.1 S0.2 S0.3 ( ) ( ) ( ) (1)顺序结构 各顺序控制段的转换不带分支和汇合的顺控过程。 • 将复杂的控制分解若干个独立控制功能步,用方框表示,根据动作顺序用箭头将各方框连接起来,在相邻的两步之间用段横线表示转换条件。在每步的右边画上要执行的控制程序。 I0.0 I0.1 I0.2
(2)分支结构 1)选择分支 执行完1步,当A或D或G或I为1,1步复位,2或4或6或7开始执行; 8步执行,由C或F或H或J为1决定,执行时顺序继电器置1,3、5、6、7顺序继电器复位 图5.9 选择性分支
用水平双线表示并行分支开始和结束。 • 2)并发性分支 • 当A为1,1步复位,2467同时置位开始工作。 • 为提高工作效率,各支路的工作时间尽量接近一致。 图5.10 并发性分支
(3)循环结构 • 循环结构用于一个顺序过程的多次或往复执行。功能图画法如图5.11所示,这种结构可看作是选择性分支结构的一种特殊情况。 图5.11 循环结构
(4)复合结构 几种结构组合 图5.12 功能流程图举例 返回本节
5.1.8 与ENO指令 • AENO,与ENO指令。ENO是梯形图和功能框图编程时指令盒的布尔能流输出端。如果指令盒的能流输入有效,同时执行没有错误,ENO就置位,将能流向下传递。当用梯形图编程时,且指令盒后串联一个指令盒或线圈,语句表语言中用AENO指令描述。 • 指令格式:AENO(无操作数)
AENO指令只能在语句表中使用,将栈顶值和ENO位的逻辑与运算,运算结果保存到栈顶。程序如图5.13所示。AENO指令只能在语句表中使用,将栈顶值和ENO位的逻辑与运算,运算结果保存到栈顶。程序如图5.13所示。 • 图5.13 与ENO指令 返回本节
5.2 特殊指令 • 5.2.1 时钟指令 • 5.2.2 中断 • 5.2.3 通信 • 5.2.4 高速计数 • 5.2.5 高速脉冲输出 • 5.2.6PID回路指令 返回本章首页
READ_RTC EN ENO T SET_RTC EN ENO T TODR T TODW T 5.2.1时钟指令 首地址 VB300 VB300 • 1. 读实时时钟 • TODR,读实时时钟指令。当使能输入有效时,系统读当前时间和日期,并把它装入一个8字节的缓冲区。 • 2. 写实时时钟 • TODW,写实时时钟指令。用来设定实时时钟。当使能输入有效时,系统将包含当前时间和日期,一个8字节的缓冲区将装入时钟。 • 表5.2 时钟缓冲区格式
程序实例 • 控制要求: • 编写一段程序,可实现读、写实时时钟,并以BCD码显示分钟。时钟缓冲区从VB100开始。 • 程序中的子程序SBR_0为写时钟子程序,将当前时间写入从VB100开始的8字节时间缓冲区,时间设置如下表5.3所示。程序实现:读写时钟程序如图5.9所示。
LD I0.4 //装入触点 EU //上跳沿触发 CALL SBR_0 //调用子程序 LD SM0.0 //运行有效 TODR VB100 // 从VB100 //读时钟值 MOVB VB104, VB0 //传送指令 SEG VB0,QB0 //将分钟值低位 //从QB0输出 SRB VB0,4 //右移4位 SEG VB0,QB1 //将分钟值低位 //从QB1输出 子程序SBR_0 //作用为写时钟
5.2.2 中断 • 1. 中断源 • (1)中断源及种类 • 中断源,即中断事件发出中断请求的来源。S7-200可编程序控制器具有34个中断源,每个中断源都分配一个编号用以识别,称为中断事件号。这些中断源大致分为三大类:通信中断、输入输出中断和时基中断。
(2)中断优先级 • 中断优先级由高到低依次是:通信中断、输入输出中断、时基中断。每种中断中的不同中断事件又有不同的优先权。 • 主机中的所有中断事件及优先级如表5.4所示。
ATCH EN ENO INT EVNT (ENI) (DISI) • 2. 中断操作指令 • 包括: • (1)开中断指令ENI---全局开放所有被连接的中断事件 • (2)关中断指令DISI---全局关断所有被连接的中断事件 • (3)中断连接指令ATCH • 功能:建立一个中断事件EVNT与一个标号为INTn中断服务程序联系,并对该中断事件开放。
(4)中断分离指令DTCH • 功能:取消某个中断事件EVNT与所有中断程序的关联,并对该事件关中断。 • (5)中断返回指令RETI和CRET • 注意事项 中断服务程序中,不能使用开中断指令ENI、关中断指令DISI、定义高速计数器指令HDEF、步进开始指令LSCR、条件结束指令END。 • 程序实例 有条件返回 无条件返回
(3)程序实例 • 控制要求: • 程序实现的功能是用I0.4调用I0.1输入点的上升沿中断,若发现I/O错误,则禁止本中断,用外部条件I0.5可以禁止全局中断。 • 程序实现:本程序如图5.10所示。 • 图5.10 中断调用程序
3. 中断程序 • (1)构成 • 中断程序必须由三部分构成:中断程序标号、中断程序指令和无条件返回指令。 • (2)编制方法 • 建立中断程序INT n • 在INT n中编写其服务程序 • 编写中断连接指令 • 允许中断 返回本节
温度模拟量数据采集实例 0~200度范围 定时中断0,设定100ms,在中断服务程序中进行数据采集和变换 2 测量的实际温度=(AIW-6552)/[(32760-6552)/200]
12为数字量 12为数字量 复习思考题 测量的实际温度=(AIW-6552)/[(32760-6552)/200] • 一个温度检测系统,用Pt100热电阻,测温范围为0~200度(电流输出),如测得环境温度为35度,问A/D转换后的数字量? • 0~200度 对应 4~20mA 0 0 1 1 0 0 1 1 0 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
5.2.3 通信 • 通信指令包括: • XMT,自由口发送指令 • RCV,自由口接收指令 • NETR,网络读指令 • NETW,网络写指令 • GPA,获取口地址指令
一、S7-200的网络通信 字符数据格式 (1)10位字符数据 传送数据由1个起始位、8个数据位、无校验位、一个停止位组成。传送速率一般为9600波特。 (2)11位字符数据 传送数据由1个起始位、8个数据位、1个偶校验位、一个停止位组成。传送速率一般为9600波特或19200波特。 • S7-200被默认为是从站。在采用PPI通信协议时,若设置为PPI主站模式,PLC主机可以在RUN工作方式下为主站,可以用通信指令读取其他PLC主机的数据。