用户界面起的是发起请求的作用,Twin CAT PLC起的是接受请求以及安排控制过程的作用,而Twin CAT NC PTP则直接控制了电机驱动器
模型在Simulink 编码器™的帮助下自动用C/C++编码代码进行编码,并将TwinCAT3目标转换为TwinCAT对象。然后,这些TwinCAT对象可以在TwinCAT运行时中实时执行。这些TwinCAT对象可以是用于直接实例化的TcCOM对象,并与PLC项目中用于实例化和处理的实时任务或函数块进行链接。
一个TcCOM模块是由在Simulink®中创建的机器模型生成的。这可以用于在连接实际机器(虚拟调试)之前实时测试PLC程序。
需要许可证TC1320(或带有PLC许可证的TC1220)才能使用由Simulink®生成的模块启动TwinCAT配置。如果没有激活的许可证,该模块和因此产生的TwinCAT系统将无法启动。在这种情况下,您将得到与违反许可证的行为相关的错误消息。可以生成一个为期7天的试用许可证,它可以在不购买许可证的情况下启用初始测试。
1. 从Simulink生成一个TcCOM模块
在生成C++代码后,生成可执行文件的生成过程将立即启动,并创建了一个TcCOM模块。
创建了一个TwinCAT模块类(TMC文件),并且可以直接在项目中进行实例化。一个TwinCAT模块实例(TMI)在下面被称为TcCOM对象或模块实例。

