利用S7-1200怎么实现滞后环节 点击:221 | 回复:1



流年3716

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 16回
  • 年度积分:0
  • 历史总积分:6
  • 注册:2015年7月19日
发表于:2016-11-01 11:35:54
楼主

西门子的PLC,1200系列,用的博图V13编程软件,如果用梯形图的话能不能实现史密斯预估器中的滞后环节呢,也就是说将3秒前的数据进行处理。谢谢各位




流年3716

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 16回
  • 年度积分:0
  • 历史总积分:6
  • 注册:2015年7月19日
发表于:2016-11-01 16:54:54
1楼

查阅了网上的说法,使用梯形图编程的话虽然思路简单,但是滞后时间较长的时候无法使用。

用语句表编程,如下:

利用寄存器间接寻址方式,把滞后数据存储到相应的存储单元,并能方便访问这些

数据,自由的存储、读取数据。队列存储及纯滞后信号产生的程序:

 

FUNCTION fc10 : VOID 

TITLE =

采集前三十秒钟数据

 

//

思路:前一个数据给下一个数据,最后数据舍去

,

采取间接寻址。

 

VERSION : 0.5 

V

AR_INPUT利用寄存器间接寻址方式,把滞后数据存储到相应的存储单元,并能方便访问这些数据,自由的存储、读取数据。队列存储及纯滞后信号产生的程序: 

FUNCTION fc10 : VOID TITLE =采集前三十秒钟数据 

//思路:前一个数据给下一个数据,最后数据舍去,采取间接寻址。 

VERSION : 0.5 VAR_INPUT

MeasuredValue : REAL  //测量数据 

AreaBottom: INT  //数据起始地址   

AreaLength : INT  //数据长度   

DataStore : BLOCK_DB  //数据存贮 

END_VAR 

VAR_TEMP 

  Number : INT  //循环计数器 

  BufferAR1 : DWORD  //用于AR1的当前内容的缓冲区   

  MiddleValue : REAL  //数值中间变量 

END_VAR 

BEGIN NETWORK TITLE = 

      TAR1  #BufferAR1; //把地址寄存器->缓冲区 

OPN   #DataStore; //打开数据块       

L     P#0.0;       

L     #AreaBottom;        

SLD   3; //转化为指针         

+D    ;  

LAR1  ; //把指针装载到地址寄存器1 

//**************************************************************** //数据循环,从最后的数据开始 

//****************************************************************       L     #AreaLength; //装载数据长度 

Next: T     #Number;        TAR1  ;        

      L     P#4.0;        -D    ; // 地址递减       

      LAR1  ;  

      L     DBD [AR1,P#0.0]; //上一个数据       

      T     DBD [AR1,P#4.0]; //下一个数据      

      L     #Number;        

      LOOP  Next; 

      L     #MeasuredValue; //测量数据->第一个数据       

      T     DBD [AR1,P#0.0];  

      LAR1  #BufferAR1; //把缓冲区内容->地址寄存器       

BEU   ; //结束 END_FUNCTION

END_FUNCTION

自己之前没用过语句表编程,大神帮解释一下?


热门招聘
相关主题

官方公众号

智造工程师