Block Diagram

TwinCAT PLC 库: 温度控制

功能结构图

TwinCAT温度控制库包括许多功能块，主要有以下方面：

  • 自整定算法 (FB_Selftuner)
  • 控制算法 (FB_ControlAlgorithm)
  • 设定值生成器 (FB_SetpointConditioner)
  • 控制值生成器 (FB_ControlValueConditioner)
  • 报警 (FB_Alarming)

这些功能块依次调用附属子模块。

这张图展示了各个独立的功能块。


FB_TempController

温度控制器功能块FB_TempController输入输出变量如下所示。所有控制器的参数通过结构体传递给功能块。结构体和枚举变量在 这里定义.

功能块

接口

VAR_INPUT
bOn : BOOL; (* start closed loop operating *)
bInit : BOOL; (* init controller *)
bTune : BOOL; (* start self tuning *)
bManual : BOOL; (* manual operation *)
bSelSetpoint : BOOL; (* FALSE = setpoint 1, TRUE = setpoint 2 *)
bSelCtrlParameterSet : BOOL; (* FALSE = internal set, TRUE = external set *)
bEnableSoftStart : BOOL; (* FALSE = no soft start, TRUE = soft start *)
bEnableRamping : BOOL; (* FALSE = no ramping, TRUE = ramping *)

fW1 : LREAL; (* first setpoint *)
fW2 : LREAL; (* second setpoint *)
fX : LREAL; (* actual value *)

(* alarming inputs *)
bOpenThermocouple : BOOL; (* thermocouple *)
bReverseThermocouple : BOOL;
bBackVoltage : BOOL;
bLeakage : BOOL; (* heating system *)
bShortCircuit : BOOL;
bOpenCircuit : BOOL;
sParaControllerExternal : ST_ParaController; (* external controller parameter set *)
(* logging *)
sLogData : ST_LogData := (bLog := FALSE, strLogFileName := '', strLogString := '' );
END_VAR
VAR_IN_OUT
sControllerParameter : ST_ControllerParameter; (* parameters *)
END_VAR
VAR_OUTPUT
fYAnalog : LREAL; (* control value analog *)
bYPWM : BOOL; (* control value PWM *)
bYDig : BOOL; (* 2-Point *)
bYDigPos : BOOL; (* 3-Point: control value digital positive *)
bYDigNeg : BOOL; (* 3-Point: control value digital negative*)

(* alarming *)
dwAlarm : DWORD; (* max. 32 alarms *)

(* state *)
iState : States := TC_STATE_IDLE;

(* general errors *)
bError : BOOL;
iErrorId : ErrorCodes;
END_VAR

输入

名字 | 单位 | 范围 | 描述
bOn | 1 | [TRUE,FALSE] | TRUE开启控制器。
bInit | 1 | [TRUE,FALSE] | 初始化标志，必须在控制器的第一个调用周期执行(TRUE) 。
bTune | 1 | [TRUE,FALSE] | 上升沿促发自整定。自整定运行时，如果关闭此信号，则自整定取消，控制器采用旧的参数
bManual | 1 | [TRUE,FALSE] | TRUE开启手动操作模式，如果FALSE，控制器重新回到自动操作状态。
bSelSetpoint | 1 | [TRUE,FALSE] | 两个设定值中二选一。 FALSE选择常规设定值，TRUE选择备用设定值。
bSelCtrlParameterSet | 1 | [TRUE,FALSE] | 两套控制参数中二选一。FALSE选择内部控制参数 internal (determined) parameter ，TRUE 选择外部控制参数external parameter.
bEnableSoftStart | 1 | [TRUE,FALSE] | TRUE开启软启动过程。
bEnableRamping | 1 | [TRUE,FALSE] | TRUE使能设定值改变时启用斜坡函数。
fW1 | °C | LREAL | 设定值
fW2 | °C | LREAL | 备用设定值，一般情况下小于设定值fW1。fSelSetpoint 用于切换选择fW1或 fW2.
fX | °C | LREAL | 实际值。这个值必须装换成LREAL类型。
bOpenThermocouple | 1 | [TRUE,FALSE] | TRUE代表热电偶开路，必须通过硬件监测(比如 KLxxxx)。
bReverseThermocouple | 1 | [TRUE,FALSE] | TRUE 代表热电偶接错电极方向，必须通过硬件监测。
bBackVoltage | 1 | [TRUE,FALSE] | TRUE 代表热电偶输入电压过高，必须通过硬件监测。
bLeakage | 1 | [TRUE,FALSE] | TRUE 代表加热单元漏电，必须通过硬件监测。
bShortCircuit | 1 | [TRUE,FALSE] | TRUE 代表加热单元短路，必须通过硬件监测。
bOpenCircuit | 1 | [TRUE,FALSE] | TRUE 代表加热单元开路，必须通过硬件监测。
sControllerParameter | none | Structure | 通用参数（采样频率等）通过数据结构方式连入功能块。
sParaControllerExternal | none | Structure | 这个结构体将外部控制参数连入功能块。
sLogData | none | Structure | 这个结构体传递日志到功能块(文件名等等)。.

