主要内容

na_0024:MATLAB 函数中的共享数据

规范来源

控制算法建模规范 - 使用 MATLAB®、Simulink® 和 Stateflow®

子 ID 建议

  • NA-MAAB - a

  • JMAAB - a

MATLAB 版本

全部

规则

子 ID a

信号线应用于连接 MATLAB Function 模块之间共享的数据。

自定义参数

不适用

示例 - 正确

function ErrorFlag = EngineFaultEvaluation(EngineData,ErrorFlag_In)
%#codegen
	RMP_HIGH = 10000;
	RMP_LOW = 10;
	HIGHRPMFAULT = 2^1;
	LOWRPMFAULT = 2^2;
	ErrorFlag = ErrorFlag_In;
	if EngineData > RPM_HIGH
		ErrorFlag = bitor(ErrorFlag,HIGHRPMFAULT);
	end
	if EngineData < RPM_LOW
		ErrorFlag = bitor(ErrorFlag,LOWRPMFAULT);
	end
	
function ErrorFlag = WheelFaultEvaluation(WheelData,ErrorFlag_In)
%#codegen
	SLIP_HIGH = 1000;
	WHEELSLIP = 2^3;
	ErrorFlag = ErrorFlag_In;
	if WheelData > SLIP_HIGH
		ErrorFlag = bitor(ErrorFlag,WHEELSLIP);
	end
end
	
示例 - 不正确

function EngineFaultEvaluation(EngineData)
%#codegen
	global ErrorFlag_DataStore
	RMP_HIGH = 10000;
	RMP_LOW = 10;
	HIGHRPMFAULT = 2^1;
	LOWRPMFAULT = 2^2;
	if EngineData > RPM_HIGH
		ErrorFlag_DataStore = bitor(ErrorFlag_DataStore,HIGHRPMFAULT);
	end
	if EngineData < RPM_LOW
		ErrorFlag_DataStore = bitor(ErrorFlag_DataStore,LOWRPMFAULT);
	end
	
function WheelFaultEvaluation(WheelData)
%#codegen
	global ErrorFlag_DataStore
	SLIP_HIGH = 1000;
	WHEELSLIP = 2^3;
	if WheelData > SLIP_HIGH
		ErrorFlag_DataStore = bitor(ErrorFlag_DataStore,WHEELSLIP);
	end
end
	

理由

子 ID a:

  • 当使用数据存储时,数据流的可读性会降低,并可能导致更新参考时序中的错误。

验证

模型顾问检查:检查 MATLAB 代码中是否存在全局变量 (Simulink Check)

上次更改

R2020a

版本历史记录

在 R2020a 中推出