结构化文本代码生成的限制
一般的局限性
的动态仿真模块®PLC编码器™软件不支持:
复杂数据类型
字符串数据类型
模型参考块
Stateflow®机器父数据和事件
Stateflow消息
状态流空图表输出函数。
对数学函数的有限支持
合并块
步块
时钟块
信号和状态存储类
子系统之间共享的状态变量
为每个子系统块
可变大小的信号和参数
MATLAB系统块或系统对象
MATLAB®类。
的
仿真软件。CoderInfo
标识符
名称属性与仿真软件。参数
而且仿真软件。信号
对象。为未解析为a的Simulink信号生成的代码
仿真软件。信号
数据存储内存对象。代码生成时
UseRowMajorAlgorithm = ' '
.的使用
枚举
用于模型子系统块内部比较的数据类型数值。使用数据类型转换块执行枚举到整数的转换,以执行数值比较。在注释中使用特殊字符。这可能会在导入生成的代码时导致错误。
使用命名的信号线
仿真软件。信号
映射。半精确定点数据类型。
使用软件在环(SIL)仿真模式生成模型的测试台。
使用循环中处理器(PIL)模拟模式生成模型的测试台。
非顶级的Stateflow函数调用输出调用Simulink子系统的事件。
Half-precision数据类型。
子系统引用块内的代码生成。
嵌套子系统引用块的代码生成。
的文件夹中的代码生成
文件夹已准备好存档
选项在Windows上启用®R2022a之前的系统。
限制
结构化文本语言有其固有的局限性。结果,仿真软件PLC编码器软件有这些限制:
仅支持原子子系统的代码生成。
支持自动、内联或可重用的函数打包以生成代码。不支持不可重用的函数打包。
不支持需要连续时间语义的块。这个限制包括积分器块、过零检测块、物理块,比如Simscape™库块等等。
不支持指针数据类型。
不支持递归(包括递归事件)。
不支持非有限数据,例如
南
或正
.不支持MATLAB 64位整数数据类型。
负0
在浮点数据类型中,值0
不是正号就是负号。用算术方法,0
等于-0
,但有些操作对0输入的符号很敏感。例子包括rdivide
,量化
,atan2d
,角
.除0
生产正
,但除以-0
生产负
.同样的,atan2d (0, 1)
生产180
,但atan2d (0, 1)
生产-180年
.
仿真软件PLC编码器商店-0
作为0
因为没有代表-0
在IEC61131。这就得到除法-0
生产负
在仿真软件,但是正
在PLC的IDE。同样的,atan2d (0, 1)
生产-180年
在仿真软件,但是180
在PLC IDE中作为-0
被转换为0
.
除以零
在Simulink中,除以零可以产生任何一种结果正
或数据类型的最大数字。在Codesys目标IDE中,除零得到a-1
.使用测试平台生成的代码可能会导致测试平台验证失败,因为除零操作的结果不同。
定点数据类型多字操作
Simulink PLC Coder不支持需要定点数据类型多字操作的块参数设置的代码生成。例如,具有int32整数数据类型作为输入和输出数据类型设置的平方根块通过内部规则继承
不支持代码生成。
替换变量代码生成
如果输入和输出之间的数据类型在维度数量上不同,则可能破坏Inplace参数语义。要解决这个问题,请将输入变量大小设置为-1
.有关更多信息,请参见声明可变大小的MATLAB函数块变量.
模型数据字典
仿真软件PLC编码器不支持:
混合使用基本工作区和Simulink数据字典(SLDD)文件。使用Simulink迁移实用程序将整个基本工作区迁移到SLDD文件。
为代码生成建模工作空间参数和信号。
用于代码生成的SLDD文件中的MATLAB变量。要生成代码,将这些变量转换为
仿真软件。参数
对象。
Simulink.parameter
类型,StorageClass
以外的选项ExportedGlobal
而且ImportedExtern
自动转换为ExportedGlobal
StorageClass
在代码生成。