登录
首页 PLC论坛 PLC论坛
回帖 发帖
正文

主题:如何实现汇川PLC符点数左移指令功能?

点击:2802 回复:12

我要实时读取一个符点数据,每秒更新一次。要用每秒把这个数据向右移动一位,移动十次求平均值。每秒移动一次,每秒求一次平均值。
 现在问题是汇川PLC不支持双字浮点数位移!如何才能实现我要的功能呢?
我知道!S7-200有双字位移,但是PLC都订了不想更换!
17-10-12 08:55
如果你仅仅需要实现200系列中的双字右移功能的话,你仅仅需要除以2就实现了,但是,这是整数的双字右移,200也没有浮点数的双字右移功能。
但是:浮点数的双字右移,你每次的精度差远了。
HAVE FUN!
17-10-12 09:45

引用 fujifa 在 2017/10/12 9:45:22 发言【内容省略】

如何除以2能实现双字右移呢?你说的除以2是实时数据除以2吗?
我现在把符点数转成双整数,怎样实现右移?
17-10-12 15:12

引用 845352686 在 2017/10/12 15:12:36 发言【内容省略】

如果你不懂什么叫除以2,请翻阅小学数学教程。
17-10-12 16:15
楼主的贴子标题是左移,而内容是右移,左移动相当于乘2,而右移动相当于除2,有区别!
17-10-12 18:24
我可能没表达清楚!我说的意思是字的右移和左移,每次移一个字的位置!我想实现双字的右移和左移,每次移一个双字的位置!
每一秒依次左移或右移一个双字的位置,共十个位置!每秒平均一次!得一每秒更新一次的平均值!
17-10-12 19:02

引用 845352686 在 2017/10/12 19:02:46 发言【内容省略】

你累加10次采集值除以10不就好了,反正是浮点数,又不需要考虑溢出的问题。
Good Luck~
17-10-12 19:37

引用 cvlsam 在 2017/10/12 19:37:24 发言【内容省略】

这是读电表的实时功率做需量控制,打个比方如果要每秒累加一次要10个要十秒出一个平均值!
如果用右移指令每秒把数据右移一个字的位置,这样每秒都可以有10个数据可以求和做平均值!
如果要是一分钟60个数据做求和平均。前一种方式要一分钟才能得到一个平均值!而后一种在初始装满60个数据后,以后通过每秒右移一次先进后出!就可以每秒更新求得一个60个数据的平均值!
17-10-12 20:03

引用 845352686 在 2017/10/12 20:03:34 发言【内容省略】

那你的描述不是要得到10个数的平均值,而是应该是A时间段到B时间段的采用平均值。
那需要移位干什么,间接寻址(或者称作变址)就可以了。
信捷的PLC抄三菱的,应该有变址的功能,且支持C语言,那么用数组的下标就可以了。
Good Luck~
17-10-12 20:30

引用 cvlsam 在 2017/10/12 20:30:04 发言【内容省略】

我说的采样平均值方式就是和下面滤波的例子是一个意思!就通过移动才能实现先进先出求平均值!
《递推平均滤波法(又称滑动平均滤波法)》
   A、方法:
       把连续取N个采样值看成一个队列
       队列的长度固定为N
       每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据.(先进先出原则)
       把队列中的N个数据进行算术平均运算,就可获得新的滤波结果
17-10-12 20:59

上一页下一页

工控新闻

更多新闻资讯