马上注册,享受更多特权
您需要 登录 才可以下载或查看,没有帐号?立即注册 ![](source/plugin/zhanmishu_wechat/template/static/img/wechat_login.png)
x
本帖最后由 小子龙 于 2023-5-30 18:09 编辑
在工控领域,大家对传递函数的概念应该不陌生,传递函数是描述线性系统动态特性的基本数学工具之一,经典控制理论的主要研究方法:“频率响应法和根轨迹法”都是建立在传递函数的基础之上。 通过传递函数,我们可以描述出很多经典的物理环节,举例比如大家比较熟知的弹簧阻尼系统:
对其进行受力分析可得:
通过拉格朗日变化(拉式变换),此处不再细说拉式变化,可自行搜索参考,可得到该弹簧阻尼系统输入到输出的传递函数为:
再比如我们比较熟知的一阶低通滤波环节,其滤波前输入到滤波后的输出的传递函数的表达式可以表示为: 因为传递函数都是s域中的输出和输入的表达关系,为连续的;在汇川的中型PLC中,因为采用的是ST语言,如果想表示出输入到输出的传函关系,就需采用Z变化方法,将s域中的关系离散化成z域中的关系。
而且对于高阶的传函多用泰勒级数展开的方法(此处不再讲述),而工控中我们常用到的多是一些一阶(s)和二阶(s2)的传函,用z变换即可实现。z变换听起来理论很复杂,其实我们只需掌握其在工控中实现的三种方法即可,分别是:前向欧拉、后向欧拉以及双线性变换。
三种方式都是通过将传递函数中的S项替换成Z函数中的Z项,随后再转换成差分方程的形式。其中前项欧拉法主要是将S替换成(1-Z)/Ts,其中Ts为PLC的扫描周期,后项欧拉法主要是将S替换成(1-Z-1)/Ts,双线性变换主要是将S替换成2 /Ts ×(1-Z-1)/(1+Z-1)。(Z-1为Z的负一次方,平台打不出上标)在PLC扫描周期比较小的时候,三者效果接近,在扫描周期Ts较大时,采用双线性变化的综合效果略好。 在中型PLC中,实现传递函数的编程有三步:
一、先Z变换,将传函中的S项化成Z项的函数; 二、根据Z项的函数获得差分方程: 1、对Z传递函数进行通分,约去分母中的Z;
2、替换:用y(n+m)替换y(Z)×Zm,比如y(Z)×Z-1可表示为y(n-1); 3、化成y(n)=…的形式。 三、转换成ST代码。 整理后的利用Z变换实现低阶传函的方式用流程图的方式可表示成:
参考附件的相关知识,下面会以一个一阶低通滤波器为demo,一步步的教会大家如何在中型PLC中采用双线性变换的方法将一阶低通滤波的传函实现。
|