Этот пример показов, как реализовать реляционные и логические операторы с помощью блоков Simulink, Диаграмм Stateflow и Блоков MATLAB function.
Чтобы включить логическую операцию в вашу модель, используйте блок Logical Operator из библиотеки Logic и Bit Operations.
1. Откройте пример модели ex_data_type_SL
.
Блок Logical Operator выполняет операцию OR в модели. Чтобы изменить операцию, дважды кликните блок и установите в поле оператор значение любой из операций в меню.
Можно реализовать реляционные операторы, заменив блок Logical Operator на блок Relational Operator.
2. Чтобы создать модель и сгенерировать код, нажмите Ctrl + B.
Код, реализующий логический оператор OR, находится в ex_logical_SL_step
функция в ex_logical_SL.c
.
/* Exported block signals */ boolean_T u1; /* '<Root>/u1' */ boolean_T u2; /* '<Root>/u2' */ boolean_T y1; /* '<Root>/y1' */ /* Model step function */ void ex_logical_SL_step(void) { /* Outport: '<Root>/y1' incorporates: * Inport: '<Root>/u1' * Inport: '<Root>/u2' * Logic: '<Root>/Logical Operator' */ y1 = (u1 || u2); }
1. Откройте пример модели ex_data_type_SF
.
На диаграмме Stateflow действия реляционной или логической операции находятся на переходе от одного соединения к другому. Реляционные операторы задают условия, чтобы условно разрешить переход. В этом случае операторы находятся в квадратных скобках.
2. Чтобы создать модель и сгенерировать код, нажмите Ctrl + B.
Код, реализующий логический оператор OR, находится в ex_logical_SF_step
функция в ex_logical_SF.c
.
/* Exported block signals */ boolean_T u1; /* '<Root>/u1' */ boolean_T u2; /* '<Root>/u2' */ boolean_T y1; /* '<Root>/Logical Operator' */ /* Model step function */ void ex_logical_SF_step(void) { /* Chart: '<Root>/Logical Operator' incorporates: * Inport: '<Root>/u1' * Inport: '<Root>/u2' */ y1 = (u1 || u2); }
Этот пример показывает метод блока MATLAB Function для включения операторов в сгенерированный код с помощью реляционного оператора.
1. Откройте пример модели ex_logical_ML
.
2. Этот Блок MATLAB function содержит следующую функцию:
function y1 = fcn(u1, u2) y1 = u1 > u2; end
3. Чтобы создать модель и сгенерировать код, нажмите Ctrl + B.
Сгенерированный код появляется в ex_data_type_ML.c
:
/* Exported block signals */ real_T u1; /* '<Root>/u1' */ real_T u2; /* '<Root>/u2' */ boolean_T y; /* '<Root>/MATLAB Function' */ /* Model step function */ void ex_logical_ML_step(void) { /* MATLAB Function: '<Root>/MATLAB Function' incorporates: * Inport: '<Root>/u1' * Inport: '<Root>/u2' */ y = (u1 > u2); }