没有tlc-file从2级代码生成功能

12个视图(30天)
你好,
我用R2012b。我有一个问题xpc-target系统生成代码。我写了一个2级Matlab函数我称为c代码(我以前mex-ed)。我可以称之为c代码在仿真软件Matlab函数和它在正常模式运行良好。金宝app
但是现在我试图编译这个模型xpc-target系统中运行。我添加了相应的c文件参数- >代码生成- >自定义代码源文件- >包括附加列表- > = c文件和库- > = dll文件和mexw64-file。但在构建模型时,我得到了错误:相应的“xxxx。tlc”文件的Matlab函数“xxx”块“xxx”必须位于当前工作目录,Matlab函数目录,或目录”xxx \ tlc_c”。
不能自动创建一个tlc-file,当使用Matlab函数。真的有必要写tlc-file手动吗?如果是的,我必须写功能?我可以叫c代码(遗留代码)tlc-file吗?
提前感谢任何答案!
贝蒂娜
1评论
或Hirshfeld
或Hirshfeld 2015年2月19日
你发现任何解决方案,通过全编码在TLC因为我有类似的问题,我有2级功能我想模型在外部模式运行在Windows实时目标

登录置评。

接受的答案

拉吉夫Ghosh-Roy
拉吉夫Ghosh-Roy 2013年12月10日
为了使用这种代码生成, 一切 你叫必须用C(即没有M)。唯一的例外是如果你是使用MATLAB函数块。
在你的案例中,myfunc和myconstraint MATLAB文件也必须有一个C。没有它,就很难继续下去。
1评论
贝蒂娜
贝蒂娜 2013年12月17日
谢谢,我那么努力C-S-Function MatLab M-S-Function转化为c代码。圣诞快乐!

登录置评。

答案(1)

拉吉夫Ghosh-Roy
拉吉夫Ghosh-Roy 2013年12月9日
你可以写一个C函数,或添加一个简单的TLC文件为您的MATLAB函数。TLC文件可能非常简单,比如从外部C文件调用外部函数。
请注意,您必须调用 LibAddToModelSources 为了通知外部c文件的代码生成器,以及外部函数调用应该是一个c风格的电话,不是mex-file。
1评论
贝蒂娜
贝蒂娜 2013年12月10日
我不是那么公司C S-Functions(或C编程一般),我使用M s函数。手动写TLC-file不是那么容易,我需要整合两个子功能,我直到现在称为matlab m-files。
什么样的语言有TLC-files吗?这是C还是我也可以用MatLab命令吗?
我需要翻译以下M s函数,也许有人可以帮助我与相应的TLC翻译:
函数msfuntmpl_NLopt_V7(块)
设置(块);
% endfunction
函数设置(块)
块。NumDialogPrms = 1;
块。DialogPrmsTunable = {“Nontunable”};
块。NumInputPorts = 1;
block.InputPort (1)。尺寸= 2;
block.InputPort (1)。DatatypeID = 0;
block.InputPort (1)。复杂性=“真实”的;
block.InputPort (1)。DirectFeedthrough = false;
block.InputPort (1)。SamplingMode =“样本”;
块。NumOutputPorts = 2;
block.OutputPort (1)。尺寸= 2;
block.OutputPort (1)。DatatypeID = 0;
block.OutputPort (1)。复杂性=“真实”的;
block.OutputPort (1)。SamplingMode =“样本”;
block.OutputPort (2)。尺寸= 1;
block.OutputPort (2)。DatatypeID = 0;
block.OutputPort (2)。复杂性=“真实”的;
block.OutputPort (2)。SamplingMode =“样本”;
块。SampleTimes = [0 0];
block.SetAccelRunOnTLC(假);
block.RegBlockMethod (“PostPropagationSetup”,@DoPostPropSetup);
block.RegBlockMethod (“InitializeConditions”,@InitializeConditions);
block.RegBlockMethod (“输出”,@Outputs);%要求
%安装结束
函数DoPostPropSetup(块)
块。NumDworks = 1;
block.Dwork (1)。Name =“x0”;
block.Dwork (1)。尺寸= 2;
block.Dwork (1)。DatatypeID = 0;
block.Dwork (1)。复杂性=“真实”的;
block.Dwork (1)。UsedAsDiscState = true;
块。NumDworks = 2;
block.Dwork (2)。Name =“xopt”;
block.Dwork (2)。尺寸= 2;
block.Dwork (2)。DatatypeID = 0;
block.Dwork (2)。复杂性=“真实”的;
block.Dwork (2)。UsedAsDiscState = true;
块。NumDworks = 3;
block.Dwork (3)。Name =“fmin”;
block.Dwork (3)。尺寸= 1;
block.Dwork (3)。DatatypeID = 0;
block.Dwork (3)。复杂性=“真实”的;
block.Dwork (3)。UsedAsDiscState = true;
% DoPostPropSetup结束
函数InitializeConditions(块)
全球选择
opt.algorithm = block.DialogPrm (1) . data;
opt.lower_bounds =(负无穷,0);
opt.min_objective = @ (x) myfunc (x);
opt.fc = {(@ (x) myconstraint (x 2 0)), (@ (x) myconstraint (x, 1,1))};
opt.fc_tol = [1 e-8, 1 e-8];
opt.xtol_rel = 1的军医;
block.Dwork (1)。Data = block.InputPort (1) . Data;
% InitializeConditions结束
函数输出(块)
全球选择
[block.Dwork (2)。数据,block.Dwork (3)。数据]= n_optimize(选择block.InputPort (1) . Data);% Aufruf der Optimierungsroutine
block.OutputPort (1)。Data = block.Dwork (2) . Data;
block.OutputPort (2)。Data = block.Dwork (3) . Data;
%输出结束
”“myfunc”和“myconstraint M-Files,而“n_optimize”调用c代码(墨西哥人)。

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!