1.示例程序的结构
打开硬件组态工具HW Config,双击机架中的CPU,打开CPU属性对话框。在“周期性中断”选项卡,将执行循环中断组织块OB35的时间间隔设置为200ms。保存和编译组态信息后,将组态数据下载到仿真CPU。程序运行时每隔200ms自动调用一次OB35。
刚进入RUN模式时,CPU执行一次OB100,在OB100和OB35中调用FB41和FB100,其背景数据块分别为DB41和DB100。各逻辑块和数据块的符号名见图9-11中的符号表。
图9-11 符号表
在OB1中,用T8和T9组成振荡电路(见图9-12),T8的常开触点的接通和断开的时间均为40s。"PID_DI".SP_INT是FB41的背景数据块PID_DI中存放控制器浮点数设定值的输入变量SP_INT。在T8的常开触点刚接通和刚断开时,分别将设定值SP_INT修改为浮点数20.0%和70.0%,设定值的波形为方波。
图9-12 OB1中的梯形图
3.起动组织块OB100
功能块中局部变量的初始值是该变量的默认值。如果在调用功能块时没有给输入、输出参数指定实参,该参数的值为初始值。
下面是OB100中的程序,在调用FB41和FB100时,只设置了少量的实参:
1)令起动标志COM_RST为TRUE,执行PID重启动功能,将PID控制器的内部参数设置为默认值。
2)设置采样周期CYCLE为200ms,FB100和FB41中的采样周期应与OB35的循环执行周期相同。
3)设置PID控制器的参数GAIN、TI和TD的初值。假设AO模块为双极性输出,设置控制器输出下限值为-100.0%,上限值为默认的100.0%。
下面是调用模拟被控对象的功能块FB100的程序,设置了以下输入参数:
1)令起动标志COM_RST为TRUE,初始化FB100的输出值和内部变量。
2)设置采样周期CYCLE为200ms。(www.xing528.com)
3)在FB100的局部变量表中,设置增益GAIN的初始值为3.0,3个惯性环节的时间常数(TM_LAG1~TM_TAG3)初始值分别为5s、2s和0s。
在退出OB100之前,用下面的程序将FB41和FB100的启动标志位COM_RST复位,将PID控制器的给定值设置为70.0%。
4.循环中断组织块OB35
为了保证PID运算的采样周期的精度,用循环中断组织块OB35调用FB41和FB100。
在OB35中,将会使用在OB100中设置的FB41和FB100的参数,直到用人机界面的IO域修改其中的某些参数。在OB100和OB35中未设置的FB41和FB100的输入、输出参数,将使用它们的初始值。在FB41和FB100的局部变量表或在线帮助中,可以看到局部变量的初始值。
FB41的背景数据块DB41的符号名为“PID_ID”,FB100的背景数据块DB100的符号名为“对象DI”。将PID控制器的输出变量LMN送给FB100的输入变量INV,将FB100的输出变量OUTV送给PID控制器的过程输入变量PV_IN,FB41和FB100组成了图9-4所示的闭环。因为是用软件对被控对象仿真,没有使用模拟量输入模块和模拟量输出模块,闭环中的变量均为浮点数。
FB41默认的设置为PI控制器,将参数D_SEL设置为1(TRUE),该控制器为PID控制器。设置MAN_ON为FALSE,控制器工作在自动方式。
下面的程序段2的指令用于计算微分操作的延迟时间TM_LAG,其推荐值为TD/5。
输入端的选择开关PVPER_ON为默认值FALSE,采用浮点数格式的过程变量。过程变量不是来自外设(AI模块),不用设置PV_PER(外设输入过程值)。因为PID的输出不是送给AO模块,不用设置I/O格式的控制器输出LMN_PER的实参。
在实际的语句表程序中,如果要给功能块的某个输入、输出变量加注释,必须设置该变量的实参。下面是循环中断组织块OB35的程序。
程序段2:计算微分操作的延迟时间,TM_LAG=TD/5
程序段3:调用连续PID控制器FB41
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。