首页 上一页 1 2 下一页 尾页

200 PLC实现最小二乘法 点击:2671 | 回复:23



谁的流年谁的殇

    
  • 精华:0帖
  • 求助:9帖
  • 帖子:26帖 | 421回
  • 年度积分:0
  • 历史总积分:1801
  • 注册:2011年4月19日
发表于:2012-10-30 17:13:10
楼主
求助帖100分-已结帖
  现在想用200PLC实现最小二乘法,X-时间,Y-检测压力。压力通过EM231模块进行采集。有公式,但是需要用到for 循环和累加器,之前从未用过200的这些指令,自己写的程序四个累加器根本不够用。项目很急,悬赏100分,解决了可以追加分数。谢谢各位!



东山脚下-骑士军团

  • 精华:0帖
  • 求助:9帖
  • 帖子:19帖 | 1235回
  • 年度积分:2
  • 历史总积分:4415
  • 注册:2012年4月06日
发表于:2012-10-30 20:57:20
1楼
模拟量的读入,转换成数字量,也学习学习

dianqi100

  • 精华:5帖
  • 求助:12帖
  • 帖子:219帖 | 1207回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2012-10-30 21:48:43
2楼

如果你使用的是一个4-20mA的压力传感器,测量值需经过一下转换:

输入转换:X=32000×(AIWx-6400)/(32000-6400)

谁的流年谁的殇

  • 精华:0帖
  • 求助:9帖
  • 帖子:26帖 | 421回
  • 年度积分:0
  • 历史总积分:1801
  • 注册:2011年4月19日
发表于:2012-10-31 08:30:51
3楼

回复内容:
对:dianqi100关于如果你使用的是一个4-20mA的压力传感器,测量值需经过一下转换:输入转换:X=32000×(AIWx-6400)/(32000-6400)内容的回复:


数字量转模拟量我会,就是不知道怎么计算公式:

 

x是时间,通过触摸屏设置。y是检测压力,每一秒采集一次数据,采集次数由x决定。

采集程序如下:

M1.0为检测压力开始的条件,T39为检测压力时间,实时压力保存在VD100中(已通过数模转换),然后由VD2000,VD2004……地址保存实时压力。

x平均值已通过等差公式求出来。y的平均值在以上公式的基础上加了如下程序:

将AC1中的实时数据放入VD400中进行累加,VW54为检测时间,每秒钟检测一次,所以y的平均值为累加后的值除以检测时间。现在不知道VD400中的数据会不会累加。如果不会的话,用for循环语句怎么编程。依此编写x平方和y平方,累加器不够用。

wyb2866255---王者之师

  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2012-10-31 17:22:50
4楼
上面的程序不应用前沿“P”,因为VW200=0比较相等时,如用前沿P此程序只能执行i一次,故VD400中的数据是不会累加的。把2个“P”及N 去掉就可以了,即在VW200=0的间隔时间内,每扫描一次,就执行1次累加,再将AC1加4。。。

sder

  • 精华:1帖
  • 求助:1帖
  • 帖子:20帖 | 74回
  • 年度积分:0
  • 历史总积分:371
  • 注册:2004年2月07日
发表于:2012-10-31 20:15:30
5楼

不错。工程导航网:www.gkdir.com

谁的流年谁的殇

  • 精华:0帖
  • 求助:9帖
  • 帖子:26帖 | 421回
  • 年度积分:0
  • 历史总积分:1801
  • 注册:2011年4月19日
发表于:2012-11-01 17:22:31
6楼
回复内容:
对:wyb2866255---王者之师关于上面的程序不应用前沿“P”,因为VW200=0比较相等时,如用前沿P此程序只能执行i一次,故VD400中的数据是不会累加的。把2个“P”及N 去掉就可以了,即在VW200=0的间隔时间内,每扫描一次,就执行1次累加,再将AC1加4。。。 内容的回复:


程序没有写完整,网络21和网络20上升沿之前的程序是一致的。可以实现累加,已经试过了。就是如果需要三个以上的指针的话,除了AC1,AC2,AC3之外,其他的指针L和V怎么用。和累加器用法一样吗?

谁的流年谁的殇

  • 精华:0帖
  • 求助:9帖
  • 帖子:26帖 | 421回
  • 年度积分:0
  • 历史总积分:1801
  • 注册:2011年4月19日
发表于:2012-11-02 16:02:37
7楼
用了三个累加器,实现了x、y求和以及x平方的和。

谁的流年谁的殇

  • 精华:0帖
  • 求助:9帖
  • 帖子:26帖 | 421回
  • 年度积分:0
  • 历史总积分:1801
  • 注册:2011年4月19日
发表于:2012-11-02 16:07:09
8楼
回复内容:
对:wyb2866255---王者之师关于上面的程序不应用前沿“P”,因为VW200=0比较相等时,如用前沿P此程序只能执行i一次,故VD400中的数据是不会累加的。把2个“P”及N 去掉就可以了,即在VW200=0的间隔时间内,每扫描一次,就执行1次累加,再将AC1加4。。。 内容的回复:

VW202是时间的十位,VW200是时间的个位,VW202大于10时程序开始执行,每增加一秒VW200有个上升沿,程序可以反复执行,进行累加。

谁的流年谁的殇

  • 精华:0帖
  • 求助:9帖
  • 帖子:26帖 | 421回
  • 年度积分:0
  • 历史总积分:1801
  • 注册:2011年4月19日
发表于:2012-11-02 16:11:42
9楼