输出

名字 | 单位 | 范围 | 描述
fYAnalog | none | LREAL | 模拟量输出控制量。
bYPWM | none | [TRUE,FALSE] | 布尔量输出，脉宽调制解调。
bYDig | none | [TRUE,FALSE] | 两位输出控制的布尔量输出(TRUE 100%输出, FALSE 关闭输出)
bYDigPos | none | [TRUE,FALSE] | 三位输出控制的布尔量输出 (TRUE 100%输出, FALSE 关闭输出)
bYDigNeg | none | [TRUE,FALSE] | 三位输出控制的布尔量输出 (TRUE -100%输出, FALSE 关闭输出)
dwAlarm | none | DWORD | 报警信号(参考间枚举变量ENUM ...)
iState | none | INT | 控制器当前状态(参考间枚举变量ENUM ...)
bError | none | [TRUE,FALSE] | 显示错误，如果有错误bError变TRUE.
iErrorId | none | INT | 如果bError变 TRUE，iErrorId显示错误号(参考间枚举变量ENUM ...)


Structure Definitions

TwinCAT PLC 库: 温度控制器

数据结构定义

ST_ControllerParameter

TYPE ST_ParaControlValue :
STRUCT
(***********************************************************************)
(* general parameters *)
iMode : E_ControlMode; (* 1=heating, 2=cooling, 3=heating&cooling *)
iReactionOnFailure : E_ReactionOnFailure; (* 0=controller off, 1=manual op, 2=yMin, 3=yMax *)

fYTune : LREAL; (* step change while tuning operation *)
fYStable : LREAL; (* tuning operation *)

dwAlarmSupp : DWORD; (* alarm suppression *)
tCtrlCycleTime : TIME; (* controller cycle time *)
tTaskCycleTime : TIME; (* plc task cycle time *)
(***********************************************************************)
(* setpoint parameters *)
fWMin : LREAL; (* lower limit *)
fWMax : LREAL; (* upper limit *)

(* start up *)
fWStartUp : LREAL; (* soft start plateau setpoint *)
tStartUp : TIME; (* soft start waiting time*)
bStartUpRamping : BOOL; (* enable ramping while start up phase *)
fWStartUpVeloPos : LREAL; (* max gradient for increasing setpoint in start up phase*)
fWStartUpVeloNeg : LREAL; (* max gradient for decreasing setpoint in start up phase *)

fWVeloPos : LREAL; (* max gradient for increasing setpoint *)
fWVeloNeg : LREAL; (* max gradient for decreasing setpoint *)
(***********************************************************************)
(* actual value parameters *)
bFilter : BOOL;
tFilter : TIME;
(***********************************************************************)
(* control value parameters *)
fYMin : LREAL; (* lower limit *)
fYMax : LREAL; (* upper limit *)
fYManual : LREAL; (* manual operation*)
fYOnFailure : LREAL; (* control value on failure *)
tPWMCycleTime : TIME; (* PWM *)
(***********************************************************************)
(* controller settings *)
bEnablePreController : BOOL; (* enable precontroller *)
bEnableZones : BOOL; (* enable zone around setpoint with open loop control *)
bEnableCVFilter : BOOL; (* enable filter for CV (type see iFilterType) *)
iFilterType : E_FilterType; (* filtertype of CV filter *)
iControllerType : E_ControllerType; (* used controller normally PID *)
(***********************************************************************)
(* min max temperatures *)
TempLow : LREAL;
TempLowLow : LREAL;
TempHigh : LREAL;
TempHighHigh : LREAL;
TempAbsoluteHigh : LREAL;
TempAbsoluteLow : LREAL;
END_STRUCT
END_TYPE

描述

