3个月前,我帮本溪冶金职业技术学校进一步完善了北科大研发的轧钢教学软件。只是升级其中一部分内容,完善板形的调控能力,模拟热连轧中F1-F7按钮控制后对弯辊和倾斜的调整,用画面的形式表达出来。
一个很关键的问题就是要考虑控制延后性,简单而言:F1调整要明显比F7调整滞后很多;当然压下量也略有不同。
在SCL程序中我设了近千个变量和几十个上升沿与计数器才解决这一问题。我把F1调整的部分编程语句记录在这里。
部分SCL程序
//如下if命令一直到程序末尾,修改时应注意。
IF Bx_start THEN
Bx_over:=FALSE;
//2-1F1倾斜调整开始F1增
//点击一次执行一次的上升沿
BxF11FP:=BxF11 AND ( NOT BxF11LS);
BxF11LS:=BxF11;
//如果按钮点击,执行F1计数器BxF11N的累加
IF BxF11FP THEN
BxF11N:=BxF11N+1;
BxF11S001:=TRUE;
BxF11S002:=TRUE;
BxF11S003:=TRUE;
BxF11S004:=TRUE;
BxF11S005:=TRUE;
END_IF;
//防止计数器的数值太大,设定上限为6;短时间内wincc按钮的点击次数不会多与6。
//这与上面只有五组数据BxF11S005对应。
IF BxF11N>=6 THEN;
BxF11N:=1;//大于等于6后置1;
END_IF;
//****F11的第1次调节
BxF11FP001:=BxF11N=1 AND ( NOT BxF11LS001);
BxF11LS001:=(BxF11N=1);
//第一次按钮调节1次后BxF11N=1时执行下述
IF BxF11FP001 THEN
BxF11LSY001:=TRUE;
END_IF;
IF BxF11LSY001 AND BxF11S001 THEN
BxF11time001:=BxF11time001+1;
END_IF;
IF BxF11time001>=BxF1timelag AND BxF11S001 THEN // 依据F1-F4的不同修改具体时间延时;
BxF11y001:= BxF11yadd*(1+level*SIN(second)); //请注意,这个是真正的此次点击增益函数
BxF11time001:=0;//执行函数增加一次后此次按钮点击结束。
BxF11S001:=FALSE;
BxF11LSY001:=FALSE;
ELSE
BxF11y001:=0;
END_IF;
(zhagang.org)