四、STEP7实现的模糊控制算法
Siemens s7-300PLC的编程系统STEP7提供了丰富的功能模块,为模糊控制算法的实现提供了方便。为了简化程序编写量,提高程序的通用性并且方便调试,PLC程序设汁采用了模块化编程方法。编程语言采用梯形图(LAD)和语句表(STL)结合的形式。主模块OB1实现对子程序块的调用和数据的传递,0B35为中断服务程序模块。FBl模块为模糊控制器,完成整个模糊控制功能。它由FCl~FC4 4个子程序块组成。其中FCl完成e(液位偏差)和ec(偏差变化率)的计算;FC2进行模糊化处理,即完成精确量e,ec到模糊量E,EC的转换;FC3完成控制量表的查询功能;FC4完成模糊控制量U到精确量u的转化,并输出u。FBl依次调用4个子模块完成模糊控制各部分的功能,并实现他们之间的数据传递。FBl模糊控制器编制完成后,保存在STEP7标准库中,其具有很强的灵活性和通用性,如同STFP7中PID控制器(FB41)一样,方便调用。针对不同的被控变量,只要对FBl输入输出端进行正确的组态即可对变量进行模糊控制。数据块DB2作为FBl的背景数据块,存储量化因子Ke、Kec、Ku及其他参数。
整个程序设计的关键是模糊控制量表的查询部分,即FC3子程序块。在编程之前,将模糊控制量表中U的值按由上到下,由左到右的顺序依次置入数据块DBl中。数据类型为WORD型。首地址为DBWO,依次为DBW2、DBW4、…、DBW336(U的个数是13×13)。采用指针寻址的查表方法。为了简化设计,将输入模糊论域的元素[一6,…,+6]转化为[0,…,12]。控制量的基址为0,偏移地址为2×(l3×EC+E),由EC和E可以确定控制量的绝对地址为0+2×(13×EC+E)。
通过指针变量获得地址中存储的U的模糊值。
以下给出主要程序部分示例:
OB1主循环程序:
L PIW256//从SM334读入液位数据,外设地址为PIW256//
T MD0//将采集的液位数据存入M存储区//
L DB2.DBD14//把DB2中量化因子Ke存入M存储区//
T MD8
L DB2.DBD18//把DB2中量化因子Kec存入M存储区//
T MD12
L DB2.DBD22//把DB2中量化因子Ku存入M存储区//
T MD16
……
OB35中断子程序:调用FB1实现模糊控制
CALL FB1,DB2//调用FB1//
Fuzzy_On:=1
DB_No:=DB1
N:=6
PV:=MD0
SP:=MD4
Ke:=MD8
Kec:=MD12
Ku:=MD16
HLM_e:=1.000000e+001//误差上限值//
LLM_e:=-1.000000e+001//误差上限值//
……
e:=MD20//液位误差值存入M存储区//
ec:=MD24//液位误差变化率存入M存储区//
u:=PQW258//把控制量的值输出到SM334,地址为PQW258//
……
FC3子程序:实现模糊控制量表查询功能
L P#0.0 //利用指针寻址//
L #q4 //q4中存放控制量的绝对地址//
SLD 3
+D
T#P1
L DBW [#P1]
T MW 10 //将控制量U的值存入MW 10//
最后由FC4功能块实现控制量U从模糊量到精确量的转换,即U乘以量化因子Ku再经过限幅,将最终计算结果送到模拟量输出模块实现控制作用。
应用了基于PLC的模糊控制器,蒸发罐液位控制效果较以前有很大改善,整定时间缩短,超调量缩小,控制稳定。比较结果如图2,图3所示。
五、结 论
基于SIEMENS PLC实现模糊控制算法,既保留PLC控制的可靠、灵活等特点,又提高了控制系统的智能化程度。采用离线计算在线查询的方法将复杂的模糊控制计算融进查询表中,在实际控制中节省计算时间,使得控制算法简单明了。对于那些非线性、大滞后、数学模型难以建立的控制系统,基于PLC的模糊控制不失为一种较理想的可选方案.
台达DOP-W系列提供10.4”/12”/15&rdqu…
JetNet 3005G · 5口全千兆RJ-45交换机 …
显示规格 一般规格 环境规格 结构规格 外形…
功能规格 …
功能规格 …
西门子SIMATIC S7-400PLC的主要特色为:极高的处理…