脉冲输出
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
脉冲输出
脉冲输出指令 (PLS) 检测为脉冲输出 (Q0.0 或Q0.1) 设置的特殊
存储器位
操作数
字
脉冲输出范围
理解 S7-200 高速输出指令
每个 CPU 有两个 PTO/PWM 发生器产生高速脉冲串和脉冲宽度可调的波形
另一个分配在数字输出 Q0.1
当 Q0.0 或 Q0.1设定为 PTO 或 PWM 功能
时在输出点禁止使用通用功能输出强置或立
即输出指令的执行都不影响输出波形输出由映像寄存器控制
以高电平或低电平产生波形的起始和结束
建议在允许 PTO 或 P W M 操作前把 Q0.0 和 Q0.1 的映像寄存器设定为 0
Óû§¿ØÖÆÖÜÆÚºÍÂö³åÊý
±äÕ¼¿Õ±ÈÊä³ö
每个 PTO/PWM 发生器有一个控制字节 (8位)»¹ÓÐÒ»
¸ö 32 位无符号的脉冲计数值一旦这些特殊存储器的位
被置成所需操作这条指令使 S7-200 读取特殊存储
器中的位
修改特殊寄存器(SM)区(包括控制字节)¿ÉÒԸıäPTO或P W M特性
并执行 PLS指令
注:
所有控制字节脉冲宽度和脉冲数的缺省值都是 0
Êä³ö´Ó off 到 on 和从 on 到 off 的切换时间不一样
PTO/PWM 的输出负载至少为 10% 的额定负载
PWM 操作
P W M 功能提供占空比可调的脉冲输出s) 或毫秒 (ms)
65,535 微秒或 2Âö¿í±ä»¯·¶Î§·Ö±ðΪ 0
65,535 毫秒占空比为 100%µ±Âö¿íΪ 0 时即输出断开那么周期时间被缺省地设定为 2 个时间单位
同步更新和异步更新
如果不需要改变时间基准利用同步更新
提供平滑转换
PWM的典型操作是当周期时间保持常数时变化脉冲宽度不需要改变时间基准如果需要改变 PTO/PWM发生器的时间基准异步更新
会造成 PTO/PWM功能被瞬时禁止这会引起被控设备的振动
建议采用PWM同步更新
控制字节中的 PWM 更新方法位 (SM67.4 或 SM77.4) 用来指定更新类型
注意会产生一个异步更新
PTO 操作
PTO 提供指定脉冲个数的方波 (50% 占空比) 脉冲串发生功能
周期的范围是 50 到 65,535 微秒如果设定的周期是奇数
脉冲数的范围是
如果周期时间少于 2 个时间单位如果指定脉冲数为 0
状态字节中的 PTO 空闲位 (SM66.7 或 SM76.7) 用来指示可编程脉冲串完成根据脉冲串的完成调用中断程序 (有关中断和通讯指令的细节请见9.15 节)¸ù¾Ý°üÂç±íµÄÍê³Éµ÷ÓÃÖжϳÌÐò
PTO 功能允许脉冲串的排队立即开始新脉冲的输出
有两种方法完成管线
单段管线在单段管线中一旦启动了起始 PTO 段
并再次执行 PLS指令
在管线中一次只能存一个入口
接着输出第二个波形重复这个过程设定下一个脉冲串的特性
脉冲串之间进行平滑转换
l如果在利用 PLS 指令捕捉到新脉冲串前启动的脉冲串已经完成
如果试图装入管线当PLC进入 RUN 状态时如果要检测序列的溢出
多段管线在多段管线中在该模式下选择多段操作
时间基准可以选择微秒或者毫秒在包络表中的所有周期值必须使用一个基准不能改变
每段的长度是8个字节16 位周期增量值和 32 位脉冲计数值组成
多段 PTO 操作的另一个特点是按照每个脉冲的个数自动增减周期的能力输入一个负值将减小周期
如果在许多脉冲后指定的周期增量值导致非法周期值同时停止 PTO 功能另外
如果要人为地终止一个正进行中的 PTO 包络
当 PTO 包络执行时
表 9-15 多段 PTO 操作的包络表格式
从包络表开始的
包络段数描述
字节偏移
0 段数 (1 到 255)
½«²»²úÉú PTO 输出
尤其在步进电机控制中
按要求产生输出波形加速电机然后减速电机
假定需要4000个脉冲达到要求的电机转动数最大脉冲频率是10 kHz¶ø²»ÊÇÓÃƵÂÊ
ËùÒÔ最大频率对应的周期是100us
ÒªÇóÔÚ 200 个脉冲左右达到最大脉冲频率在400 个脉冲完成
使用一个简单公式计算 PTO/PWM 发生器用来调整每个脉冲周期所使用的周期增量值
利用这个公式相似地
由于第 2 段是恒速控制该段的周期增量是 0
±í 9-16 给出了产生所要求波形的值
一种方法是在数据块中定义包络表的值
段的最后一个脉冲的周期在包络中不直接指定 如果需要在段之间需要平滑转换计算段的最后一个脉冲周期的公式是
上面的简例是有用的记住
对于结束周期值或给定段的脉冲个数
在确定校正包络表值的过程中按照下面的公式可以计算完成一个包络段的时间长短
利用表 9-18 可以作为快速参考
启动要求的操作对 PTO/PWM 1 使用 SMB77
脉冲宽度 (SMW70 或SMW80) 或周期 (SMW68 或SMW78)Èç¹ûҪʹÓöà¶ÎÂö³å´®²Ù×÷
表 9-17 PTO /PWM 控制寄存器
Q0.0Q0.1状态字节
SM66.4 SM76.4 PTO 包络由于增量计算错误而终止
0 = 无错误
1 = 终止
SM66.6 SM76.6 PTO 管线上溢/下溢
0 = 无上溢
1 = PTO 空闲
Q0.0 Q0.1 控制字节
SM67.0 SM77.0 PTO/PWM 更新周期值 0 = 不更新
1 = 脉冲宽度值
SM67.2 SM77.2 PTO 更新脉冲数0 = 不更新
0 = 异步更新
0 = 单段操作
1 = 选择 PWM SM67.7 SM77.7 PTO/PWM 允许 0 = 禁止 PTO/PWM;
1 = 允许 PTO/PWM
Q0.0 Q0.1 其它 PTO/PWM 寄存器
SMW68 SMW78 PTO/PWM 周期值 (范围
0 到 65535)
SMD72 SMD82 PTO 脉冲计数值 (范围
用从 V0 开始的字节偏移表示 (仅用在多段
PTO 操作中)
表 9-18 PTO/PWM 控制字节参考
执行 PLS 指令的结果
控制
寄存器(16进制) 允许模式
选择
PTO
段操作
PWM
更新方法
时基脉冲数脉冲
宽度
周期
16#81 Yes PTO 单段1us/ 周期装入16#84 Yes PTO 单段1us/ 周期装入
16#85 Yes PTO 单段1us/ 周期装入装入16#89 Yes PTO 单段 1 ms/ 周期装入16#8C Yes PTO 单段 1 ms/ 周期装入
16#8D Yes PTO 单段 1 ms/ 周期装入装入16#A0 Yes PTO 多段1us/ 周期
16#A8 Yes PTO 多段 1 ms/ 周期
16#D1 Yes PWM同步1us/ 周期装入16#D2 Yes PWM同步1us/ 周期装入
16#D3 Yes PWM同步1us/ 周期装入装入16#D9 Yes PWM同步 1 ms/ 周期装入16#DA Yes PWM同步 1 ms/ 周期装入
16#DB Yes PWM同步 1 ms/ 周期装入装入
PTO/PWM 初始化和操作顺序
PTO/PWM 的初始化和操作步骤说明如下这些
步骤的说明使用了输出 Q0.0Òò´Ë³õ´ÎɨÃè´æ´¢Æ÷λ
ΪÕæ (SM0.1=1)»ò PTO/PWM 必须重新初始化
PWM 初始化
把 Q0.0 初始化成 P W M
1. 用初次扫描存储器位(SM0.1) 设置输出为1ÓÉÓÚ²ÉÓÃÁË
ÕâÑùµÄ×Ó³ÌÐòµ÷ÓôӶø¼õÉÙÁËɨÃèʱ¼ä
2. 初始化子程序中使 P W M以微秒为增量单位 (或 16#DB 使 PWM
以毫秒为增量单位)ÔÊÐí PTO/PWM 功能
选择以微秒或毫秒为增量单位
3. 向 SMW68 (字) 写入所希望的周期值
5. 执行 PLS 指令
6. 向SMB67 写入16#D2 选择以微秒为增量单位(或16#DA 选择以毫秒为增量单位)
¿ÉÒÔ×°ÈëÒ»¸öеÄÂö¿íÖµ
7. 退出子程序
请遵循如下步骤
以把所需脉宽装入 SMW70 (字)中
使 S7-200 对 PTO/PWM 发生器编程
PTO 初始化- 单段操作
为了初始化 PTO
1. 用初次扫描存储器位(SM0.1) 复位输出为0ÓÉÓÚ²ÉÓÃÁË
ÕâÑùµÄ×Ó³ÌÐòµ÷ÓôӶø¼õÉÙÁËɨÃèʱ¼ä
2. 初始化子程序中使 PTO 以微秒为增量单位 (或16#8D 使 PTO 以毫
秒为增量单位)ÔÊÐíPTO/PWM 功能
选择以微秒或毫秒为增量单位
3. 向 SMW68 (字) 写入所希望的周期值
5. 可选步骤则可以编程
并执行全局中断允许指令
以了解中断处理的详细内容
使 S7-200 对 PTO/PWM 发生器编程
修改 PTO 周期 - 单段操作
当使用单段PTO操作时请遵循如下步骤
使 PTO 以微秒为增量单位 (或 16#89 使 PTO 以毫秒为增量单位)
ÔÊÐíPTO/PWM功能选择以微秒或毫秒为增量单位
2. 向 SMW68 (字) 写入所希望的周期值
3. 执行 PLS 指令在更新周期的 PTO 波形开始前
4. 退出中断程序或子程序
为了在中断程序中或子程序中改变 PTO 脉冲计数
1. 把 16#84 送入 SMB67
用这些值设置控制字节的目的是选择PTO操作
和设置更新脉冲计数
3. 执行 PLS 指令在更新周期的 PTO 波形开始前
4. 退出中断程序或子程序
为了在中断程序中或子程序中改变 PTO 的周期和脉冲计数
1. 把 16#85 送入 SMB67
用这些值设置控制字节的目的是选择PTO操作
设置更新周期和脉冲计数
3. 向 SMD72 (双字) 写入所希望的脉冲计数
使 S7-200 对 PTO/PWM 发生器编程CPU 必须完成已经启动的 PTO
PTO 初始化 - 多段操作
为了初始化 PTO
1. 用初次扫描存储器位(SM0.1) 复位输出为0ÓÉÓÚ²ÉÓÃÁË
ÕâÑùµÄ×Ó³ÌÐòµ÷ÓôӶø¼õÉÙÁËɨÃèʱ¼ä
2. 初始化子程序中使 PTO 以微秒为增量单位 (或16#A8 使 PTO 以毫
秒为增量单位)ÔÊÐíPTO/PWM 功能
选择以微秒或毫秒为增量单位
3. 向 SMW168 (字) 写入包络表的起始V存储器偏移值
确保段数区 (表的第一个字节) 正确
如果你想在一个脉冲串输出 (PTO) 完成时立刻执行一个相关功能
使脉冲串输出完成中断事件(事件号19) 调用一个中断子程序
参见 9.16 节中断指令
6. 执行 PLS 指令
7. 退出子程序
首次扫描
5000
SMW80
SM0.0PLS EN Q0.X
1
IN
MOV_W OUT
EN ENO ENO Network 61
9-21 使用 PWM 的高速输出实例(续)
单段操作脉冲串实例
22 在 SM 存储器中使用单段操作的脉冲串输出实例 (续)
OUT SMB67
ENO
9-22 在 SM 存储器中使用单段操作的脉冲串输出实例 (续)
IN 16#AO MOV_B OUT
SMB67
EN SM0.0
IN 500
MOV_W OUT SMW168
EN IN 3
MOV_B OUT VB500
EN 设定控制字节
位
Network 1SUBROUTINE 0ENO
ENO
ENO IN 500
MOV_W OUT EN ENO
VW501
IN -2
MOV_W OUT
EN ENO VW503
IN 200
MOV_D OUT
EN ENO
VD505
9-23 使用多段操作的脉冲串输出实例
23 使用多段操作的脉冲串输出实例 (续)
图 9-23 使用多段操作的脉冲串输出实例 (续)。