名字 | 单位 | 范围 | 描述
iMode | none | INT | 控制器操作模式 (1 = 加热, 2 = 冷却, 3 = 加热和冷却) (见下面)
iReactionOnFailure | none | INT | 参数错误 (见下面)
fYTune | none | LREAL | 自整定时的控制值 (通常 100%)
fYStable | none | LREAL | 自整定前稳定时期的控制值 (通常 0%)
dwAlarmSupp | none | DWORD | 报警掩码 (见下面)
tCtrlCycleTime | s | TIME | 控制器采样时间，每次采样时间内控制器重新计算控制值。
tTaskCycleTime | s | TIME | 任务周期时间，功能块被调用的间隔时间。
fWMin | K | LREAL | 最小设定值。
fWMax | K | LREAL | 最大设定值。
fWVeloPos | K/s | LREAL | 上升斜率
fWVeloNeg | K/s | LREAL | 下降斜率
fWStartUp | K | LREAL | 启动设定值
tStartUp | s | TIME | fWStartUp启动设定值工作时间
bStartUpRamping | none | [TRUE,FALSE] | 使能启动阶段启用斜坡函数
fWStartUpVeloPos | K/s | LREAL | 启动阶段上升斜率
fWStartUpVeloNeg | K/s | LREAL | 启动阶段下降斜率
fYMin | none | LREAL | 控制变量的最小值
fYMax | none | LREAL | 控制变量的最大值
fYManual | none | LREAL | 手动模式下的控制值
fYOnFailure | none | LREAL | 错误状态下的控制值
tPWMCycleTime | s | TIME | PWM周期时间
tFilter | s | TIME | 一阶低通滤波时间
bFilter | none | [TRUE,FALSE] | 使能实际值滤波
bEnablePreController | none | [TRUE,FALSE] | 使能前馈控制
bEnableZones | none | [TRUE,FALSE] | 使能开环控制，直到接近设定值。
bEnableCVFilter | none | [TRUE,FALSE] | 使能控制值滤波
iFilterType | none | ENUM | 控制值滤波方式 (见下面).
iControllerType | none | ENUM | 控制器算法选择 (见下面).
TempLow | K | LREAL | 温度低限一
TempLowLow | K | LREAL | 温度低限二
TempHigh | K | LREAL | 温度高限一
TempHighHigh | K | LREAL | 温度高限二
TempAbsoluteHigh | K | LREAL | 绝对温度高限
TempAbsoluteLow | K | LREAL | 绝对温度低限

描述

ST_ParaController

TYPE ST_ParaController :
STRUCT
(* Main Controller parameter set *)
KpMain : LREAL;
TnMain : LREAL;
TvMain : LREAL;
TdMain : LREAL;

(* Pre Controller parameter set *)
KpPre : LREAL;
TvPre : LREAL;
TdPre : LREAL;
END_STRUCT
END_TYPE

描述

名字 | 单位 | 范围 | 描述
KpMain | none | LREAL | 主控制器增益Kp
TnMain | s | TIME | 主控制器积分时间(积分部分).
TvMain | s | TIME | 主控制器微分时间(微分部分).
TdMain | s | TIME | 主控制器阻尼时间
KpPre | none | LREAL | 前馈控制器增益Kp
TvPre | s | TIME | 前馈控制器微分时间(微分部分).
TdPre | s | TIME | 前馈控制器阻尼时间

ENUM: 错误码

名字 | 描述
TC_ERR_NOERROR | 无错误
TC_ERR_INVALIDPARAM | 无效的参数
TC_ERR_NO_INIT | 功能块没有初始化
TC_ERR_NO_INFLECTION_POINT | 自整定无变化，整定不成功。
TC_ERR_INVALID_PARAM | 无效的参数
TC_ERR_INVALID_CYCLETIME | 无效的循环周期时间设定(采样时间和PWM时间).
TC_ERR_WRONG_TU | 找不到合适的自整定参数，可能是出错或取消了自整定过程。

ENUM: 出错反映

名字 | 描述
TC_OnFailureNoFailure | 如果出错（报警），不进行任何操作。
TC_OnFailureStopController | 如果出错（报警），控制器停止工作。
TC_OnFailureSetManMode | 如果出错（报警），切换到手动模式。
TC_OnFailureSetYMax | 如果出错（报警），设定值设为最大值。
TC_OnFailureSetYMin | 如果出错（报警），设定值设为最小值。

ENUM: ST_ControlMode

名字 | 描述
CTRLMODE_HEATING | 加热
CTRLMODE_COOLING | 冷却
CTRLMODE_HEATING_COOLING | 加热冷却

ENUM: 状态

