自己修修改改凑了一段SCL编写的单神经元自适应PID的程序请各位前辈斧正!!

已锁定

Mr.Zuo

  • 帖子

    2
  • 精华

    0
  • 被关注

    0

论坛等级:新手

注册时间:2015-05-20

普通 普通 如何晋级?

自己修修改改凑了一段SCL编写的单神经元自适应PID的程序请各位前辈斧正!!

940

0

2015-05-24 22:57:45

FUNCTION_BLOCK FB3
VAR_INPUT
SV:REAL;//设定值
PV:REAL;// 测量值
siteP:REAL:=0.4;//学习速率 P
siteI:REAL:=0.35;//学习速率 I
siteD:REAL:=0.4;//学习速率 D
wkp_1:REAL:=0.1;//比例系数(加权系数随机值)
wki_1:REAL:=0.1;//积分系数
wkd_1:REAL:=0.1;//微分系数
K:REAL:=0.12;//神经元的比例系数
LimitHigh:REAL:=100.0;//输出最大值
LimitLow:REAL:=0;//输出最小值
END_VAR
VAR_OUTPUT
u:REAL;//输出操作值
END_VAR
VAR //定义中间变量
e_i:REAL;u_i:REAL;//e_k为基本偏差量
e_1:REAL;//e(k-1)
e_2:REAL;//e(k-2)
x_1:REAL;//神经元输入信号,初值设为0
x_2:REAL;//神经元输入信号
x_3:REAL;//神经元输入信号
u_1:REAL;//
u_2:REAL;//
u_3:REAL;//
x:REAL;
i:INT:=0;//integer i实际为整形
wkp_i:REAL;wki_i:REAL;wkd_i:REAL;//加权系数(第i次)
wadd_i:REAL;//权值和
w11_i:REAL;w22_i:REAL;w33_i:REAL;//归一化各权值
END_VAR
BEGIN
FOR i:=0 TO 127 DO i:=i;
e_1:=0;//e(k-1)
e_2:=0;//e(k-2)
x_1:=0;//神经元输入信号,初值设为0
x_2:=0;//神经元输入信号
x_3:=0;//神经元输入信号
u_1:=0;//
siteP:=0.4;//学习速率 P
siteI:=0.35;//学习速率 I
siteD:=0.4;//学习速率 D
wkp_1:=0.1;//比例系数(加权系数随机值)
wki_1:=0.1;//积分系数
wkd_1:=0.1;//微分系数
K:=0.12;//神经元的比例系数

e_i:=PV-SV;
wkp_i:=wkp_1+siteP*e_i*u_1*(2*e_i-e_1); //比例系数
wki_i:=wki_1+siteI*e_i*u_1*(2*e_i-e_1); //积分系数
wkd_i:=wkd_1+sited*e_i*u_1*(2*e_i-e_1); //微分系数
x_1:=e_i-e_1; //神经元输入信号
x_2:=e_i; //神经元输入信号
x_3:=e_i-2*e_1+e_2; //神经元输入信号

wadd_i:=ABS(wkp_i)+ABS(wki_i)+ABS(wkd_i);
w11_i:=wkp_i/wadd_i;
w22_i:=wki_i/wadd_i;
w33_i:=wkd_i/wadd_i;
u_i:=u_1+K*(w11_i*(e_i-e_1)+w22_i*(e_i)+w33_i*(e_i-2*e_1+e_2)); //Control law 控制法则

IF u_i>20 //限幅
THEN u_i:=20;
ELSIF u_i<0
THEN u_i:=0;
ELSE u:=u_i;
END_IF;
e_2:=e_1;
e_1:=e_i;

u_3:=u_2;
u_2:=u_1;
u_1:=u_i;

wkp_1:=wkp_i;
wki_1:=wki_i;
wkd_1:=wkd_i;
//END.
END_FOR;
END_FUNCTION_BLOCK
自己修修改改凑了一段SCL编写的单神经元自适应PID的程序请各位前辈斧正!! 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54717条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。