西门子S7-200 PID向导形成得数据块为什么是这样 点击:2504 | 回复:3



张智勇

    
  • 精华:13帖
  • 求助:4帖
  • 帖子:344帖 | 4142回
  • 年度积分:0
  • 历史总积分:4044
  • 注册:2004年8月21日
发表于:2007-12-01 22:10:00
楼主
//----------------------------------------------------------------
//下列内容由 S7-200 的 PID 指令向导生成。
//PID 0 的参数表。
//----------------------------------------------------------------
VD0    0.0                         //过程变量
VD4    0.0                         //回路给定值
VD8    0.0                         //回路输出计算值
VD12   0.9                         //回路增益
VD16   12.1                        //采样时间
VD20   11.11                       //积分时间
VD24   10.11                       //微分时间
VD28   0.0                         //积分项前值
VD32   0.0                         //上次运算时存储的过程变量前值。
VB36   'PIDA'                      //扩展回路表标志
VB40   16#00                       //算法控制字节
VB41   16#00                       //算法状态字节
VB42   16#00                       //算法结果字节
VB43   16#03                       //算法配置字节
VD44   0.08                        //从‘高级’按钮或默认设置的偏差值
VD48   0.02                        //从‘高级’按钮或默认设置的滞后死区值
VD52   0.1                         //从‘高级’按钮或默认设置的起始输出步长值
VD56   7200.0                      //从‘高级’按钮或默认设置的看门狗超时值
VD60   0.0                         //由自动调节算法决定的增益值
VD64   0.0                         //由自动调节算法决定的积分时间值
VD68   0.0     &nbs



张智勇

  • 精华:13帖
  • 求助:4帖
  • 帖子:344帖 | 4142回
  • 年度积分:0
  • 历史总积分:4044
  • 注册:2004年8月21日
发表于:2007-12-01 22:14:00
1楼
中断程序如下
INTERRUPT_BLOCK PID_EXE:INT1
TITLE=此 POU 由 S7-200 指令向导的 PID 功能创建。
// 此中断程序执行 PID 定时中断。此中断子程序已附加在子程序"PID0_INIT"内。
BEGIN
Network 1 
LD     SM0.0
INCW   VW80
Network 2 
LDW>=  VW80, +121
MOVW   +0, VW80
NOT
JMP    0
Network 3 
LD     SM0.0
PID    VB0, 0
Network 4 
LBL    0
END_INTERRUPT_BLOCK

张智勇

  • 精华:13帖
  • 求助:4帖
  • 帖子:344帖 | 4142回
  • 年度积分:0
  • 历史总积分:4044
  • 注册:2004年8月21日
发表于:2007-12-01 22:15:00
2楼
SUBROUTINE_BLOCK PID0_INIT:SBR1
TITLE=此 POU 由 S7-200 指令向导的 PID 功能创建。
// 要在用户程序中使用此配置,请在每个扫描周期内使用 SM0.0 在主程序块中调用此子程序。此代码配置 PID 0。在 DB1 中可以找到从 VB0 开始的 PID 回路变量表。此子程序初始化 PID 控制逻辑使用的变量,并启动 PID 中断程序 "PID_EXE"。PID 中断程序会根据 PID 采样时间被周期性调用。如需 PID 指令的完整说明,请参见《S7-200 系统手册》。注意:当 PID 位于手动模式时,输出应该通过写入一个标准化的数值(0.00 至 1.00)至手动输出参数来控制,而不是直接改动输出。这将使 PID 返回至自动模式时保持输出无扰动。
VAR_INPUT
PV_I:INT; // 过程变量输入:范围从 11111 至 22222
Setpoint_R:REAL; // 给定值输入:范围从 1.1 至 11.1
END_VAR
VAR_OUTPUT
Output:INT; // PID 输出:范围从 10101 至 20202
END_VAR
VAR
Tmp_DI:DWORD;
Tmp_R:REAL;
END_VAR
BEGIN
Network 1 
// 通电第一个扫描周期不跳转,以后均跳转定时中断设置
LDN    SM0.1
JMP    0
Network 2 // 每隔100毫秒中断INT1一次,处理PID指令
LD     SM0.0
MOVB   100, SMB34                  //PID中断子程序的装载时间
ATCH   INT1, 10                    //设置一个中断,调用PID执行
ENI
Network 3 
LD     SM0.1
MOVW   +0, VW80
NOT
PID    VB0, 0
Network 4 
LBL    0
Network 5 
LD     SM0.0
LPS
-R     1.1, LD2
/R     10.0, LD2
AR<    1.0, LD2
MOVR   1.0, LD2
LRD
AR>    0.0, LD2
MOVR   0.0, LD2
LPP
MOVR   LD2, VD4
Network 6 
LD     SM0.0
LPS
ITD    LW0, LD8
-D     +11111, LD8
DTR    LD8, LD12
/R     11111.0, LD12
AR<    1.0, LD12
MOVR   1.0, LD12
LRD
AR>    0.0, LD12
MOVR   0.0, LD12
LPP
MOVR   LD12, VD0
Network 7 
LD     SM0.0
MOVR   VD8, LD12
*R     10101.0, LD12
ROUND  LD12, LD8
+D     +10101, LD8
DTI    LD8, LW6
Network 8 
LDN    SM0.0
BMB    VB0, VB0, 120
END_SUBROUTINE_BLOCK

abruce

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2010年1月23日
发表于:2010-04-11 12:27:16
3楼
是有点差异!我也想看看里面的自整定是如何运行的

热门招聘
相关主题

官方公众号

智造工程师