名字 | 描述
TC_STATE_IDLE | 控制器关闭
TC_STATE_INIT | 控制器初始化
TC_STATE_OFF | 控制器关闭当前的运行。
TC_STATE_TUNE | 控制器自整定
TC_STATE_MANUAL_OPERATION | 控制器手动状态
TC_STATE_CLOSED_LOOP | 控制器自动状态
TC_STATE_TUNE_IDLE | 自整定开始但还未运行，空闲中。
TC_STATE_TUNE_PULSE | 计算延时时间的时间点
TC_STATE_TUNE_STEP | 正在计算延时时间和最大速度
TC_STATE_TUNE_READY | 自整定完成
TC_STATE_ERROR | 错误（逻辑错误）

ENUM: E_FilterType

名字 | 描述
E_FilterType_FIRSTORDER | 一阶低通滤波
E_FilterType_AVERAGE | 滑动平均值滤波

ENUM: E_ControllerType

名字 | 描述
E_ControllerType_PID | 标准PID算法
E_ControllerType_PIDD2 | 将要用的PID算法，未完成

报警掩码

名字 | 掩码 | 描述
nAlarmOpenThermocouple | 2#0000_0000_0000_0000_0000_0000_0000_0001 | 硬件：温度传感器开率
nAlarmReverseThermocouple | 2#0000_0000_0000_0000_0000_0000_0000_0010 | 硬件：温度传感器电极接反
nAlarmBackVoltage | 2#0000_0000_0000_0000_0000_0000_0000_0100 | 硬件：温度传感器电压过高
nAlarmLeakageCurrent | 2#0000_0000_0000_0000_0000_0000_0000_1000 | 硬件：加热器漏电
nAlarmShortCircuit | 2#0000_0000_0000_0000_0000_0000_0001_0000 | 硬件：加热器短路
nAlarmOpenCircuit | 2#0000_0000_0000_0000_0000_0000_0010_0000 | 硬件：集热器开路
nAlarmLimitLow | 2#0000_0000_0000_0000_0000_0001_0000_0000 | 软件：温度低限一报警
nAlarmLimitLowLow | 2#0000_0000_0000_0000_0000_0010_0000_0000 | 软件：温度低限二报警
nAlarmLimitHigh | 2#0000_0000_0000_0000_0000_0100_0000_0000 | 软件：温度高限一报警
nAlarmLimitHighHigh | 2#0000_0000_0000_0000_0000_1000_0000_0000 | 软件：温度高限二报警
nAlarmAbsoluteHigh | 2#0000_0000_0000_0000_0001_0000_0000_0000 | 软件：绝对温度高限报警
nAlarmAbsoluteLow | 2#0000_0000_0000_0000_0010_0000_0000_0000 | 软件：绝对温度低限报警


FB_TempController

TwinCAT PLC 库: 温度控制器

FB_CTRL_TempController

温度控制器功能块FB_TempController输入输出变量如下所示。所有控制器的参数通过结构体传递给功能块。结构体和枚举变量在 这里定义.

功能块

接口

VAR_INPUT
eCtrlMode : E_CTRL_MODE; (* controller mode: passive, activ, check *)
bSelSetpoint : BOOL; (* FALSE = setpoint 1, TRUE = setpoint 2 *)
fW1 : FLOAT; (* first setpoint *)
fW2 : FLOAT; (* second setpoint *)
fX : FLOAT; (* actual value *)
fYManual : FLOAT; (* manual control value *)
(* alarming inputs *)
bOpenThermocouple : BOOL; (* thermocouple *)
bReverseThermocouple : BOOL;
bBackVoltage : BOOL;
bLeakage : BOOL; (* heating system *)
bShortCircuit : BOOL;
bOpenCircuit : BOOL;
sParaControllerExternal : ST_CTRL_ParaController; (* external controller parameter set *)
END_VAR
VAR_IN_OUT
sControllerParameter : ST_CTRL_TempCtrlParameter; (* controller parameter set *)
END_VAR
VAR_OUTPUT
(* control output *)
fYAnalog : FLOAT; (* control value analog *)
bYPWMPos : BOOL; (* control value PWM *)
bYPWMNeg : BOOL; (* control value PWM *)
bYDigPos : BOOL; (* 3-Point: control value digital positive *)
bYDigNeg : BOOL; (* 3-Point: control value digital negative*)
(* alarming *)
dwAlarm : DWORD; (* max. 32 alarms *)
(*quality of control*)
fMaxOverShoot : FLOAT;
tStartUpTime : TIME;
(* state *)
eCtrlState : E_CTRL_STATE := eCTRL_STATE_IDLE;
(* controller parameter *)
sParaControllerInternal : ST_CTRL_ParaController;
(* general errors *)
bError : BOOL;
eErrorId : E_CTRL_ErrorCodes;
END_VAR

输入

