基础功能块库
创建基础功能库
创建并在仿真环境下调用基础功能块。
第〇步:明确功能块功能
建立简单功能块时,最重要的、必不可少的就是明确功能块要实现的功能,现在我们明确的功能是:实现数学四则运算。
进入新建的项目:

第一步:创建功能块
右键左侧功能块树中的基础功能块选项,选择新增功能块:

在弹出的对话框中填写功能块信息,然后点击保存:

点击并选中新建的功能块,即可跳转到编辑页面。

第二步:功能块建模
相较于简单功能块,基础功能块具备完整的功能块建模流程:

根据功能实现目标和建模流程,完成以下操作:
2.1 事件编辑
“事件”主要有新增、删除、重命名、注释、关联数据操作。
2.1.1 新增、删除事件

图中操作说明如下:

2.1.2 重命名、注释事件

图中操作说明如下:

2.1.3 事件实现
此处需要4个输入事件,分别对应于四则运算的加法、减法、乘法、除法:

同时需要4个输出事件,分别对应四个输入事件:

2.2 变量编辑
“变量”主要有新增、删除、重命名、注释、编辑变量数据类型操作。
2.2.1 新增、删除变量

图中操作说明如下:

2.2.2 编辑变量

图中操作说明如下:

2.2.3 变量实现
此处需要2个输入变量,作为加法、减法、乘法、除法运算的操作变量:

同时需要1个输出变量,用于输出运算结果:

2.3 事件与变量关联
功能块模型的“事件”和“变量”模型建立完成后,需要将他们进行关联:
2.3.1 选中事件进行关联

图中操作说明如下:

2.3.2 选中变量进行关联
与2.3.1相同操作。
2.4 适配器编辑 TODO
计划中
第三步:编辑ECC和算法
ECC的全称是 *执行控制图表 ,用于功能块 算法* 以及输出事件的组织和管理。
设计流程:

3.1 编辑ECC
3.1.1 添加、重命名状态机

图中操作说明如下:


图中操作说明如下:

添加并重命名4个状态机:

3.1.2 状态机的跳转组织
用跳转线将各个状态机进行连接(拖拽连线),例如:

根据功能目标,按照下图操作进行修改管理:

ECC使用逻辑:
##### 1.运算符
- 单目运算 ++ --
- 双目运算 + - * / > < & | ^ ! % >= <= == != << >> && ||
- 三目运算,两者结合使用 ? :
- 取数组操作,必须成对出现 [ ]
- 改变优先级,必须成对出现 ( )
- 取结构体元素 .
##### 2.标识符规则
- 仅可输入功能块变量名或者number(number仅支持10进制数据)
##### 3.条件检查格式
假设功能块存在变量DI1.DI2.DO1.DO2.适配器名adp,适配器有数据AD1.AD2
- 删除条件中的所有空格
- 筛选标识符、运算符和数值,按照一定规则筛选(入栈与出栈)
- 检查是否有非法的标识符(与功能块的变量名进行匹配,注意还要匹配Adapter的变量名)
例如:
DI1.DI2是合法的标识符
DI3.12DI1是非法的标识符
AD1.adp是非法的标识符
adp.AD1是合法的标识符
adp.DI1是非法的标识符
数字开头,后面加上字母都是非法的标识符,
- 检查是否符合运算符规范,判断运算符左右两边的数据是否符合运算符目数。
例如: "DI1 > DI2" "(DI1 + DI2) > 10" 是合法的语句
"DI1 > " "DI1 + " "(DI1 + DI2 " 是非法的语句
图中操作说明如下:

3.1.3 为状态机添加操作

图中操作说明如下:

3.1.4 状态机实现
需要实现以下效果:

3.2 算法
*算法*是执行逻辑的主要部件。
3.2.1 添加算法

图中操作说明如下:

3.2.2 算法实现
ADD_ST:`DO1:=DI1+DI2;`
SUB_ST:`DO1:=DI1-DI2;`
MUL_ST:`DO1:=DI1*DI2;`
DIV_ST:`DO1:=DI1/DI2;`
3.3 ECC与算法关联

图中操作说明如下:

第四步:保存并编译

图中操作说明如下:

编译中:

编译成功:

至此,一个四则运算基础功能块的创建完成。
第五步:使用/调试功能块
功能块完成后,我们需要进行调试,以确定其是否真的具备目标功能:

图中操作说明如下:


图中操作说明如下:


图中操作说明如下:


图中操作说明如下:


图中操作说明如下:

触发后的效果如下,*数学四则运算* 功能目标被实现:
点击立即开始体验
