[西门子] 西门子200smart PWM脉冲宽度调制指令运用

[复制链接]
查看149 | 回复0 | 2024-7-10 19:43:14 | 显示全部楼层 |阅读模式
>



1、PWM简介


PWM是"Pulse Width Modulation"的缩写,中文翻译为"脉冲宽度调制",通俗的讲就是调节脉冲输出的宽度。



什么是脉冲输出宽度呢?
在上图中,时间T是一个波形的周期,也就是一个脉冲持续的时间,属于固定值。而在同一个周期中,脉冲的宽度(脉宽时间T1)可以是不同的,例如15%、50%和75%等等,这就是通过PWM产生不同脉冲宽度的波形,脉冲输出宽度也就是脉冲高电平持续的时间。通过脉宽调制来改变脉冲占空比。

频率:1秒内PWM有多少个周期。



根据T(周期)=1/f(频率),假设频率f为50Hz,那么周期T等于0.02秒,1秒等于1000毫秒,即周期T为20毫秒,也就是频率为50Hz时,一个脉冲周期为20毫秒。



脉冲占空比是指一个脉冲周期时间T内,高电平的时间与整个周期时间的比例,即T1/T,单位为% ,例如脉冲占空比50%。“占空比”越宽,输出的能量就会提高,通过阻容变换电路所得到的平均电压值也会上升,“占空比”变窄,输出的电压信号的电压平均值就会降低,通过阻容变换电路所得到的平均电压值也会下降。PWM就是通过这种原理来实现D/A转换。PWM产生一个脉冲占空比可调,周期固定的脉冲输出。



例如周期时间是20ms,脉宽时间是8ms,所以低电平占用的时间就是12ms,总的占空比8/(8+12)= 40%,这就是占空比为40%的脉冲信号。因为周期为20ms,所以脉冲频率为50Hz(1秒/0.02秒),而脉冲占空比为40%,也可以计算出高电平的时间为8ms。低电平时间为12ms。


PWM脉冲宽度调制就是通过改变上述脉冲占空比的办法,通过控制数字量输出信号的连接和断开时间,来调节脉冲宽度(脉宽时间),从而使得数字量输出信号模拟成模拟量电压信号输出,理论上讲,可以输出任意不大于最大电压值之间的模拟电压。


PWM波形的周期是固定的、周期可以调节,使用PWM信号可以用来控制温度、比例阀的开度以及控制电机的转速等等。




2、200smart 脉冲宽度调制硬件要求


200smart 标准型加晶体管输出型PLC支持PWM功能,所有经济型PLC都不支持高速脉冲输出,无论是PTO信号还是PWM信号。如果选择继电器输出型,理论上也可以输出PWM脉冲,但由于继电器的机械特性限制,输出脉冲的频率不能太高,而且继电器的频繁通断很可能会损坏PLC触点,所以不推荐使用继电器输出型PLC输出PWM脉冲信号。除PLC模块本身可输出PWM脉冲信号,目前200 smart没有可输出高速脉冲的扩展模块。



200 smart晶体管输出型PLC输出PWM脉冲信号最高频率为100KHz,ST20型号支持2路PWM脉冲输出(PWM0/PWM1)。ST30、ST40、ST60型号支持3路PWM脉冲信号(PWM0/PWM1/PWM2)。其中PWM0对应的物理地址为Q0.0,PWM1对应的物理地址为Q0.1,PWM2对应的物理地址为Q0.3,不可以更改地址映射。




3、200smart 脉冲宽度调制软件组态


1、点击200 snart编程软件左侧项目树中的“向导”,双击“PWM“启动PWM向导组态。



2、根据实际项目需求勾选相应的要组态的脉冲。(PWM0地址Q0.0,PWM1地址Q0.1,PWM2地址Q0.3)。这里以勾选PWM0为例。


3、给选择的PWM脉冲命名,也可以默认,不作修改。


4、时基是PWM脉冲周期和脉冲宽度的时间单位,可以选择“毫秒”或者“微秒”两种,根据实际情况进行设置。



5、上述组态设置将生成一个子程序“PWM0_RUN”,在编程软件通过指令目录树下的“调用子例程”来调用该子程序完成对PWM脉冲输出控制。


程序段指令如下:

EN:布尔型变量,调用该子程序的使能,可以赋值SM0.0



RUN:布尔型变量,为1时启动PWM脉冲输出,为0时不输出


Cycle:字WORD型变量,以组态设定的单位(毫秒、微秒)为单位设定PWM脉冲的单个周期时间。时基为毫秒时,范围为2到65535。时基为微秒时,范围为10到65535