回复内容:
对:东山脚下-骑士军团关于模拟量的读入,转换成数字量,也学习学习 内容的回复:



模拟量转换成数字量采用2楼的公式(4-20mA电流)写入子程序:

谁的流年谁的殇

  • 精华:0帖
  • 求助:9帖
  • 帖子:26帖 | 421回
  • 年度积分:0
  • 历史总积分:1801
  • 注册:2011年4月19日
发表于:2012-11-02 16:16:26
10楼

回复内容:
对:东山脚下-骑士军团关于模拟量的读入,转换成数字量,也学习学习 内容的回复:



压力范围为0-2.5公斤(0-250KPa),简化公式后程序如下:

 

谁的流年谁的殇

  • 精华:0帖
  • 求助:9帖
  • 帖子:26帖 | 421回
  • 年度积分:0
  • 历史总积分:1801
  • 注册:2011年4月19日
发表于:2012-11-02 16:17:36
11楼
回复内容:
对:东山脚下-骑士军团关于模拟量的读入,转换成数字量,也学习学习 内容的回复:

最后在子程序中对其进行调用即可。

谁的流年谁的殇

  • 精华:0帖
  • 求助:9帖
  • 帖子:26帖 | 421回
  • 年度积分:0
  • 历史总积分:1801
  • 注册:2011年4月19日
发表于:2012-11-02 16:19:12
12楼
回复内容:
对:dianqi100关于如果你使用的是一个4-20mA的压力传感器,测量值需经过一下转换:输入转换:X=32000×(AIWx-6400)/(32000-6400)内容的回复:


多谢您的回帖!

miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:23帖 | 3065回
  • 年度积分:0
  • 历史总积分:12421
  • 注册:2008年9月18日
发表于:2012-11-02 16:55:19
13楼

你先说一下你那个公式, X,Y 上面的一横杠 是仕么意思?  要是BOOL 量就是取反的意思。

 

wyb2866255---王者之师

  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2012-11-02 23:31:49
14楼

回6楼:“除了AC1,AC2,AC3之外,其他的指针L和V怎么用”,可以用双字存储器(如VD90)代替累加器(AC1或AC2等)用法与用AC1一样:

wyb2866255---王者之师

  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2012-11-03 00:08:38
15楼

回8楼:“VW202是时间的十位,VW200是时间的个位,VW202大于10时程序开始执行,每增加一秒VW200有个上升沿,程序可以反复执行,进行累加。 VW200是时间的个位,它的计时单位是什么?是秒,还是mS? 你的程序是用比较指令,即使用VW200与0比较,VW200=0才会产生一“P”沿脉冲,执行一次运算。当VW200由=0执行加计数,其VW200的值就≠0,只带VW200计数65535个数后,VW200才会又=0,VW200与0比较指令才能发出第二次“P”。你说“每增加一秒VW200有个上升沿”,就是说VW200在1秒内计满65536个数,这计数频率F=65535HZ=65.5KHz,有这么高的时钟脉冲?即使有,1秒只i运算一次,如需运算几百次,这程序不是太慢了吗。不了解你的程序,仅从你说的提出不成熟的看法,仅供参考。

PLC技术军团-沈阳-稻草人

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 82回
  • 年度积分:0
  • 历史总积分:249
  • 注册:2005年11月09日
发表于:2012-11-03 09:31:15
16楼
单从公式讲是不是可以做一个子程序,公式每执行一次调用一次,检测时间知道了,那么计算次数也就知道了,用计数器控制调用次数(相当于FOR循环),子程序内计算当前采集次数的各个变量直接存储在VD中应该能够完成计算公式。

西门子200爱好

  • 精华:0帖
  • 求助:5帖
  • 帖子:5帖 | 9回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2012年11月04日
发表于:2012-11-04 16:15:56
17楼
为什么非得用FOR和N呢,为了克服15楼的问题,我感觉还是用中断指令,不受扫周期的影响

江湖走走--原创军团

  • [版主]
  • 精华:30帖
  • 求助:7帖
  • 帖子:836帖 | 7833回
  • 年度积分:193
  • 历史总积分:46108
  • 注册:2001年2月15日
发表于:2012-11-04 17:43:37
18楼
这个真的不错,继续讨论!咱学习学习!

谁的流年谁的殇

  • 精华:0帖
  • 求助:9帖
  • 帖子:26帖 | 421回
  • 年度积分:0
  • 历史总积分:1801
  • 注册:2011年4月19日
发表于:2012-11-05 13:54:16
19楼
回复内容:
对:miy_gongkong关于你先说一下你那个公式, X,Y 上面的一横杠 是仕么意思?  要是BOOL 量就是取反的意思。 内容的回复:


是平均值的意思。

谁的流年谁的殇

  • 精华:0帖
  • 求助:9帖
  • 帖子:26帖 | 421回
  • 年度积分:0
  • 历史总积分:1801
  • 注册:2011年4月19日
发表于:2012-11-05 13:58:53
20楼
回复内容:
对:PLC技术军团-沈阳-稻草人关于单从公式讲是不是可以做一个子程序,公式每执行一次调用一次,检测时间知道了,那么计算次数也就知道了,用计数器控制调用次数(相当于FOR循环),子程序内计算当前采集次数的各个变量直接存储在VD中应该能够完成计算公式。 内容的回复:


的确可以做成子程序,现在主要是先试试程序能不能在主程序中实现。唯一不恰当的地方是不需要计数器,因为子程序有其调用的条件。

热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 下一页 尾页