技术论坛

 关于200 smart 编辑电机测速程序

返回主题列表
作者 主题
WWCWWC
至圣

经验值: 71760
发帖数: 8032
精华帖: 145
楼主    2018-04-03 15:24:56
主题:关于200 smart 编辑电机测速程序

关于200 smart 编辑电机测速程序

   近来在“找答案”栏目中看到几个关于200smart PLC如何编辑电机测速的贴子,电机测速不外乎高速计数器的组态及定时中断中编辑高速脉冲数的计算。虽然短短的几句话,且隐含了对高速计数器即高速脉冲计算的应用原理,或许给初次使用者带来一些编程“难度”。

这次,就来唠唠高速计数器及高速脉冲然后计算频率、速度值的话题,记得我曾经在论坛200smart版区发过【说说200 smart高速计数器的计数】的系列短文,只是那些短文仅仅局限于如何组态200smart高速计数器的应用,有兴趣也可以去搜索看看,以利于参考编辑高速计数器的应用。

下面以200smart CR60 PLC如何组态电机测试讲讲编程思路:

1)  根据一般电机测试要求,以及有限的plc资源,首选高速计数器为单相加计数模式;当然用户可以根据实际plc的控制要求选择其它高速计数器工作模式,我这里仅仅考虑到只使用一个I0.0的高速脉冲输入方式,模式选择为0;

2)  选择更新预设值和当前值,以利于可能在定时中断计算脉冲数之用,那么,高速计数器的控制字节SMB37基本定义;

3)  如果不使用更新当前值和预设值,在后续的编程中仍然可以修改;

SMB37定义:

SM37.7    SM37.6    SM37.5    SM37.4    SM37.3    SM37.2    SM37.1   SM37.0

= 1使能   = 1更新   = 1更新    = 1更新   = 1 加     = 0        保留     = 0复位

必须选择  当前值    预设值     方向      计数      不使用                低电平

SMB37 = 2#1111 1000 = 16# F8

4)   定义一个定时中断,将中断时间定义在100mS循环;

程序:

框架:初始化高速计数器及定时中断、在定时中断子程序中编辑测速程序

高速计数器及定时中断初始化子程序:



在主程序调用初始化子程序:



在速度计算子程序中编辑,定时中断累加,因为需要计算1S时间内的脉冲总个数,使用需要调用10次定时中断后计算一次脉冲总个数。



如果用户需要其它时间单位的脉冲计算,修改程序也相当方便的,假设1分钟,那么,只需要在这些地方修改:与1S的不同已经用红色框标注



那么,VD104就是电机的单位时间内的脉冲总个数。

因为,我们需要的是电机的额定转速,所以,还需要再进行下一步计算,仍然按1S计算。

假设,旋转编码器旋转一周为1000个脉冲,那么,在中断程序中还需要如下计算:



这时候的VD104就是1S时间的电机旋转的圈数即转速值。

编程小结:

   编辑这样的程序,尤其在初次使用阶段,先理解高速计数器的组态,如高速计数号0时,把SMB37每一个位的含义都理解透彻,如果有硬件条件可以按不同的SMB37控制字节演练一下,以加深对高速计数器的熟练和理解程度。其次,对定时中断的理解,相对容易一些,即在定时中断的控制字节中设置循环定时中断时间,这样设置定时时间后下载到cpu,cpu会按这个设置时间无限循环进行,电机速度的计算程序就是利用这个定时中断做无限次数的计算,测量电机在不同时间阶段的不同速度值。

当然,计算电机速度的方法还有很多种类,如根据电机转速高速:

电机速度 = 60 * F / n *(1-a)

其中,

F:电机转动的频率(这个值就是需要程序计算的变量值)

a:电机实际转差率(在实际应用中一个值应该为常数)

n:电机极对数

   还有一种计算的先计算1S的脉冲总数,再乘以60S除编码器每转的脉冲数,得到1分钟的电机转速值。

编程实际上都是万变不离其中,任何的计算都必须围绕电机的已知条件和plc硬件条件、编码器每转的脉冲个数,用户只是借于一些简单的计算就可以得到需要的控制要求。

   时间关系,上述程序没有验证过,仅仅只能作为编程参考。


您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。