Pulse:字WORD型变量,以组态设定的单位(毫秒、微秒)为单位设定PWM脉冲的宽度(占空比),取值范围为0到65535。当脉冲宽度等于周期值时,占空比为100%,输出连续。当脉冲宽度为0时,占空比为0%,输出断开。


Error:字节BYTE型变量,表示子程序的运行状态,0为没有错误。


上例子中,触发M0.0后端口后,Q0.0就会输出周期为20ms、占空比为40%的连续方波。






4、利用PLS指令输出PWM


除了直接使用软件中提供的PWM向导组态编程外,还可以设置特殊寄存器利用PLS脉冲输出指令来发送PWM脉冲输出。


脉冲输出指令PLS可以用来控制高速输出Q0.0、Q0.1、Q0.3提供脉冲串输出PTO或者脉宽调制PWM输出功能。其中PTO输出脉冲占空比固定为50%输出的频率和脉冲数量,PWM允许输出占空比可变的固定周期输出。


1、在200smart编程软件“指令”中找到“计数器“中的PLS指令。



2、将PLS指令添加到程序段中。

​EN:布尔型变量,PWM脉冲输出使能端
,使用边沿信号触发。


N:字WORD型常量,指定输出PWM信号的通道编号。0为Q0.0输出、1为Q0.1输出、2为Q0.3输出。


PLS指令本身只能指定输出通道的编号,而周期时间、脉冲宽度时间等控制参数需要通过设置特殊存储器字节/字来。


PWM相关的特殊存储器字节可以分为两类:一类是用于控制PWM信号用,称为控制字节。另一类是用来表示PWM状态的,称为状态字节。



控制字节:
SMB67是PWM0(Q0.0)的控制字节
SMB77是PWM1(Q0.1)的控制字节
SMB567是PWM2(Q0.3)的控制字节


控制字节总共有8个位。
第0位:PTO/PWM更新频率/周期时间。0=不更新;1=更新


第1位:PWM更新脉冲宽度时间。
0=不更新;1=更新


第2位:PTO更新脉冲计数值。
0=不更新;1=更新


第3位:PWM时间基准。
0=us(微秒);1=ms(毫秒)


第4位:保留


第5位:PTO设置单段或多段操作。
0=单段;1=多段


第6位:PTO/PWM模式选择。
0=PWM;1=PTO


第7位:PTO/PWM使能。
0=禁用;1=启用


用于设置脉冲周期和脉宽调制的特殊存储器,数值为十六位无符号。
PWM0:(Q0.0)
SMW68(设置脉冲周期时间)
SMW70(设置脉冲宽度时间)

PWM1:(Q0.1)
SMW78(设置脉冲周期时间)
SMW80(设置脉冲宽度时间)

PWM2:(Q0.2)
SMW568(设置脉冲周期时间)
SMW570(设置脉冲宽度时间)


PWM周期时间的取值范围为2~65535,脉冲宽度的取值范围是:0~65535,单位取决于控制字节中设置的时基。



这些特殊存储器字节/字是PTO和PWM脉冲信号共用的


案例:使用PWM0输出时间基准为ms的PWM信号,周期为20ms,脉冲宽度为8ms,周期不更新,脉冲宽度更新。


参数设置如下:
SMB67= 2#1000 1010
SMW68=20
SMW70=8



将0写入到控制字节的第7位,使PWM0的控制字节SMB67.7为0,然后再执行PLS指令可执行PWM输出停止。

PWM1和PWM2的控制方式类似,这里不在赘述。



5、编程使用注意事项


1、如果程序中已经组态了PWM向导,又使用PLS指令输出同一端口时,以向导的组态为准。


2、ST20型号PLC在组态时虽然在向导中看似也能组态三路PWM,其实它只支持PWM0/PWM1。


3、使用PLS指令激活PWM脉冲发生器后,相应的输出通道(比如Q0.0)被脉冲发生器接管,不受程序中其它数字量输出指令的控制(禁止输出点正常用法)。当脉冲发生器取消激活后,输出通道受普通指令输出的控制。


4、任何时候都可以通过PTO/PWM控制字节SM67.7/SM77.7/SM567.7写入参数0来执行PLS指令停止,实现停止PTO或者PWM。此时,输出点立即恢复为过程映像寄存器控制。


5、PTO和PWM输出的最低负载必须至少为额定负载的10%,才能实现启用与禁用之间的顺利切换。



6、PLS指令既可以控制输出PWM信号,也可以控制输出PTO信号,具体取决于特殊存储器的配置。





免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则