名字 | 单位 | 范围 | 描述
eControlMode | 1 | E_CTRL_MODE | 切换控制模式。
bSelSetpoint | 1 | [TRUE,FALSE] | 两个设定值中二选一。 FALSE选择常规设定值，TRUE选择备用设定值。
fW1 | °C | LREAL | 设定值
fW2 | °C | LREAL | 备用设定值，一般情况下小于设定值fW1。fSelSetpoint 用于切换选择fW1或 fW2.
fX | °C | LREAL | 实际值。这个值必须装换成LREAL类型。
fYManual | -100% - +100% | LREAL | 手动模式下的控制值。
bOpenThermocouple | 1 | [TRUE,FALSE] | TRUE代表热电偶开路，必须通过硬件监测(比如 KLxxxx)。
bReverseThermocouple | 1 | [TRUE,FALSE] | TRUE 代表热电偶接错电极方向，必须通过硬件监测。
bBackVoltage | 1 | [TRUE,FALSE] | TRUE 代表热电偶输入电压过高，必须通过硬件监测。
bLeakage | 1 | [TRUE,FALSE] | TRUE 代表加热单元漏电，必须通过硬件监测。
bShortCircuit | 1 | [TRUE,FALSE] | TRUE 代表加热单元短路，必须通过硬件监测。
bOpenCircuit | 1 | [TRUE,FALSE] | TRUE 代表加热单元开路，必须通过硬件监测。
sControllerParameter | none | Structure | 通用参数（采样频率等）通过数据结构方式连入功能块。
sParaControllerExternal | none | Structure | 这个结构体将外部控制参数连入功能块。

输出

名字 | 单位 | 范围 | 描述
fYAnalog | none | LREAL | 模拟量输出控制量。
bYPWMPos | none | [TRUE,FALSE] | 布尔量输出，脉宽调制解调。(positive, 加热)
bYPWMNeg | none | [TRUE,FALSE] | 布尔量输出，脉宽调制解调。 (negative, 冷却)
bYDigPos | none | [TRUE,FALSE] | 三位输出控制的布尔量输出 (TRUE 100%输出, FALSE 关闭输出)
bYDigNeg | none | [TRUE,FALSE] | 三位输出控制的布尔量输出 (TRUE -100%输出, FALSE 关闭输出)
dwAlarm | none | DWORD | 报警信号(参考间枚举变量ENUM ...)
fMaxOverShoot | °C | LREAL | 最大过冲量，高于/低于设定值，以 °C为单位。
tStartUpTime | TIME | - | 第一次从开始到设定值的上升时间。
eCtrlState | none | E_CTRL_STATE | 实际控制器的状态。(参考间枚举变量ENUM ...)
sParaControllerInternal | none | Structure | 自整定的PID参数，内部参数
bError | none | [TRUE,FALSE] | 显示错误，如果有错误bError变TRUE.
iErrorId | none | INT | 如果bError变 TRUE，iErrorId显示错误号(参考间枚举变量ENUM ...)


Structure definitions

TwinCAT PLC 库: 温度控制器

数据结构定义

ST_ControllerParameter

TYPE ST_CTRL_TempCtrlParameter:
STRUCT
(***********************************************************************)
(* general parameters *)
iMode : E_CTRL_ControlMode; (* 1=heating, 2=cooling, 3=heating&cooling *)
iReactionOnFailure : E_CTRL_ReactionOnFailure; (* 0=controller off, 1=manual op, 2=yMin, 3=yMax *)
bSelCtrlParameterSet : BOOL; (* FALSE = internal set, TRUE = external set *)
dwAlarmSupp : DWORD; (* alarm suppression *)
tCtrlCycleTime : TIME; (* controller cycle time *)
tTaskCycleTime : TIME; (* plc task cycle time *)
(***********************************************************************)
(* tuning parameteer *)
iTuningMode : E_CTRL_TuneMode; (* only heating, only cooling, first heating then cooling or vice versa *)
tTuneStabilisation : TIME := t#20s; (* wait for a stable system *)
fEndTunePercentHeating : FLOAT := 80.0; (* switch to closed loop control when X > 0.8*W *)
fYTuneHeating : FLOAT; (* step change while tuning operation *)
fYStableHeating : FLOAT; (* tuning operation *)
fEndTunePercentCooling : FLOAT := 20.0; (* switch to closed loop control when X < 0.2*W *)
fYTuneCooling : FLOAT; (* step change while tuning operation *)
fYStableCooling : FLOAT; (* tuning operation *)
fScalingFactor : FLOAT := 1.0; (* Scaling factor for KP heating/cooling *)
(***********************************************************************)
(* setpoint parameters *)
fWMin : FLOAT; (* lower limit *)
fWMax : FLOAT; (* upper limit *)
(* start up *)
bEnableSoftStart : BOOL; (* FALSE = no soft start, TRUE = soft start *)
bEnableRamping : BOOL; (* FALSE = no ramping, TRUE = ramping *)
fWStartUp : FLOAT; (* soft start plateau setpoint *)
tStartUp : TIME; (* soft start waiting time*)
bStartUpRamping : BOOL; (* enable ramping while start up phase *)
fWStartUpVeloPos : FLOAT; (* max gradient for increasing setpoint in start up phase*)
fWStartUpVeloNeg : FLOAT; (* max gradient for decreasing setpoint in start up phase *)

