您现在的位置是:首页 > PLC技术 > PLC技术

S7-200 PLC的PTO/PWM初始化及操作顺序

来源:艾特贸易2017-06-04

简介PTO/PWM 的初始化和操作步骤说明如下,以帮助大家更好地理解 PTO 和 PWM 功能的操作,这些步骤的说明使用了输出 Q0.0 。初始化操作假定 S7-200 已置成 RUN 模式,因此初次扫描存储器位为真

    PTO/PWM的初始化和操作步骤说明如下,以帮助大家更好地理解PTOPWM功能的操作,这些步骤的说明使用了输出Q0.0。初始化操作假定S7-200已置成RUN模式,因此初次扫描存储器位为真(SM0.1=1),如果情况与此不符,则PTO/PWM必须重新初始化,当然可以利用某个条件(不一定是初次扫描存储器位)来调用初始化程序。    (1) PWM初始化。把Q0.0初始化成PWM,应遵循以下步骤。    1)用初次扫描存储器位(SM0.1)设置输出为1,并调用执行初始化操作的子程序,由于采用了这样的子程序调用,后续扫描就不会再调用这个子程序,从而减少了扫描时间,也提供了一个结构优化的程序。    2)在初始化子程序中,把16#D3送入SMB67,使PWM以微秒为增量单位(或16#DB使PWM以毫秒为增量单位)。用这些值设置控制字节的目的是:允许PTO/PWM功能,选择PWM操作,选择以微秒或毫秒为增量单位,设置更新脉宽和周期值。    3)SMW68()写入所希望的周期值。    4)SMW70()写入所希望的脉宽。    5)执行PLS指令,以使S7-200PTO/PWM发生器编程。    6)SMB67写入16#D2,选择以微秒为增量单位(或写入16#DA,选择以毫秒为增量单位),这复位了控制字节中的更新周期值位但允许改变脉宽,可以装入一个新的脉宽值然后不需要修改控制字节就执行PLS指令。    7)退出子程序。    (2)修改PWM输出的脉冲宽度。为了在子程序中改变PWM输出的脉宽,须遵循如下步骤(假定SMB67中装入16#D216#DA)    1)调用一个子程序以把所需脉宽装入SMW70()中。    2)执行PLS指令使S7-200PTO/PWM发生器编程。    3)退出子程序。    (3) PTO初始化一单段操作。为了初始化PTO,须遵循如下步骤。    1)用初次扫描存储器位(SM0.1)复位输出为0,并调用执行初始化操作的子程序,由于采用了这样的子程序调用,后续扫描不会再调用这个子程序,从而减少了扫描时间,也提供了一个结构优化的程序。    2)初始化子程序中把16#85送人SMB67,使PTO以微秒为增量单位(或写入16#8D,使PTO以毫秒为增量单位),用这些值设置控制字节的目的是:允许PTO/PWM功能,选择PTO操作,选择以微秒或毫秒为增量单位,设置更新脉冲计数和周期值。    3)SMW68()写入所希望的周期值。    4)SMD72(双字)写入所希望的脉冲计数。    5)可选步骤。如果希望在一个脉冲串输出(PTO)完成时立刻执行一个相关功能,则可以编程使脉冲串输出完成中断事件(事件号19)调用一个中断子程序,并执行全局中断允许指令。参见前面介绍的中断指令,以了解中断处理的详细内容。    6)执行PLS指令,使S7-200PTO/PWM发生器编程。    7)退出子程序。    (4)修改PTO周期一单段操作。当使用单段PTO操作时,为了在中断程序中或子程序中改变PTO周期,须遵循如下步骤。    1)16#81送入SMB67PTO以微秒为增量单位(或写入16#89,使PTO以毫秒为增量单位),用这些值设置控制字节的目的是:允许PTO/PWM功能,选择PTO操作,选择以微秒或毫秒为增量单位和设置更新周期值。    2)SMW68()写入所希望的周期值。    3)执行PLS指令,使S7-200PTO/PWM发生器编程,在更新周期的PTO波形开始前,CPU必须完成已经启动的PTO    4)退出中断程序或子程序。    (5)修改PTO脉冲数一单段操作。当使用单段PTO操作时,为了在中断程序中或子程序中改变PTO的脉冲计数,须遵循如下步骤。    1)16#84送入SMB67,使PTO以微秒为增量单位(或写入16#8C,使PTO以毫秒为增量单位)。用这些值设置控制字节的目的是:允许PTO/PWM功能,选择PTO操作,选择以微秒或毫秒为增量单位和设置更新脉冲计数。    2)SMD72(双字)写入所希望的脉冲计数。    3)执行PLS指令,使S7-200PTO/PWM发生器编程,在更新周期的PTO波形开始前,CPU必须完成已经启动的PTO    4)退出中断程序或子程序。    (6)修改PTO周期和脉冲数一单段操作。当使用单段PTO操作时,为了在中断程序中或子程序中改变PTO的周期和脉冲计数,须遵循如下步骤。    1)16#85送人SMB67,使PTO以微秒为增量单位(或写入16#8D,使PTO以毫秒为增量单位),用这些值设置控制字节的目的是:允许PTO/PWM功能,选择PTO操作,选择以微秒或毫秒为增量单位,设置更新周期和脉冲计数。    2)SMW68()写入所希望的周期值。    3)SMD72(双字)写入所希望的脉冲计数。    4)执行PLS指令,使S7-200PTO/PWM发生器编程,在更新周期的PTO波形开始前,CPU必须完成已经启动的PTO    5)退出中断程序或子程序。    (7) PTO初始化一多段操作。为了初始化PTO,须遵循如下步骤。    1)用初次扫描存储器位(SM0.1)复位输出为0,并调用执行初始化操作的子程序,由于采用了这样的子程序调用,后续扫描不会再调用这个子程序,从而减少了扫描时间,也提供了一个结构优化的程序。    2)初始化子程序中把16#A0送入SMB67,使PTO以微秒为增量单位(或写入16#A8,使PTO以毫秒为增量单位),用这些值设置控制字节的目的是:允许PTO/PWM功能,选择PTO操作,选择以微秒或毫秒为增量单位,设置更新脉冲计数和周期值。    3)SMW168()写入包络表的起始V存储器偏移值。    4)在包络表中设定段数,确保段数区(表的第一个字节)正确。    5)可选步骤。如果希望在一个脉冲串输出(PTO)完成时立刻执行一个相关功能,则可以编程使脉冲串输出完成中断事件(事件号19)调用一个中断子程序,并执行全局中断允许指令。    6)执行PLS指令,使S7-200PTO/PWM发生器编程。    7)退出子程序。    总之,PLS指令的应用编程是按以下步骤进行的:①确定脉冲发生器及工作模式;②设置控制字节;③写入周期值、周期增量值和脉冲数;④装入包络表首地址;⑤中断调用;⑥执行PLS指令。    现在回过头来看看[3-44],按照前述步骤用程序实现该例控制要求。[3-46]的控制系统主程序如图3-127所示;[3-46]的控制系统初始化子程序SBR_1如图3-128所示;[3-46]的控制系统包络表子程序如图3-129所示;[3-46]的控制系统中断程序如图3-130所示。
 [例3-46]的控制系统主程序
    3-127    [3-46]的控制系统主程序
[例3-46]的控制系统初始化子程序SBR-1
    3-128    [3-46]的控制系统初始化子程序SBR-1
 [例3-46]的控制系统包络表子程序    3-129    [3-46]的控制系统包络表子程序
[例3-46]的控制系统中断程序
    3-130    [3-46]的控制系统中断程序    [3-47]脉冲宽度调制(PWM)举例,如图3-131所示,试对照图中文字说明阅读梯形图和语句表。
使用PWM的高速脉冲输出
    3-131    使用PWM的高速脉冲输出    [3-48]单段操作的高速脉冲串输出举例,如图3-132所示。
 单段操作的高速脉冲串输出举例
    3-132    单段操作的高速脉冲串输出举例    【例3-49】多段操作的高速脉冲串输出举例,如图3-133所示。
多段操作的高速脉冲串输出举例
    3-133    多段操作的高速脉冲串输出举例