数据读取问题 点击:451 | 回复:9



yeye1984

    
发表于:2012-06-14 13:37:38
楼主
求助帖5分-已结帖

本人S300菜鸟一只,工作中遇到以下问题,现有CPU 313C-2 PtP现成系统一套,

要求我以100ms的频率采集DB区域的某一模拟量值,并读取出来共调试计算使用。

希望各位大侠能指点一下用什么方法实现最简单,最好能有类似的例子来参考学习,

万分感谢!



楼主最近还看过



wyb2866255---王者之师

  • 精华:73帖
  • 求助:0帖
  • 帖子:218帖 | 2872回
  • 年度积分:0
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2012-06-14 18:21:24
1楼

给你编段程序供参考:

      其DB30.DBW16为高速计数器的读数值,也可换为模拟量转换的数字量值。T0构成周期=10ms的振荡器,用T0的前沿进行读取数据,送入指针地址内容为地址的存储器里,指针地址加1,为下一个T0前沿送数做准备。

小小猫

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 51回
  • 年度积分:0
  • 历史总积分:263
  • 注册:2009年12月09日
发表于:2012-06-14 22:10:00
2楼

增加一个中断功能块,功能块的扫描频率定位100ms就行了

yeye1984

  • 精华:0帖
  • 求助:3帖
  • 帖子:4帖 | 10回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2012-06-15 08:29:14
3楼
回复内容:
对:wyb2866255---王者之师关于给你编段程序供参考:      其DB30.DBW16为高速计数器的读数值,也可换为模拟量转换的数字量值。T0构成周期=10ms的振荡器,用T0的前沿进行读取数据,送入指针地址内容为地址的存储器里,指针地址加1,为下一个T0前沿送数做准备。内容的回复:


非常感谢,真想拜你为师啊!谢谢!

上海精芬机电有限公司

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 109回
  • 年度积分:0
  • 历史总积分:477
  • 注册:2011年8月26日
发表于:2012-06-15 08:50:53
4楼

楼上回答的 很到位, 我发现 论坛里 多了 不少   ** -  王者之师 ,之类的名字????

 

 

飘风无影

  • 精华:0帖
  • 求助:5帖
  • 帖子:8帖 | 345回
  • 年度积分:0
  • 历史总积分:1175
  • 注册:2011年11月04日
发表于:2012-06-15 08:55:07
5楼
名副其实。。。。。。。。。。。。

kskstiy

  • 精华:0帖
  • 求助:1帖
  • 帖子:4帖 | 379回
  • 年度积分:0
  • 历史总积分:2649
  • 注册:2010年8月30日
发表于:2012-06-16 13:02:48
6楼

程序段1:

 A     M     50.2                                        
      JNB   _001
      L     P#0.0
      T     MD     0
_001: NOP   0
  程序段2:

 L     P#2.0
      T     MD     4
      L     P#10.0
      T     MD     8
      A     M    100.7
      JNB   SS
      L     MD     0
      LAR1 
      OPN   DB     1
      L     MD    12
      T     DBW 【AR1,P#0.0】
SS:   NOP   0
程序段3:

 A     M    100.7
      FN    M     50.1
      JNB   _004
      L     MD     0
      L     MD     4
      +D   
      T     MD     0
      L     W#16#1
      L     MD    12
      +D   
      T     MD    12
      L     MD     0
      L     MD     8
      >=D  
      =     M     50.2
_004: NOP   0

M100.7是系统时钟,MD0是地址起始地址;MD4是地址偏移量,因为你是要读模拟量,所以是字;MD8是要读取的地址的总长度,可以随便改。

MD12为变量,你也可以随便改。我做的是每接通一次M100.7,MD12中加1,然后把MD12的内容存入相应的DBW中,就是存入到DB1.DBW0-DB1.DBW8中循环存入

yeye1984

  • 精华:0帖
  • 求助:3帖
  • 帖子:4帖 | 10回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2012-06-19 11:38:30
7楼
回复内容:
非常感谢,好好学习一下

wyb2866255---王者之师

  • 精华:73帖
  • 求助:0帖
  • 帖子:218帖 | 2872回
  • 年度积分:0
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2012-07-04 16:03:02
8楼

楼主:你说“按照您的程序试验编程,发现DB1里的数据是空的。请问除了这个程序写进OB1,同时建立DB1以外,我还有别的需要做的工作吗?”

  1、 在1楼 编写的程序里没有编写高速计数器,故DB30.DBW16 恒=0,故采集数据总为0,使DB1里数据是空的。

   2、如果编了高速计数器,是否计数器没工作,你可在程序运行时监控高速计数器的输出口(COUNTVAL)或DB30.DBW16,看其是否是在时时计数,如DB30.DBW16不变且恒=0,则DB1里将为空的。

yeye1984

  • 精华:0帖
  • 求助:3帖
  • 帖子:4帖 | 10回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2012-07-11 14:28:34
9楼
问个问题plc300,我写了一句话
L MW 0
OPN DB 2
T DBW 【MD95】
仿真运行报错,md95是0.1s加一的变量 ,这可能是哪里出了问题呢
SSI ļʱ