Main Content

修改图的动作语言

Simulink® 模型中的 Stateflow® 图具有一个动作语言属性,该属性定义状态和转移动作的语法。图的画布左下角的图标表示该图的动作语言。

  • MATLAB® 作为动作语言。

  • C 语言作为动作语言。

您可以在“图属性”对话框的动作语言框中更改图的动作语言。有关详细信息,请参阅使用 MATLAB 和 C 作为动作语言语法时的差异

更改默认动作语言

MATLAB 是新 Stateflow 图的默认动作语言语法。要创建使用 C 语言作为动作语言的图,请输入:

sfnew -C

要更改新图的默认动作语言,请使用 sfpref 函数。例如,要将 C 设置为新图的动作语言,请输入:

sfpref(ActionLanguage="C");

使用 MATLAB 作为动作语言时自动更正

使用 MATLAB 作为动作语言的 Stateflow 图会自动将常见的 C 构造更正为 MATLAB 语法:

  • 递增和递减运算,如 a++a--。例如,a++ 更改为 a = a+1

  • 赋值运算,如 a += ba –= ba *= ba /= b。例如,a += b 更改为 a = a+b

  • 求值运算,如 a != b!a。例如,a != b 更改为 a ~= b

  • 注释标记 ///* */ 更改为 %

要禁用此预设项,请使用 sfpref 函数:

sfpref(EnableLabelAutoCorrectionForMAL=false);

C 到 MATLAB 的语法转换

对于非空图,在您将动作语言属性从 C 更改为 MATLAB 后,图顶部会出现一条通知。通知提供将部分 C 语法转换为 MATLAB 语法的选项。在通知中,点击链接可让 Stateflow 转换图中的语法。转换的 C 语法构造包括:

  • 从 0 开始进行索引。

  • 递增和递减运算,如 a++a--。例如,a++ 更改为 a = a+1

  • 赋值运算,如 a += ba –= ba *= ba /= b。例如,a += b 更改为 a = a+b

  • 二元运算,如 a %% ba >> ba << b。例如,a %% b 更改为 rem(a,b)

  • 按位运算,如 a ^ ba & ba | b。例如,如果图属性启用 C 语言位运算处于选中状态,则 a ^ b 将更改为 bitxor(a,b)

  • C 样式注释标记。例如,///* */ 更改为 %

如果图包含无法转换为 MATLAB 的 C 构造,Stateflow 会在对话框中显示一条消息。点击警告链接会在诊断查看器中显示警告。选择是否继续转换支持的语法。未转换为 MATLAB 的 C 构造包括:

  • 使用 casttype 的显式类型转换

  • 运算符,如 &*:=

  • 自定义数据

  • 使用 ml 运算符访问工作区变量

  • 代码生成中不支持的函数

  • 十六进制和单精度表示法

  • 上下文相关常量

另请参阅

相关主题