关于具有所有参数属性的FB的说明
如果在“参数”访问区域的“Tc接口”下,将“处理”图像设置为“内部数据区域”,则会为所有参数创建一个属性。然后,这些内容必须作为一个实体进行阅读和书写:
PROGRAM MAIN
VAR
// declare function block (details see below)
fbControl : FB_TctSmplTempCtrl(oid := 16#01010010);
// local PLC variable
ModelParameters : P_TctSmplTempCtrl_T;
END_VAR
// read all model parameters
ModelParameters := fbControl.ModelParameters_Online;
// change value
ModelParameters.Kp := 20;
// write all model parameters
fbControl.ModelParameters_Online := ModelParameters;
在ST代码中简单PLC程序中特定于模块的功能块的应用,使用模块类“TempContr”的对象:
PROGRAM MAIN
VAR
// declare function block with ID of referenced Object
fbTempContr : FB_TempContr(oid:= 16#01010010 );
// input process image variable
nInputTemperature AT%I* : INT;
// output process image variable
bHeaterOn AT%Q* : BOOL;
END_VAR
IF (fbTempContr.State = TCOM_STATE.TCOM_STATE_OP) THEN
// set input values
fbTempContr.stInput.FeedbackTemp := nInputTemperature;
// execute module code
fbTempContr.Execute();
// get output values
bHeaterOn := fbTempContr.stOutput.HeaterOn;
END_IF
从Similink生成的TcCOM模块的“Class Factories”的名称通常与模块名称相匹配,尽管Class Factories的名称仅限于更少的字符。
PROGRAM MAIN
VAR
// declare function block
fbTempContr_Dyn : FB_TempContr(oid:= 0 );
// input process image variable
nInputTemperature AT%I* : INT;
// output process image variable
bHeaterOn AT%Q* : BOOL;
// reset error code and reinitialize Object
bReset: BOOL;
// initialization helpers
stInitData : ST_TempContr_InitData;
bInitialized : BOOL;
END_VAR
IF (NOT bInitialized) THEN
stInitData := fbTempContr_Dyn.InitData; // read default parameters
// adapt required parameters:
stInitData.ContextInfoArr_0_TaskOid := 16#02010020; // oid of the plc task
stInitData.ContextInfoArr_0_TaskCycleTimeNs := 10 * 1000000; // plc task cycle time in ns
stInitData.ContextInfoArr_0_TaskPriority := 20; // plc task priority
stInitData.CallBy := TctModuleCallByType.Module;
stInitData.StepSize := TctStepSizeType.UseTaskCycleTime;
// set init data, copied to module the next time it switches from INIT to PREOP:
fbTempContr_Dyn.InitData := stInitData;
bInitialized := TRUE;
ELSIF (fbTempContr_Dyn.State<TCOM_STATE.TCOM_STATE_OP) THEN
// try to change to OP mode
fbTempContr_Dyn.State := TCOM_STATE.TCOM_STATE_OP;
ELSIF (NOT fbTempContr_Dyn.Error) THEN
// set input values
fbTempContr_Dyn.stInput.FeedbackTemp := nInputTemperature;
// execute module code
fbTempContr_Dyn.Execute();
// get output values
bHeaterOn := fbTempContr_Dyn.stOutput.HeaterOn;
END_IF
IF (bReset) THEN
IF (fbTempContr_Dyn.Error) THEN
fbTempContr_Dyn.ResetHresult();
END_IF
fbTempContr_Dyn.State := TCOM_STATE.TCOM_STATE_INIT;
END_IF
对于实时访问文件系统,将创建一个额外的TcCOM“TcExtendedFilewriter”,并使用ToFile块链接到TcCOM,下面称为Simulink TcCOM)。然后,扩展文件写入器从指定的TcCOM接收数据,并将其写入一个MAT文件(mat4)。
一个具有正弦源和余弦源的模型可以作为一个简单的例子。每个信号都要用一个ToFile block来记录。

要启用ToFile块的代码生成,其格式必须设置为Array:

要从生成的Simulink TcCOM中写入,需要安装有TE1400的TcCOMTx扩展文件写入器。它接受来自模拟链接对象的数据,并将这些数据存储在文件系统中。该模块可以在TcCOM浏览器中找到,Beckhoff Automation -> Extended File Access -> TcExtendedFileWriter:

最初,这两个tccom都是实例化的。这两个对象都可以链接到一个联合任务或一个单独的任务。为了在两个对象之间建立链接,模拟扩展文件写入器实例的对象ID被通信到模拟链接TcCOM。

然后,将对象ID插入到模拟链接TcCOM的“参数(初始化)”选项卡下,作为ExtendedFileAccessOID:

可以将几个Simulink tccom与一个TcExtendedFileWriter实例连接。请确保避免了文件名冲突。可以将多个文件实例并行使用。例如,每个带有ToFile块的模拟链接TcCOM都可以使用它自己的扩展文件编写器实例。

如果输入设置为TRUE,当前用于写访问的文件将被关闭,所有进一步传入的数据将被丢弃。如果输入再次设置为false,则将打开一个用于记录传入数据的新文件。
已关闭的文件可以像往常一样在MATLAB中打开:

Signal access via TwinCAT 3 Scope

也可以通过相应的图标直接从TwinCAT开发环境(XAE)中启动范围。在方框图浏览器的下拉窗口中,当模块实例在目标系统上运行时,每个可用信号都会显示

右键(拖放)从下拉菜单(上图右栏)或方框图中的蓝色信号线(上图中的主窗口)拖动信号到Scope配置中。鼠标右键还可用于将整个块拖动到作用域配置中,以便记录此功能块的所有输入和输出。
s-函数可以集成到模拟墨水®模型中,然后可以构建以在TwinCAT运行时使用。
Simulink ®生成实时能力的代码;所有的传递函数表示都被转换为状态空间表示。因此,状态空间表示矩阵(A、B、C、D)用于Simulink ®生成的代码,该代码又可以在TwinCAT3中显示和修改。
在MATLAB中,将传递函数表示转换为状态空间表示可以通过函数[A,B,C,D]=tf2ss(NUM,DEN)进行。
信息:要启动x64目标系统上启动模块,系统必须切换到测试模式!
这些模块由封闭的模拟链接模型生成。它们可以在TwinCAT中集成一个模块,而无需首先生成该模块。例如,它们可以在MATLAB许可证还不可用的情况下使用。
信息:要启动x64目标系统上启动模块,系统必须切换到测试模式!
——————————————————————————————————————
使用TE1400TwinCAT SImulink®目标的全部功能需要两个许可证
。一方面,TE1400工程许可证从模拟墨水®创建TwinCAT对象,
另一方面,在TwinCAT运行时执行这些对象的运行时许可证。
从Simulink®®创建TcCOM和PLC功能块的工程系统需要使用Simulink®的TE1400目标许可证。
出于测试目的,该产品可以在演示模式下作为演示版本使用
可以为运行时许可证创建一个为期7天的试用许可证,这允许在不购买许可证的情况下进行初始测试。
从MATLAB®或Simulink®生成的TwinCAT对象是基于tmx驱动程序(TwinCAT模块可执行文件)的,而TwinCATC++对象也是如此。这些驱动程序必须与OEM证书级别2进行签名,以便在TwinCAT运行时可以将其加载到运行时PC上。
对于开发阶段的测试目的,一个未会签的证书就足够了。
1. 选择固定步骤求解器。为此,请转到模型的“配置参数”
2. 选择系统目标文件到“TwinCatGrt.tlc”。
3. 保存更改,Start code generation via the Simulink® Coder App.
在TwinCAT中插入TcCOM
1. 实例化一个新的TcCOM对象。
2. 选择所需的对象
3. 创建循环任务
4. 将已创建的任务分配给TcCOM实例。
5. 激活配置
在TcCOM实例的参数(Init)区域中,您可以选择配置与从Simulink®创建时指定的实例
只有在Simulink ®中设置了以下参数时,以下文件中使用的PLC库才可用:
1. 在TwinCAT中创建PLC:
2. 选择PLC库并查看内容:

3. 使用PLC中的库中的功能块:


1275

被折叠的 条评论
为什么被折叠?