fWVeloPos : FLOAT; (* max gradient for increasing setpoint *)
fWVeloNeg : FLOAT; (* max gradient for decreasing setpoint *)
(***********************************************************************)
(* actual value parameters *)
bFilter : BOOL;
tFilter : TIME;
(***********************************************************************)
(* deadband parameters *)
bDeadband : BOOL;
fEDeadband : FLOAT; (* deadband *)
(***********************************************************************)
(* control value parameters *)
fYMin : FLOAT; (* lower limit *)
fYMax : FLOAT; (* upper limit *)
fYManual : FLOAT; (* manual operation*)
fYOnFailure : FLOAT; (* control value on failure *)
tPWMCycleTime : TIME; (* PWM: period *)
tPWMMinOffTime : TIME; (* PWM: min off time *)
tPWMMinOnTime : TIME; (* PWM: min on time *)
tPWMWaitingTime : TIME; (* PWM: min waiting time *) (* not yet implemented !!!!*)
fYThresholdOff : FLOAT; (* 3-Point: Off threshold *)
fYThresholdOn : FLOAT; (* 3-Point: On threshold *)

nCyclesForSwitchOver : INT := 100;

(***********************************************************************)
(* controller settings *)
bEnablePreController: BOOL; (* enable precontroller *)
bEnableZones : BOOL; (* enable zone around setpoint with open loop control *)
bEnableCVFilter : BOOL; (* enable filter for CV (type see iFilterType) *)
iFilterType : E_CTRL_FilterType; (* filtertype of CV filter *)
iControllerType : E_CTRL_ControllerType; (* used controller normally PID *)
(***********************************************************************)
(* min max temperatures *)
TempLow : FLOAT;
TempLowLow : FLOAT;
TempHigh : FLOAT;
TempHighHigh : FLOAT;
TempAbsoluteHigh : FLOAT;
TempAbsoluteLow : FLOAT;
(***********************************************************************)
(* internal tuning parameters *)
fTuneKp : FLOAT := 1.2;
fTuneTn : FLOAT := 2.0;
fTuneTv : FLOAT := 0.42;
fTuneTd : FLOAT := 0.25;
END_STRUCT
END_TYPE

描述

