如何使用PLC开方 点击:3656 | 回复:13



sx-rj

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 55回
  • 年度积分:0
  • 历史总积分:104
  • 注册:2005年7月08日
发表于:2010-09-30 06:52:13
楼主
如何使用PLC开方

我使用一个孔板流量计,它产生4-20毫安电流信号,但这个信号和流量不是线性关系,需要开方以后才能换算流量,我不知道如何开方,如何换算流量,我使用的S7-200的PLC,三菱FX2N的软件我也有,不知道做用过类似的工程能否给个示例,谢谢了。



abysmal

  • 精华:1帖
  • 求助:0帖
  • 帖子:12帖 | 2176回
  • 年度积分:6
  • 历史总积分:11194
  • 注册:2001年10月26日
发表于:2010-09-30 08:02:41
1楼
一般PLC里都有开方指令,仔细查查指令手册先。

万一没有或找不到,有个估算方法。

比如你要算a = 54321的开方,你先随便估计一个数(就尽量选同一个数量级吧):x0 = 200。

x1 = 0.5 * (x0 + a / x0) = 235.8025
x2 = 0.5 * (x1 + a / x1) = 233.0845
x3 = 0.5 * (x2 + a / x2) = 233.0687
x4 = 0.5 * (x3 + a / x3) = 233.0687

所以54321的开方就是233.0687。

云锋

  • 精华:1帖
  • 求助:4帖
  • 帖子:252帖 | 5541回
  • 年度积分:0
  • 历史总积分:30376
  • 注册:2005年6月24日
发表于:2010-09-30 10:01:36
2楼
   有相应的功能块。

济南PLC

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 37回
  • 年度积分:0
  • 历史总积分:270
  • 注册:2010年9月26日
发表于:2010-09-30 15:16:03
3楼
S7—200的是SQRT指令

sfountain991

  • 精华:1帖
  • 求助:3帖
  • 帖子:5帖 | 39回
  • 年度积分:0
  • 历史总积分:114
  • 注册:2010年9月27日
发表于:2010-09-30 15:44:18
4楼
2楼的真牛,呵呵,学习了,这样也可以

wwk21

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 3回
  • 年度积分:0
  • 历史总积分:13
  • 注册:2005年12月13日
发表于:2010-10-03 00:14:51
5楼

在表上做开方不完事了

shang911

  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 15回
  • 年度积分:0
  • 历史总积分:571
  • 注册:2003年3月29日
发表于:2010-10-05 20:21:15
6楼
学习了。。。。。。。。。

饶歌

  • 精华:4帖
  • 求助:0帖
  • 帖子:330帖 | 6019回
  • 年度积分:0
  • 历史总积分:23673
  • 注册:2010年2月20日
发表于:2010-10-05 20:38:25
7楼

如果开3次、4次甚至N次方怎么办?

文摘兄有算法吗?

yjig

  • 精华:2帖
  • 求助:5帖
  • 帖子:97帖 | 5237回
  • 年度积分:0
  • 历史总积分:12514
  • 注册:2004年6月04日
发表于:2010-10-06 08:47:47
8楼

如果开3次、4次,再多就麻烦了,现就以3次为例。方法也基本差不多,假定被开3次方数是100,先以一假定数2代入,100/2=50,50/2=25,25/2=12.5,12.5>2,意味着原来假定的2小了,需要增加。

增加多少较适宜,按黄金分割法,(12 .5-2)/2,也就是原来的2再增加5,以7代入,并再次计算分析。

100/7=14,14/7=2,2/7=0.3,0 .3<7,意味着7大了,按以上方式再次调整。

sx-rj

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 55回
  • 年度积分:0
  • 历史总积分:104
  • 注册:2005年7月08日
发表于:2010-10-08 21:19:38
9楼
高手真的很多,谢谢了

hxj1111

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 11回
  • 年度积分:0
  • 历史总积分:54
  • 注册:2009年11月16日
发表于:2010-10-14 16:41:21
10楼
汗。太复杂了吧,有不准确。A的a/b次方=B---编程为B=EXP(b/a*LNA)就搞定了

yjig

  • 精华:2帖
  • 求助:5帖
  • 帖子:97帖 | 5237回
  • 年度积分:0
  • 历史总积分:12514
  • 注册:2004年6月04日
发表于:2010-10-14 17:39:25
11楼

如果PLC已经具备开方功能,当然不需要这么算,没事找事!

如果PLC不具备开方功能,比如FX-1S的PLC,那怎么算?以下是本人编制的开方程序:

图中D0(32位)是被开方数,D2是开方运算结果,其运算误差<±1。 采用的有点类似黄金分割法,不断丢弃无用的区间,不断接近真值。 程序中有一丢弃方向的判断,即【DSUB D4 D2 D8】,也就是说预先假设的D2是加一调整补偿量,还是减一调整补偿量。



wingwf2000

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 455回
  • 年度积分:0
  • 历史总积分:1000
  • 注册:2008年1月09日
发表于:2010-10-27 18:07:10
12楼
引用:
“一般PLC里都有开方指令,仔细查查指令手册先。

万一没有或找不到,有个估算方法。

比如你要算a = 54321的开方,你先随便估计一个数(就尽量选同一个数量级吧):x0 = 200。

x1 = 0.5 * (x0 + a / x0) = 235.8025
x2 = 0.5 * (x1 + a / x1) = 233.0845
x3 = 0.5 * (x2 + a / x2) = 233.0687
x4 = 0.5 * (x3 + a / x3) = 233.0687

所以54321的开方就是233.0687。 ”


Xn=(Xn-1+A/Xn-1)/2,当Xn的极限存在时,极限就等于A的平方根

可以先将所给的数除以可能的最大值(假设为B,例如10000)B,假设B的算术平方根为C(可以事先算好存到PLC内),达到将数值归化为[0,1]之间的小数,将这个小数作为A,取X0=1,反复迭代知道Xn和Xn-1的差小于指定的误差,就选Xn*C作为所给定数的近似算术平方根

wingwf2000

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 455回
  • 年度积分:0
  • 历史总积分:1000
  • 注册:2008年1月09日
发表于:2010-10-27 18:09:50
13楼
可能在上面的X0取值为0.5会好一点,收敛可能快一点(这点没有确认过)

热门招聘
相关主题

官方公众号

智造工程师