温柔的郎
级别: 略有小成
精华主题: 0
发帖数量: 112 个
工控威望: 291 点
下载积分: 899 分
在线时间: 75(小时)
注册时间: 2008-05-02
最后登录: 2024-03-28
查看温柔的郎的 主题 / 回贴
楼主  发表于: 2019-06-24 14:51
各位大神们,我做了个模拟量按顺序存储的程序,但却同时全部存储,不是按顺序存储的,请大神们帮忙看下,哪里出了问题!!

具体应用:(step7程序)
同一个模拟量采集进来处理完毕的值,按顺序分别存放到DB1的地址里,
1s模拟量能采集几次,就存放几个地址,采集次数是受程序扫描周期影响到,目前暂定存储20次,
OB1
OPN   DB     1                    //打开DB 10
      L     P#12.0                      //初始读指针(标红色处可按实际应用的地址替代,例如10.0)
      LAR1                              //将累加器1中的值(指针P#12.0)装载到地址寄存器1中;
      L     P#0.0                       //初始写指针(标红色处可按实际应用的地址替代,例如10.0)
      LAR2                              //将累加器1中的值(指针P#0.0)装载到地址寄存器2中;
      CALL  FC     1
      L     20                          // 20个字的循环计数为初值
M001: T     MB    20                    //计数值 送入MB 10
      L     MW [AR1,P#0.0]              //按读指针指示的地址读数据
      T     DBW [AR2,P#0.0]             //按写指针指示的地址写数据
//  +AR1  P#2.0                       //读指针指向下一数据地址
      +AR2  P#2.0                       //写指针指向下一数据地址
      L     MB    20                    //取循环计数值20
      LOOP  M001                        //循环计数值如为0则结束循环;如不为0减1后则转向标号为M001的语句,继续循环。


说明下,此功能是吧MW12的值按顺序存放进DB1.DBW0开始的20个地址里面
MW12是个随时间不停变换的量,比如模拟量采集进来的量,
FC1是个计数器,随时产生累加变化,送入MW12,使MW12产生变化,
累计传送20次,
现在模拟的现象是,DB1.DBW0开始的20个地址同步变化,不是按顺序变化的,理论上应该按顺序增大,因为我的FC1产生的计数器是按顺序增大的,
[ 此帖被温柔的郎在2019-06-26 17:25重新编辑 ]
附件: cs3.rar (60 K) 下载次数:83
网站提示: 请不要用迅雷下载附件,容易出错