na_0024: Shared data in MATLAB functions

Рекомендации ID Sub

  • NA-MAAB — a

  • JMAAB — a

Версии MATLAB

Все

Правило

ID Sub 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 Sub a:

  • Когда хранилище данных используется, удобочитаемость уменьшений потока данных и может привести к ошибкам в синхронизации ссылки обновления.

Верификация

Проверка Model Advisor: Проверяйте код MATLAB на глобальные переменные (Simulink Check)

В последний раз измененный

R2020a

Введенный в R2020a