1、新建枚举类型
形如:
// An highlighted block
typedef enum
{
NM_AllCh = 0, /* Default value */
NM_LinCh,
NM_VehicleCanCh,
NM_InternalCanCh,
NM_ChMax
}
NetWokM_Type;
在matlab中新建的方法:
方法一,脚本新建:
- 新建脚本
- 键入如下代码:
classdef NetWokM_Type < Simulink.IntEnumType
enumeration
NM_AllCh (0)
NM_LinCh (1)
NM_VehicleCanCh (2)
NM_InternalCanCh (3)
NM_ChMax (4)
end
end
并将脚本名称改为NetWokM_Type
方法二,使用Simulink Data Dictionary新建:
-
新建数据字典
-
将数据字典与模型关联
打开“Model Explorer”,点击“File”,选择“Open”,选择刚刚新建的数据字典"EnumDic.sldd",这样模型就与数据字典进行了关联。 -
新建枚举类型
在“Model Explorer”中,选中“EnumDic”中的“Design Data”
然后做如下操作:
2、新建变量
新建一个枚举型变量
如下:
3、简单功能使用示例
图片如下:
4、生成的代码示例
前提将该stateflow设置成uint,然后对Function name进行自定义,
代码如下:
void MyEnum(const myParamsType *rtu_In, NetWokM_Type rtu_index, B_MyEnum_T
*localB)
{
int32_T tmp;
/* Chart: '<Root>/Chart1' */
if (rtu_index == NM_InternalCanCh)
{
tmp = (rtu_In->Gain + 1) * 3;
if (tmp > 255)
{
tmp = 255;
}
localB->r = (uint8_T)tmp;
}
else if (rtu_index == NM_ChMax)
{
tmp = (rtu_In->Gain + 3) * 5;
if (tmp > 255)
{
tmp = 255;
}
localB->r = (uint8_T)tmp;
}
else if (rtu_index == NM_LinCh)
{
tmp = (rtu_In->Gain + 5) * 7;
if (tmp > 255)
{
tmp = 255;
}
localB->r = (uint8_T)tmp;
}
else
{
tmp = (rtu_In->Gain + rtu_In->Init) + rtu_In->Offset;
if (tmp < 0)
{
tmp = 0;
}
else
{
if (tmp > 255)
{
tmp = 255;
}
}
localB->r = (uint8_T)tmp;
}
/* End of Chart: '<Root>/Chart1' */
}
以上,仅为本人自用。