1、传递函数从 matlab/simulink 向 PLC 控制代码的转换下面以在 PLC 中实现传递函数 为例说明211(5)0.).5.0ss转换过程。1.将传递函数离散化PLC Coder 不支持转换连续时间类型的模型,需要先将传递函数离散化,用到 matlab 中的 c2d 命令。在 matlab command window 中输入如下命令: H = tf(1 1, 0.1000 5.0200 1.0000) %表示 H 是分子多项式为1 1,分母多项式为0.1000 5.0200 1.0000的连续传递函数。Hd = c2d(H, 0.1) %表示将连续传递函数 H 转换成离散传递函数
2、 Hd,c2d 表示continuous to discrete,即连续到离散,或者说从拉氏变换变成 z 变换,括号里面的 H 表示被转换的连续传递函数,0.1 代表离散后的采样时间为 0.1s。之后得到 20.14 z-.97Hd- 86+05z step(H,-,Hd,-) %查看两者的阶跃响应图 1 H 及 Hd 的阶跃响应可见阶跃响应一致。2.simulink 里建立传递函数模型在 simulink 中新建一个模型,拖入 Discrete Discrete Transfer Fcn 模块,如图 2 所示,之后双击将其参数设置如图 3 所示。图 2 Discrete 中的 Discret
3、e Transfer Fcn 模块图 3 Discrete Transfer Fcn 模块参数设置再在 Ports&Subsystem 中拖入输入和输出端口,如图 4,与刚刚的离散传递函数输入输出相连,最后全选三个模块,单击右键Creat Subsystem,生成子系统,再右击生成的 SubsystemPLC Coder Generationenable“treat as atomic unit”勾选弹出的对话框里面的“Treat as atomic unit”选项,并将 Sample time 设置为 0.1s,如图 5 所示.图 4 Ports&Subsystem 中的输入和输出端口图 5
4、 弹出的对话框设置到此离散函数模型建立完毕,并且为顺利进行 PLC Coder 转换做了相应设置。3.PLC Coder 转换模型右击 SubsystemPLC Coder GenerationOptions,在弹出的对话框里,Target IDE 选择 KW-Software Multiprog 5.0,然后点击 Generate code,将会生成代码。图 6 生成代码成功单击上图对话框里面 Generated files 下面的连接,可以查看生成的代码,并且在窗口顶部会显示该文件所在的位置。4.代码的导入在 Multiprog 中新建好工程后,点击 fileImportImport PLCOpen xml file,找到刚刚生成的.xml 文件,并单击 Import,导入到 Multiprog 中,生成功能块“Subsystem”,可查看其内部算法和定义好的输入输出量及中间变量,内部算法如下图:到此,该传递函数向 PLC 控制代码的转换完成,不过要注意的是,传递函数在离散化的时候采样时间取得 0.1s,在 Multiprog 中用到该模块的时候,需要设置0.1s 执行。