西门子200模拟量采集的程序请教大家。 点击:3187 | 回复:11



popmusic

    
  • 精华:1帖
  • 求助:6帖
  • 帖子:213帖 | 456回
  • 年度积分:1
  • 历史总积分:4478
  • 注册:2009年8月04日
发表于:2011-08-24 09:18:09
楼主
现在PLC接的是K型热电偶,经程序转换出当前温度VW0,因为需要采集到600ms温度波动范围,需要在600ms一个过程中采集60次,也就是10ms采集一次数据,然后需要将10ms采集一次的数据分别放到60个寄存器中,来记录这60次温度值的变化,也便于调出10ms一个周期内温度的变化。
经试验得知,程序扫描周期低于10ms,模拟模块10ms采集一次温度也没有问题。
现在就是说有没有好的办法写程序,来记录这60次10ms数据的变化呢?也什么好的办法将10ms采集到的数据分别放到60个存储器中呢?
请师傅们指教。



beichen

  • 精华:0帖
  • 求助:0帖
  • 帖子:49帖 | 804回
  • 年度积分:0
  • 历史总积分:3665
  • 注册:2007年7月02日
发表于:2011-08-24 10:02:50
1楼

在10ms定时中断里用指针来做啊:

主程序:

LD SM0.1
MOVD &VB1000, VD2000

中断程序

LD SM0.0
MOVD &VB1000, VD2000
MOVW AIW0, *VD2000
+D 2, VD2000

数据在VW1000,VW1002,VW1004,VW1006.......

beichen

  • 精华:0帖
  • 求助:0帖
  • 帖子:49帖 | 804回
  • 年度积分:0
  • 历史总积分:3665
  • 注册:2007年7月02日
发表于:2011-08-24 10:04:27
2楼

打错了,

中断程序

LD SM0.0
MOVW AIW0, *VD2000
+D 2, VD2000

beichen

  • 精华:0帖
  • 求助:0帖
  • 帖子:49帖 | 804回
  • 年度积分:0
  • 历史总积分:3665
  • 注册:2007年7月02日
发表于:2011-08-24 10:05:46
3楼
打错了,

中断程序

LD SM0.0
MOVW AIW0, *VD2000
+D 2, VD2000

popmusic

  • 精华:1帖
  • 求助:6帖
  • 帖子:213帖 | 456回
  • 年度积分:1
  • 历史总积分:4478
  • 注册:2009年8月04日
发表于:2011-08-24 11:25:31
4楼
如何再将这60个数据,已200ms的周期从VW1000,VW1002,VW1004,VW1006....... 传送到一个存储器VD0中呢?请指教

彩云之滇东北

  • 精华:20帖
  • 求助:5帖
  • 帖子:107帖 | 2725回
  • 年度积分:0
  • 历史总积分:21121
  • 注册:2005年6月14日
发表于:2011-08-24 12:20:54
5楼
用一个堆栈来处理60个数据        

beichen

  • 精华:0帖
  • 求助:0帖
  • 帖子:49帖 | 804回
  • 年度积分:0
  • 历史总积分:3665
  • 注册:2007年7月02日
发表于:2011-08-24 13:01:11
6楼

看一下FIFO指令,用表来做,或者还是用指针来传送数据,假设T1为200ms定时器:

LD SM0.1
MOVD &VB1000, VD2004 // 初始化指针VD2004为VB1000的地址
MOVD &VB1118, VD2008 // 保存最后一个数据的地址VB1118

LD T1 // 200ms到
EU
MOVW *VD2004, VW2 // 将VD2004指向的数据传送到VD0的低2字节
+D 2, VD2004 // VD2004指向下一个数据(移动2个字节)
AD= VD2004, VD2008 // 如果到达最后一个数据
MOVD &VB1000, VD2004 // 指针VD2004回到VB1000

云锋

  • 精华:1帖
  • 求助:4帖
  • 帖子:252帖 | 5541回
  • 年度积分:0
  • 历史总积分:30376
  • 注册:2005年6月24日
发表于:2011-08-24 14:04:21
7楼

这是神马系统用的啊,实时性要求高啊。

600mS,60次采集。

ymtq

  • 精华:1帖
  • 求助:0帖
  • 帖子:8帖 | 425回
  • 年度积分:0
  • 历史总积分:874
  • 注册:2005年7月17日
发表于:2011-08-24 16:03:40
8楼

是不是事故录波程序啊

popmusic

  • 精华:1帖
  • 求助:6帖
  • 帖子:213帖 | 456回
  • 年度积分:1
  • 历史总积分:4478
  • 注册:2009年8月04日
发表于:2011-08-25 09:11:42
9楼
我试试填表指令存储,先入先出指令读出,做个程序试试,下午出结果

popmusic

  • 精华:1帖
  • 求助:6帖
  • 帖子:213帖 | 456回
  • 年度积分:1
  • 历史总积分:4478
  • 注册:2009年8月04日
发表于:2011-08-25 14:16:28
10楼
做了个程序实验了一下,当I0.2为ON时,开始10ms的速度记录vw110的数据,以vw204为首位,开始依次递加,记录60次后,也就是600ms过后,可以在状态表看到数值的10ms时间内的变化,我只是做了个简单的实验,说不定别的地方能用到。

然后再读出记录的60次数据,当I0.3为ON一次,从vw204开始传送到vw400中。

axingea

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 709回
  • 年度积分:0
  • 历史总积分:69
  • 注册:2011年12月21日
发表于:2017-11-16 19:00:17
11楼

感谢分享!!!!!!


热门招聘
相关主题

官方公众号

智造工程师