名字 | 单位 | 范围 | 描述
通用参数 |  |  |
iMode | none | INT | 控制器操作模式 (1 = 加热, 2 = 冷却, 3 = 加热和冷却) (见下面)
iReactionOnFailure | none | INT | 参数错误 (见下面)
bSelCtrlParameterSet | none | BOOL | TRUE =使用外部参数, FALSE = 使用内部参数 (由自整定获得)
dwAlarmSupp | none | DWORD | 报警掩码 (见下面)
tCtrlCycleTime | s | TIME | 控制器采样时间，每次采样时间内控制器重新计算控制值。
tTaskCycleTime | s | TIME | 任务周期时间，功能块被调用的间隔时间。
自整定参数 |  |  |
iTuningMode | K | E_CTRL_TuneMode | 选择自整定模式 (见下面)
tTuneStabilisation | s | TIME | 自整定开始后的稳定时间。
fEndTunePercentHeating | % | (L)REAL | 加热自整定结束标志，当温度上升至设定值×fEndTunePercentHeating，结束自整定
fYTuneHeating | % | (L)REAL | 加热自整定时候的输出百分比
fYStableHeating | K | (L)REAL | 加热自整定开始前的输出设定值
fEndTunePercentCooling | % | (L)REAL | 冷却自整定结束标志，当温度下降至设定值×fEndTunePercentHeating，结束自整定
fYTuneCooling | % | (L)REAL | 冷却自整定时候的输出百分比
fYStableCooling | K | (L)REAL | 冷却自整定开始前的输出设定值
fScalingFactor | none | (L)REAL | 比例系数：加热自整定后，冷却自整定参数=加热自整定参数×scaling factor
设置值参数 |  |  |
fWMin | K | (L)REAL | 最小设定值.
fWMax | K | (L)REAL | 最大设定值
bEnableSoftStart | none | BOOL | FALSE = 不使能软启动, TRUE = 使能软启动
bEnableRamping | none | BOOL | FALSE = 不使能斜率, TRUE = 使能斜率
fWStartUp | K | (L)REAL | 软启动设定值
tStartUp | s | TIME | 软启动设定值保持时间
bStartUpRamping | none | [TRUE,FALSE] | 软启动使用斜率
fWStartUpVeloPos | K/s | (L)REAL | 软启动上升斜率
fWStartUpVeloNeg | K/s | (L)REAL | 软启动下降斜率
fWVeloPos | K/s | (L)REAL | 上升斜率
fWVeloNeg | K/s | (L)REAL | 下降斜率
输入值参数 |  |  |
tFilter | s | TIME | 一阶滤波时间
bFilter | none | [TRUE,FALSE] | 使能一阶滤波
deadband parameters |  |  |
bDeadband | none | [TRUE,FALSE] | TRUE = Deadband on, FALSE = Deadband off
fEDeadband | K | (L)REAL | Size of deadband in °C
控制值参数 |  |  |
fYMin | none | (L)REAL | 最小输出值
fYMax | none | (L)REAL | 最大输出值
fYManual | none | (L)REAL | 报警时的输出值
fYOnFailure | none | (L)REAL | 出错时的输出值
tPWMCycleTime | s | TIME | PWM周期时间
tPWMMinOffTime | s | TIME | PWM最小off时间
tPWMMinOnTime | s | TIME | PWM最小On时间
tPWMWaitingTime | s | TIME | PWM: 加热和冷却转换的延时时间
fYThresholdOff | % | (L)REAL | 3-Step: Off threshold
fYThresholdOn | % | (L)REAL | 3-Step: On threshold
nCyclesForSwitchOver | none | INT | 以上参数改变后执行的周期数 (软切换)
控制参数 |  |  |
bEnablePreController | none | [TRUE,FALSE] | 使能预测功能
bEnableZones | none | [TRUE,FALSE] | Switches open loop characteristic on until close to set value.
bEnableCVFilter | none | [TRUE,FALSE] | 使能输出值滤波
iFilterType | none | ENUM | 输出值滤波类型(see below).
iControllerType | none | ENUM | 选择控制算法 (see below).
报警参数 |  |  |
TempLow | K | (L)REAL | 温度低限一
TempLowLow | K | (L)REAL | 温度低限二
TempHigh | K | (L)REAL | 温度高限一
TempHighHigh | K | (L)REAL | 温度高限二
TempAbsoluteHigh | K | (L)REAL | 绝对温度高限
TempAbsoluteLow | K | (L)REAL | 绝对温度低限
专家用参数 |  |  |
fTuneKp | none | (L)REAL | 优化自整定参数
fTuneTn | none | (L)REAL | 优化自整定参数
fTuneTv | none | (L)REAL | 优化自整定参数
fTuneTd | none | (L)REAL | 优化自整定参数

描述

ST_CTRL_ParaController

TYPE ST_CTRL_ParaController :
STRUCT
(* Controller parameter set - heating *)
KpHeat : FLOAT;
TnHeat : TIME;
TvHeat : TIME;
TdHeat : TIME;

(* Controller parameter set - cooling *)
KpCool : FLOAT;
TnCool : TIME;
TvCool : TIME;
TdCool : TIME;
END_STRUCT
END_TYPE

描述

名字 | 单位 | 范围 | 描述
KpHeat | none | (L)REAL | 主控制器加热增益Kp
TnHeat | s | TIME | 主控制器加热积分时间(积分部分).
TvHeat | s | TIME | 主控制器加热微分时间(微分部分).
TdHeat | s | TIME | 主控制器加热阻尼时间
KpCool | keine | (L)REAL | 主控制器冷却增益Kp
TnCool | s | TIME | 主控制器冷却积分时间(积分部分).
TvCool | s | TIME | 主控制器冷却微分时间(微分部分).
TdCool | s | TIME | 主控制器冷却阻尼时间

ENUM: E_CTRL_ERRORCODES

见 TcControllerToolbox库文档。

ENUM: E_CTRL_ReactionOnFailure

