在Simulink RT显示端口中将数据显示为字符串



我的问题涉及使用RS-232 Simulink RT块。

将模型上传到目标PC(xPC(,并从控制电机的变频驱动器(VFD(发送和接收数据。当我获取数据并试图将数据作为字符串发送到模型中的显示块时,接收端会出现问题。代码在这里会有所帮助:

disp = uint8(zeros(1,24));
display = uint8(zeros(1,length(disp)));
cmd = 0;
status = stat_lb;
%% Start-Up 
% Initialization Period
if (status == 0 || status == 1)
cmd = 0;
msg = uint8('Start up');
display = [msg uint8(zeros( 1, length(disp)- length(msg) ))];
end
...
%Multiple status cases with unique displays.
...
disp = display

因此,这里cmd部分的功能与预期的一样。如上所述,我想在Simulink模型的显示块上显示display字符串。但是,正如您所看到的,它的类型是uint8,所以我需要将它转换为string;然而,当我通过ascii2strSimulink块或将其放入函数调用(例如display=ascii2str(display((时,我会得到以下错误消息:

执行"CheckData"命令产生以下错误:无效的参数/值对参数

我的想法是,这与我使用MEX的事实有关,并且不支持此函数(ascii2str(。无论如何,我想知道是否有人知道我为什么收到这个错误,如果有什么我可以做的来解决它。

哦,还有最后一件事:如果我只是移除ascii2str,我就可以让显示器工作;然而,唯一的问题是显示器是uint8形式的,并没有真正的帮助。所以,如果有其他方法可以将uint8解码为字符串,我会洗耳恭听。

谢谢!

我发现Simulink RT中不支持此功能。一种选择是使用外部函数,但我发现我的应用程序最好只输出一个数字,并在模拟中有一个表来解释每个数字的含义。

最新更新