西门子S7-200 PLC指令简介及实例分析

图6-14 例6-6题图步进电机的控制要求

在本例中:流水线可以分为3段,需建立3段脉冲的包络表。起始和终止脉冲频率为2 kHz,最大脉冲频率为10 kHz ,所以起始和终止周期为500 μs,与最大频率的周期为100 μs。1段:加速运行,应在约200个脉冲时达到最大脉冲频率;2段:恒速运行,约(4000-200-200)=3600个脉冲;3段:减速运行,应在约200个脉冲时完成。

某一段每个脉冲周期增量值Δ用以下式确定:

周期增量值Δ=(该段结束时的周期时间-该段初始的周期时间)/该段的脉冲数

用该式,计算出1段的周期增量值Δ为-2 μs,2段的周期增量值Δ为0,3段的周期增量值Δ为2 μs。假设包络表位于从VB200开始的V存储区中,包络表如表6-14所示。

表6-14 例6-6包络表

V变量存储器地址 段号 参数值 3 段数 初始周期 每个脉冲的周期增量Δ 脉冲数 初始周期 每个脉冲的周期增量Δ 脉冲数 初始周期 每个脉冲的周期增量Δ 脉冲数 说明 VB200 VB201 VB203 VB205 VB209 VB211 VB213 VB217 VB219 VB221 段1 500 μs -2 μs 200 100μs 段2 0 3600 100μs 段3 2 μs 200 在程序中的用指令可将表中的数据送入V变量存储区中。

(3)多段流水线PTO初始化和操作步骤

用一个子程序实现PTO初始化,首次扫描(SM0.1)时从主程序调用初始化子程序,执行初始化操作。以后的扫描不再调用该子程序,这样减少扫描时间,程序结构更好。

初始化操作步骤如下:

1首次扫描(SM0.1)时将输出Q0.0或Q0.1复位(置0),并调用完成初始化操作的子程序。

2在初始化子程序中,根据控制要求设置控制字并写入SMB67或SMB77特殊存储器。如写入16#A0(选择微秒递增)或16#A8(选择毫秒递增),两个数值表示允许PTO功能、选择PTO操作、选择多段操作、以及选择时基(微秒或毫秒)。

3将包络表的首地址(16位)写入在SMW168(或SMW178)。

4在变量存储器V中,写入包络表的各参数值。一定要在包络表的起始字节中写入段数。在在变量存储器

V中建立包络表的过程也可以在一个子程序中完成,在此只须调用设置包络表的子程序。

MOVW +0 VW211 //段2的Δ设为0 ms

MOVD +3600 VD213 //段2中的脉冲数

5设置中断事件并全局开中断。如果想在PTO完成后,立即执行相关功能,则须设置中断,将脉冲串完成事件(中断事件号19)连接一中断程序。

6执行PLS指令,使S7-200为PTO/PWM发生器编程,高速脉冲串由Q0.0或Q0.1输出。 7退出子程序。

【例6-7】PTO指令应用实例。编程实现例6-6中的步进电机的控制

分析:编程前首先选择高速脉冲发生器为Q0.0,并确定PTO为3段流水线。设置控制字节SMB67为16#A0表示允许PTO功能、选择PTO操作、选择多段操作、以及选择时基为微秒,不允许更新周期和脉冲数。建立3段的包络表(例6-6),并将包络表的首地址装入SMW168。PTO完成调用中断程序,使Q1.0接通。PTO完成的中断事件号为19。用中断调用指令ATCH将中断事件19与中断程序INT-0连接,并全局开中断。执行PLS指令,退出子程序。本例题的主程序,初始化子程序,和中断程序如图6-15所示。

主程序

LD SM0.1// 首次扫描时,将Q0.0复位 R Q0.0 1

CALL SBR_0//调用子程序0 子程序0

// 写入PTO包络表 LD SM0.0

MOVB 3 VB200 // 将包络表段数设为3 // 段1:

MOVW +500 VW201 //段1的初始循环时间 设为500ms MOVW -2 VW203 //段1的Δ设为-2 ms