名字 | 描述
eCTRL_ReactionOnFailure_NoFailure | 如果出错（报警），不进行任何操作。
eCTRL_ReactionOnFailure_StopController | 如果出错（报警），控制器停止工作。
eCTRL_ReactionOnFailure_SetManMode | 如果出错（报警），切换到手动模式。
eCTRL_ReactionOnFailure_SetYMax | 如果出错（报警），设定值设为最大值。
eCTRL_ReactionOnFailure_SetYMin | 如果出错（报警），设定值设为最小值。
eCTRL_ReactionOnFailure_SetYMean | 如果出错（报警），设定值设为平均控制值。（此功能未完成）

ENUM: E_CTRL_ControllerStateInternal

名字 | 描述
E_CTRL_ControllerStateInternalHeating | 内部
E_CTRL_ControllerStateInternalCooling | 内部

ENUM: E_CTRL_ControlMode

名字 | 描述
eCTRL_ControlMode_HEATING | 加热
eCTRL_ControlMode_COOLING | 冷却
eCTRL_ControlMode_HEATING_COOLING | 加热冷却

ENUM: E_CTRL_STATE

见 TcControllerToolbox库文档。

ENUM: E_CTRL_STATE_TUNING

名字 | 描述
eCTRL_STATE_TUNING_INIT | 自整定：初始化
eCTRL_STATE_TUNING_IDLE | 自整定：等待当且温度稳定
eCTRL_STATE_TUNING_PULSE | 自整定：还未实现
eCTRL_STATE_TUNING_STEP | 自整定：Tuning with step reponse
eCTRL_STATE_TUNING_READY | 自整定：计算参数
eCTRL_STATE_TUNING_ERROR | 自整定：自整定时出错

ENUM: E_CTRL_TuneMode

名字 | 描述
eCTRL_TuneMode_HEATING | 自整定：加热
eCTRL_TuneMode_COOLING | 自整定：冷却
eCTRL_TuneMode_HEATING_COOLING | 自整定：先加热，后冷却
eCTRL_TuneMode_COOLING_HEATING | 自整定：先冷却，后加热
eCTRL_TuneMode_OSCILLATION | 自整定：on-the-fly tuning with a defined oscillation (in planning)

ENUM: E_CTRL_FilterType

名字 | 描述
eCTRL_FilterType_FIRSTORDER | 一阶低通滤波
eCTRL_FilterType_AVERAGE | 滑动平均值滤波

ENUM: E_CTRL_ControllerType

名字 | 描述
eCTRL_ControllerType_PID | 标准PID控制器
eCTRL_ControllerType_PI | 标准PI控制器
eCTRL_ControllerType_PID_Pre | 标准PID控制器加前馈(准备制作中)
eCTRL_ControllerType_PIDD2 | 特殊PID控制器 (准备制作中)

报警掩码

名字 | 掩码 | 描述
nAlarmOpenThermocouple | 2#0000_0000_0000_0000_0000_0000_0000_0001 | 硬件：温度传感器开率
nAlarmReverseThermocouple | 2#0000_0000_0000_0000_0000_0000_0000_0010 | 硬件：温度传感器电极接反
nAlarmBackVoltage | 2#0000_0000_0000_0000_0000_0000_0000_0100 | 硬件：温度传感器电压过高
nAlarmLeakageCurrent | 2#0000_0000_0000_0000_0000_0000_0000_1000 | 硬件：加热器漏电
nAlarmShortCircuit | 2#0000_0000_0000_0000_0000_0000_0001_0000 | 硬件：加热器短路
nAlarmOpenCircuit | 2#0000_0000_0000_0000_0000_0000_0010_0000 | 硬件：集热器开路
nAlarmLimitLow | 2#0000_0000_0000_0000_0000_0001_0000_0000 | 软件：温度低限一报警
nAlarmLimitLowLow | 2#0000_0000_0000_0000_0000_0010_0000_0000 | 软件：温度低限二报警
nAlarmLimitHigh | 2#0000_0000_0000_0000_0000_0100_0000_0000 | 软件：温度高限一报警
nAlarmLimitHighHigh | 2#0000_0000_0000_0000_0000_1000_0000_0000 | 软件：温度高限二报警
nAlarmAbsoluteHigh | 2#0000_0000_0000_0000_0001_0000_0000_0000 | 软件：绝对温度高限报警
nAlarmAbsoluteLow | 2#0000_0000_0000_0000_0010_0000_0000_0000 | 软件：绝对温度低限报警


Regelalgorithmus

TwinCAT PLC 库: 温度控制器例程

例程

例子程序 有一个MAIN_Simu程序。.本示例程序对一个二阶过程进行了仿真，并可加载噪声。用TwinCAT ScopeView 采样数据到TwinCAT示波器中。

版本2.0 采用MAIN_Simu_V2_0仿真。

版本1.0采用MAIN_Simu_V1_0仿真。