请帮我解释一下这段程序
刘玉蓉
发布于2014-10-14 17:52
315
0
标签:
L DB701.DBW 56
ITD
DTR
L DB700.DBW 12
ITD
DTR
/R
L DB700.DBD 26
*R
T DB701.DBD 128
L DB701.DBW 60
ITD
DTR
L DB700.DBW 12
ITD
DTR
/R
L 1.000000e+002
*R
T DB701.DBD 132
db701.dbw56应该是变频器读出来的地址, DB700.DBW 12
好像是等于16384, db700.dbd26等于500,db701.dbd128是一个电机的转速,输出经过一个块的转换,以下
L #IN0
RND
L L#32767
>D
JC M001
TAK
L L#-32767
<D
JC M001
TAK
M001: NOP 0
T #OUT1
IN0为DB701.DBD128,OUT1为HMI显示的电机转速,请问如果我OUT1显示为320,那我电机的实际转速是多少呢?编码器的脉冲数也不知道,显示320,但从现场看来电机的转速肯定不是320的。变频器里读出来的数据会是电机的实际转速呢?
佳答案
上述段程序中,DB701.DBW56的数字化的整形值(变频器的运行实际参数,为应答报文PZD的第二个字HIW)转化为实数(32位IEEE浮点数)除以 DB700.DBW12的整形值转化成的实数(1.638400e+0004)的结果为百分比,再除以额定转速(整形值16384相当于100%,也即500转(RPM)), 得到实际的变频器的实际转速,并保存到数据块DB701的数据双字DBD128中,即实际转速值。
第二段程序,将DB701.DBW60整形转换值(32位IEEE浮点数)除以DB700.DBW12整形转换值(实数)(1.638400e+0004)的结果,再乘以100,得到实际的转速的百分比结果
第三段程序,即下面的程序是将实际的变频器的转速取整与双整数常数32767、-32678进行比较,如果此转速在-32767与32767之间,将把实际转速(DB701.DBD128保存的结果)传送到暂态变量OUT1中,然后在上位机中显示实际变频器转速。如果IN0为DB701.DBD128(实际转速),并且此值在-32767与32767之间,OUT1= DB701.DBD128中整形值,如果OUT1为320转,那么,即变频器的实际运行转速为320,但并不是指电机的转速。
L #IN0//将实际转速值(DB701.DBD128保存的结果)装载到累加器1中
RND //取整
L L#32767 //将整数值32767装载到累加器1中,DB701.DBD128保存取整的结果自动进入累加器2中
>D 比较DB701.DBD128保存取整的结果是否大于32767
JC M001 //如果DB701.DBD128保存取整的结果大于32767,则跳转到M001处
TAK //如果DB701.DBD128保存取整的结果不大于32767,交换累加器1与累加器2中内容,即累加器1中将保存DB701.DBD128保存取整的结果
L L#-32767 //将整数值-32767装载到累加器1中,DB701.DBD128保存取整的结果自动进入累加器2中
<D //比较DB701.DBD128保存取整的结果是否小于32767
JC M001 //如果DB701.DBD128保存取整的结果小于32767,则跳转到M001处
TAK //如果DB701.DBD128保存取整的结果不小于32767,交换累加器1与累加器2中内容,即累加器1中将保存DB701.DBD128保存取整的结果
M001: NOP 0//空操作0
T #OUT1//将DB701.DBD128保存取整的结果传送到暂态变量OUT1中