设为首页收藏本站积分获取及使用技巧附件上传须知[求助-西门子PLC300/400]模拟量输入求平均·问题

追梦工控论坛|工控论坛-专业的Intouch论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

总共8197条微博

动态微博

查看: 3110|回复: 3

[求助-西门子PLC300/400]模拟量输入求平均·问题

[复制链接]

升级  36%

该用户从未签到

发表于 2014-3-18 19:48:57 | 显示全部楼层 |阅读模式

上传分享工控资料得追梦点,下载积分获取办法点击进入 ☆追梦点充值入口
发帖回帖赚金币兑换下载积分。上传附件须知点击进入

×

马上注册,结交更多工控达人,分享经验,让你轻松玩转追梦工控论坛。

已有帐号?  点击登录   或者        

支付宝扫一扫领红包
有一路模拟量,波动比较大,怎样通过程序来写一段求平均值,谢谢!</p>
让我们联手拒绝网络伸手党,下载积分获取办法&附件上传须知 ☆追梦点充值入口





+1
3113°C
3
  • ULxbhnVd
  • wbnrreu
  • 先锋攀
过: 他们

升级  24%

该用户从未签到

发表于 2014-3-18 20:22:18 | 显示全部楼层
1、可以应用冒泡排序方法进行排序,其后取位于中间的数值即可:
2、冒泡法程序,注意这是对双字进行排序,如果对字进行排序,需要将指针 DBD[AR1,P#4.0],改为 DBW[AR1,P#2.0]:
转帖:
假定十个数据,放在DB1中,安放顺序如下:
DBD0
DBD4

DBD36
下面是西门子的程序
OPN   DB    1                 /////打开DB1这个数据块
      L     10  ////装载10到MB0中,因为有十个数据,要进行十次排序,9次也可以的
LL0:  T     MB    0
      L     P#0.0   ////装载地址指针,这是关键,不要搞错了
      LAR1  
      L     9
LL1:  T     MB    2   ////内部循环,进行9次,直到把最大值排到最后
      L     DBD [AR1,P#0.0]
      L     DBD [AR1,P#4.0]
      <R   
      JC    LL2          ////比较前后两个值,如果前面大于后面的,则前后数据交换
      L     DBD [AR1,P#0.0]
      T     #m_temp
      L     DBD [AR1,P#4.0]
      T     DBD [AR1,P#0.0]
      L     #m_temp
      T     DBD [AR1,P#4.0]
LL2:  +AR1  P#4.0     ////指针自动进行加4,因为是浮点数,所以要跳过4个字节
      L     MB    2
      LOOP  LL1       ///这个指令自动的将A寄存器里的值减1
      L     MB    0
LOOP  LL0
                                                                                                                                                                                                                                                              
                                                        

升级  33.5%

该用户从未签到

发表于 2014-3-18 20:40:58 | 显示全部楼层
顶 楼上的  模拟量不稳定  是否和 实际相符?  如果是干扰 还是要治本  不能治标

升级  34%

该用户从未签到

发表于 2014-3-18 21:10:34 | 显示全部楼层
可以写一个定时中断,在中断中将模拟量的值做累加。
比如做一个200MS中断,在中断中将模拟量的值做累加放入MD0,同时对中断的执行次数进行计数放入MW4,(执行够5次后,将MD0除以5,结果放入MW6,同时将计数值MW4清零以便继续做累加,MW6中即是平均值)。
                                                                                                                                                                                                                                                                                                                                   
                                                                                                                                                                                                            过1秒加1次剔除最高和最低值,加后总数除次数再输出刷新。或将仪表信号负与24V-短接看能不能使信号平滑些,从源头处理问题比较好,对程序滤波不要抱太高的希望。
                                                                                                                                                                                                                                                                                                                                   
                                                                                                                                                                                                            可以写一个定时中断,在中断中将模拟量的值做累加。
比如做一个200MS中断,在中断中将模拟量的值做累加放入MD0,同时对中断的执行次数进行计数放入MW4,(执行够5次后,将MD0除以5,结果放入MW6,同时将计数值MW4清零以便继续做累加,MW6中即是平均值)。
1、可以应用冒泡排序方法进行排序,其后取位于中间的数值即可:
2、冒泡法程序,注意这是对双字进行排序,如果对字进行排序,需要将指针 DBD[AR1,P#4.0],改为 DBW[AR1,P#2.0]:
转帖:
假定十个数据,放在DB1中,安放顺序如下:
DBD0
DBD4

DBD36
下面是西门子的程序
OPN   DB    1                 /////打开DB1这个数据块
      L     10  ////装载10到MB0中,因为有十个数据,要进行十次排序,9次也可以的
LL0:  T     MB    0
      L     P#0.0   ////装载地址指针,这是关键,不要搞错了
      LAR1  
      L     9
LL1:  T     MB    2   ////内部循环,进行9次,直到把最大值排到最后
      L     DBD [AR1,P#0.0]
      L     DBD [AR1,P#4.0]
      <R   
      JC    LL2          ////比较前后两个值,如果前面大于后面的,则前后数据交换
      L     DBD [AR1,P#0.0]
      T     #m_temp
      L     DBD [AR1,P#4.0]
      T     DBD [AR1,P#0.0]
      L     #m_temp
      T     DBD [AR1,P#4.0]
LL2:  +AR1  P#4.0     ////指针自动进行加4,因为是浮点数,所以要跳过4个字节
      L     MB    2
      LOOP  LL1       ///这个指令自动的将A寄存器里的值减1
      L     MB    0
LOOP  LL0
                                                                                                                                                                                                                                                                                                                                   
                                                                                                                                                                                                            西门子官方提供有此样例程序。下载链接地址:http://support.automation.siemens.com/CN/view/zh/28027081
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

请珍惜自己的ID,严禁发布垃圾水贴,诸如adsf......顶......纯表情......多次重复回帖刷积分......轻则删帖警告,重则封禁!★请分享资料、经验或者赞助论坛,贡献一份力量★

关闭

最新活动上一条 /1 下一条

小黑屋|手机版|追梦工控论坛|工控论坛-专业的Intouch论坛 ( 皖ICP备10012005号 )|网站地图

GMT+8, 2025-5-7 06:20 , Processed in 0.103683 second(s), 21 queries , Gzip On, APCu On.

Powered by Dreamyiyi

© 2009-2025 工控论坛

快速回复 返回顶部 返回列表