当前位置:
文档之家› 西门子PLC指令教程应用指令
西门子PLC指令教程应用指令
//存于 VW100
LDI>= JMP LBL
C30, +500 //判断计数器
//当前值是否
//大于 500
10
//条件满足,跳转
//到标号 10 开始
//的程序段
10
//标志程序段
LD
I0.3
//
S
Q1.0 , 3 //把从 Q1.0 开始的
//3 个输出点置 1
• 5.3
图 程 序 跳 转 实 例
//
•图5.2 停止、结束、看门狗指令
返回本节
5.1.4 跳转
1. 跳转指令 与跳转相关的指令有下面两条:
(1)跳转指令 JMP,跳转指令。使能输入有效时,使程序流程跳到 同一程序中的指定标号n处执行。执行跳转指令时,逻 辑堆栈的栈顶值总是1。 (2)标号指令 LBL,标号指令。标记程序段,作为跳转指令执行时跳 转到的目的位置。操作数n为0~255的字型数据。
(1)数量及编号
高速计数器在程序中使用时的地址编号用HCn来表示(在非程序 中有时用HSCn),HC表编程元件名称为高速计数器,n为编号。
HCn除了表示高速计数器的编号之外,还代表两方面的含义:高 速计数器位和高速计数器当前值。编程时,从所用的指令可以看 出是位还是当前值。
不同型号的PLC主机,高速计数器的数量对应如表5.7所示。
•图5.4 子程序调用举例
3. 带参数的子程序调用
(1)子程序参数 变量名 变量类型 数据类型 (2)参数子程序调用的规则 (3)变量表使用 (4)程序实例
以上面指令为例,局部变量表分配如表5.1所示, 程序段如图5.5所示。
•表5.1 局部变量表例
LD CALL
I0.0
//装入常开触点
(1)中断调用指令
(2)注意事项
(3)程序实例
(3)程序实例
控制要求:
程序实现的功能是调 用 I0.1输 入点 的 上 升 沿中断,若发现I/O错 误,则禁止本中断, 用外部条件可以禁止 全局中断。
程序实现:本程序如 图5.10所示。
LD
I0.4
//使能输入
ATCH ENI
INT_1, 2 //中断调用 //中断程序 //为 INT_1 //事件号为 2 //全局开中断 //
LD O O STOP
SM5.0 SM4.3 I0.3
LD
I0.5
END
//检查 I/O 错误 //运行时刻检查编程 //外部切换开关 //条件满足,由 RUN // 切换到 STOP 方式 // // //外部停止控制 //停止程序执行 // //
LD WDR
A
M0.4
I0.2
//用触点重新触发 //看门狗定时器
•图5.8 与ENO指令
返回本节
5.2 特殊指令
5.2.1 时钟指令 5.2.2 中断 5.2.3 通信 5.2.4 高速计数 5.2.5 高速脉冲输出 5.2.6 PID回路指令
返回本章首页
5.2.1 时钟指令
1. 读实时时钟
TODR,读实时时钟指令。当使能输入有效时, 系统读当前时间和日期,并把它装入一个8字节 的缓冲区。
LD
I0.0
NOP 30
//使能输入 //空操作指令 //标号为 30
返回本节
5.1.2 结束及暂停
1. 结束指令
结束指令有两条:END和MEND。两条指令在 梯形图中以线圈形式编程。
END,条件结束指令。使能输入有效时,终 止用户主程序。
MEND无条件结束指令。无条件终止用户程序 的执行,返回主程序的第一条指令。
SM0.0 VB100
//运行有效 // 从 VB100 //读时钟值
//
// VB104, QB0
//传送指令
//将分钟值 //从 QB0 输出
•图5.9 读写时钟
返回本节
5.2.2 中断
1. 中断源
(1)中断源及种类
中断源,即中断事件发出中断请求的来源。S7200可编程序控制器具有最多可达34个中断源, 每个中断源都分配一个编号用以识别,称为中 断事件号。这些中断源大致分为三大类:通信 中断、输入输出中断和时基中断。
5.1.5 子程序指令
1. 建立子程序 2. 子程序调用 3. 带参数的子程序调用
1. 建立子程序
可 用 编 程 软 件 Edit 菜 单 中 的 Insert 选 项 , 选 择 Subroutine,以建立或插入一பைடு நூலகம்新的子程序, 同时在指令树窗口可以看到新建的子程序图标, 默认的程序名是SBR_n,编号n从0开始按递增 顺序生成,可以在图标上直接更改子程序的程 序名。在指令树窗口双击子程序的图标就可对 它进行编辑。
(3)工作模式及输入点 工作模式
输入端连接
高 速 计 数 器 的 工 作 模 式 共 有 12 种 。 以模式4为例,时序如图5.11所示。
时钟 方向
当前值
6
5
5
4
4
3
2
1
0
A
B
C
D
E
F
G
H
I
•图5.11 模式4操作时序
•选用某个高速计数器在某种工作模式下工作, 高速计数器的输入端不是任意选择,必须按系 统指定的输入点。如表5.9所示。
2. 高速计数指令
高 速 计 数 器 指 令 有 两 条 : HDEF 和 HSC。
(1)HDEF指令
HDEF,定义高速计数器指令。使能 输入有效时,为指定的高速计数器分 配一种工作模式,即用来建立高速计 数器与工作模式之间的联系。梯形图 指 令 盒 中 有 两 个 数 据 输 入 端 : HSC , 高速计数器编号,为0~5的常数,字 节 型 ; MODE , 工 作 模 式 , 为 0~11 的常数,字节型。
LD
T50
SCRT S0.6
SCRE
//延时时间到 //作为切换条件 //步转移 //切换到下一步 //同时关本步 // //本步结束标志
返回本节
5.1.8 与ENO指令
AENO,与ENO指令。ENO是梯形图和功能框 图编程时指令盒的布尔能流输出端。如果指令 盒的能流输入有效,同时执行没有错误,ENO 就置位,将能流向下传递。当用梯形图编程时, 且指令盒后串联一个指令盒或线圈,语句表语 言中用AENO指令描述。
程序中的子程序SBR_0为写时钟子程序,将当前时间写入从VB100 开始的8字节时间缓冲区,时间设置如下表5.3所示。程序实现:读 写时钟程序如图5.9所示。
LD EU CALL
LD TODR
MOVB
I0.4
//装入触点
//上跳沿触发
SBR_0
//调用子程序 //子程序 SBR_0 //作用为写时钟
SBR_0, I0.2, VB20, VD30 // //调用子程序 SBR_0
//含有 3 个参数:
//分别为布尔、字节
//和双字型
•图5.5 带参数的子程序调用
返回本节
5.1.6 程序循环
1. 循环开始 2. 循环结束 3. 程序实例
LD
M0.0 // 使能输入
FOR
VW10, +1, +20 //循环开始
程序实例: 如右图5.3所示。用增减计数器进行计数, 如果当前值小于500,则程序按原顺序执 行,若当前值超过500,则跳转到从标号 10开始的程序执行。
返回本节
LD LD LD CTUD
I0.0
//增计数输入端
I0.1
//减计数输入端
I0.2
//复位输入端
C30, VW100 //增减计数
//设定脉冲数
2. 写实时时钟
TODW,写实时时钟指令。用来设定实时时钟。 当使能输入有效时,系统将包含当前时间和日 期,一个8字节的缓冲区将装入时钟。
时钟缓冲区的格式如表5.2所示。
•表5.2 时钟缓冲区
程序实例
控制要求:
编写一段程序,可实现读、写实时时钟,并以BCD码显示分钟。时 钟缓冲区从VB100开始。
(2)中断优先级
中断优先级由高到低依次是:通信中断、输入 输出中断、时基中断。每种中断中的不同中断 事件又有不同的优先权。
主机中的所有中断事件及优先级如表5.4所示。
•表5.4 中断事件及优先级
2. 中断调用
即调用中断程序,使系统对特殊的内部或外部 事件作出响应。系统响应中断时自动保存逻辑 堆栈、累加器和某些特殊标志存储器位,即保 护现场。中断处理完成时,又自动恢复这些单 元原来的状态,即恢复现场。
(2)中断事件类型
高速计数器的计数和动作可采用中断方式进行控制,与CPU的扫 描周期关系不大,各种型号的PLC可用的高速计数器的中断事件 大致分为3类:当前值等于预设值中断、输入方向改变中断和外部 复位中断。所有高速计数器都支持当前值等于预设值中断。
每个高速计数器的3种中断的优先级由高到低,不同高速计数器之 间的优先级又按编号顺序由高到低。具体对应关系如表5.8所示。
//与第 2 个 NEXT
//之间为一级循环体
LD
M0.1
//使能输入
FOR
VW20, +1, +5
//循环开始
//与第 1 个 NEXT
//之间为二级循环体
•图5.6 程序循环(1)
LD CALL
I0.0 SBR_0
//使能输入 //调用子程序 0 //本梯级为二级 //循环体的功能段
NEXT
//循环结束指令
指令格式:AENO(无操作数)
•AENO指令只能在语句表中使用,将栈顶值和 ENO位的逻辑与运算,运算结果保存到栈顶。程 序如图5.8所示。
LD +I AENO ATCH