西门子S7系列PLC在国内工控领域中使用很广,它的编程软件STEP7除了支持梯形图(LAD) ,指令表((STL)和功能块(FDB)语言编程,还提供结构控制语言SCL (Structure Control Language)编程,SCL非常适合复杂控制算法的编程。以S7300PLC作为控制器,采用SCL语言编写了功能块FB3来实现单神经元PID控制算法。
3.1 变量声明及初始化
采用SCL编写单神经元PID算法时,先要进行变量声明及初始化。变量包括输人变量、输出变量及中间变量。
根据单神经元PID控制算法,定义的输入变量包括设定值、过程值、学习速率、权系数、神经元的比例系数以及单神经元PID控制器输出的最大值最小值,并且在变量声明时给出了变量数据类型和初始值。SCL语言编写如下:
输出变量传送当前输出值到产生调用的块。单神经元PID控制算法的输出操作值即为输出变量。SCL语言的编写:
3.2 单神经元PID控制算法SCL编程
实现单神经元PID控制算法的SCL程序编程步骤如下:
1)计算偏差e(k);
2)计算神经元输人x;(k);
3)计算加权系数的调整值w;(k);
4)对w;(k)的归一化处理,计算可(k),
5)计算控制器的输出u(k),并进行限幅处理。
对SCL源程序文件进行编译,编译成功就生成单神经元PID功能块FB3,并保存在S7程序中的Blocks文件夹中,可以被其他程序调用,也可以作为通用功能块被其他用户使用。单神经元PID功能块FB3被调用时的梯形图如图2所示,左侧为输入参数,对应输入变量;右侧为输出参数,对应输出变量。在调用FB3时要对相应的参数赋实参,还需要指定一个背景数据块。