MOVD +200 VD205 //段1的脉冲数设为200

// 段2:

MOVW +100 VW209 //段2的初始周期

设为100 ms

设为3600

// 段3:

MOVW +100 VW217 //段3的初始周期设

为100ms

MOVW +1 VW219 //段3的Δ设为1ms

MOVD +200 VD221 //段3中的脉冲数设为200

LD SM0.0

MOVB 16#A0, SMB67 // 设置控制字节

MOVW +200, SMW168 // 将包络表起始地址 指定为V200

ATCH INT_0, 19 // 设置中断

ENI // 全局开中断

PLS 0 // 起动PTO,由Q0.0输出

中断程序0

LD SM0.0 // PTO完成时,输出Q1.0 = Q1.0

图6-15 例6-7主程序,初始化子程序,中断程序

5. PWM的使用

PWM是脉宽可调的高速脉冲输出,通过控制脉宽和脉冲的周期,实现控制任务。 (1)周期和脉宽

周期和脉宽时基为:微秒或毫秒,均为16位无符号数。

周期的范围从50微秒至65,535微秒,或从2毫秒至65,535毫秒。若周期 < 2个时基,则系统默认为两个时基。

脉宽范围从0微秒至65,535微秒或从0毫秒至65,535毫秒。若脉宽>= 周期,占空比=100%,输出连续接通。若脉宽= 0,占空比为0%,则输出断开。

(2)更新方式

有两种改变PWM波形的方法:同步更新和异步更新。

同步更新:不需改变时基时,可以用同步更新。执行同步更新时,波形的变化发生在周期的边缘,形成平滑转换。

异步更新:需要改变PWM的时基时,则应使用异步更新。异步更新使高速脉冲输出功能被瞬时禁用,与PWM波形不同步。这样可能造成控制设备震动。

常见的PWM操作是脉冲宽度不同,但周期保持不变,即不要求时基改变。因此先选择适合于所有周期的时基,尽量使用同步更新。

(3)PWM初始化和操作步骤

1用首次扫描位(SM0.1)使输出位复位为0,并调用初始化子程序。这样可减少扫描时间,程序结构更合理。

2在初始化子程序中设置控制字节。如将16#D3(时基微秒)或16#DB(时基毫秒)写入SMB67 或SMB77,控制功能为:允许PTO/PWM功能、选择PWM操作、设置更新脉冲宽度和周期数值、以及选择时基(微秒或毫秒)。 3在SMW68或SMW78中写入一个字长的周期值。 4在SMW70或SMW80中写入一个

字长的脉宽值。

5执行PLS指令,使S7-200为PWM发生器编程,并由Q0.0或Q0.1输出。

6可为下一输出脉冲预设控制字。在SMB67或SMB77中写入16#D2(微秒)或16#DA(毫秒)控制字节中将禁止改变周期值,允许改变脉宽。以后只要装入一个新的脉宽值,不用改变控制字节,直接执行PLS指令就可改变脉宽值。 6退出子程序。

【例6-8】PWM应用举例。设计程序,从PLC的Q0.0输出高速脉冲。该串脉冲脉宽的初始值为0.1s,周期固定为1s,其脉宽每周期递增0.1s,当脉宽达到设定的0.9s时,脉宽改为每周期递减0.1s,直到脉宽减为0。以上过程重复执行。

分析:因为每个周期都有操作,所以须把Q0.0接到I0.0,采用输入中断的方法完成控制任务,并且编写两个中断程序,一个中断程序实现脉宽递增,一个中断程序实现脉宽递减,并设置标志位,在初始化操作时使其置位,执行脉宽递增中断程

序,当脉宽达到0.9s时,使其复位,执行脉宽递减中断程序。在子程序中完成PWM的初始化操作,选用输出端为Q0.0,控制字节为SMB67,控制字节设定为16#DA(允许PWM输出,Q0.0为PWM方式,同步更新,时基为ms,允许更新脉宽,不允许更新周期)。程序如图6-16所示。

(b)子程序 图6-16 例6-8题图

c)中断程序

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4