发布于 2015-06-02 14:57:52
5楼
通过开关量 ,利用变频器内部电动电位计进行速度加减(PLC TO drive 2个Q点),当然多段速度给入也是一个选择方案。
至于运行多久速度切换,仅仅是一个逻辑关系,
自己定做斜坡或者采用装置斜坡进行速度升降,根据负载的变化决定你的升级斜坡,也就是加减速时间。
根据你的描述,估计是没有编码器等反馈的,则标准V/F控制,给定频率完成转速控制。
采用内部电动电位计教灵活而已。
程序例子//
VAR_INPUT
pluse:BOOL:=false; //1秒脉冲
run:ARRAY[0..3] OF BOOL:=false; //运行信号反馈
fault:ARRAY[0..3] OF BOOL:=false; //故障信号反馈
set_speed:ARRAY[0..3] OF REAL:=0.0; //设定速度 量纲HZ
mark:REAL; //死区设定,考虑到如果设定速度为40.5,等非整数频率
END_VAR
VAR
I:INT;
ep:ARRAY[0..3] OF BOOL; //加速上升沿
ed:ARRAY[0..3] OF BOOL; //减速上升沿
END_VAR
VAR_OUTPUT
// Output Parameters
speed_add:ARRAY[0..3] OF BOOL:=false; //减速信号 给入装置 开关量输入 电动电位计控制
speed_sub:ARRAY[0..3] OF BOOL:=false; //减速信号,同上
death:ARRAY[0..3] OF BOOL:=false; // 是否在死区状态
act_speed:ARRAY[0..3] OF REAL:=0.0; // 实际速度 反馈 注意:这个不是真实采样来自装置的
END_VAR
FOR i:= 0 TO 3 BY 1 DO //针对三台装置
// Statement Section
IF set_speed[i]>=50.0 THEN
set_speed[i]:=50.0;
ELSIF set_speed[i] <= 0.0 THEN
set_speed[i]:=0.0;
END_IF;
IF act_speed[i]<= 0.0 THEN
act_speed[i]:=0.0;
ELSIF act_speed[i]>= 50.0 THEN
act_speed[i]:=50.0;
END_IF;
IF run[i] THEN
IF speed_add[i] AND NOT ep[i] THEN
act_speed[i]:= act_speed[i] +1;
ep[i]:=true;
ELSIF NOT speed_add[i] THEN
ep[i]:=false;
END_IF;
IF speed_sub[i] AND NOT ed[i] THEN
act_speed[i]:= act_speed[i] - 1;
ed[i]:=true;
ELSIF NOT speed_sub[i] THEN
ed[i]:=false;
END_IF;
END_IF;
IF fault[i] OR NOT run[i] THEN
speed_add[i]:=false;
speed_sub[i]:=false;
//set_speed[i]:=0.0;
act_speed[i]:=0.0;
END_IF;
speed_add[i]:= (set_speed[i] > act_speed[i]) AND pluse AND NOT death[i];
speed_sub[i]:= (act_speed[i] > set_speed[i]) AND pluse AND NOT death[i];
death[i]:= (set_speed[i] = act_speed[i]) OR ( ABS(set_speed[i] - act_speed[i])
END_FOR;