自定义功能块
一、 功能块开发前准备
1.1 申请功能块壳体
1.当用户需要自定义功能块时,需要提供功能块的壳体申请表,如下:




代码:功能块的英文描述
类型:功能块的唯一编号
扩展:当输入引脚超出 6 的倍数或者输出输出超出 2 的倍数,取二者最大值。
序号:引脚序号
IO 类型:类型分为 AI,AO,DI,DO,分别标识模拟量输入,输出,开关量输入,输出
字段代码:描述引脚的英文描述
注释说明:描述引脚的中文描述
初始值:功能块生成时的默认值
可视:功能块生成时的默认是否可视,即是否隐藏引脚
数据类型:数据类型分为浮点型 FLOAT,整形 INT。
数据含义:数值或字符地址
2.当申请完成功能块壳体时,会收到模板库文件:DEVM.DAT,IDEVICE.XML。
3.将模块库文件拷贝到\iSmartOS_Studio\IDEVICE\模版库文件夹中并替换
4.重新打开 iSmartOS_Studio,在功能块中会增加添加的新功能块

1.2 编写功能块源码文件
1.编写源码文件格式如下:本例实现引脚 Y=X1+X2-X3
typedef unsigned char Byte;
typedef unsigned short Word;
typedef unsigned long Dword;
struct TDataP{
Byte *p[47];
}TDataP;
struct TIOWFO{
Dword ElementAddr;//元件位置相对于 Byte 计算
double IN[60];//输入
double OUT[60];//输出
double FOUT[60];//强制值
double WORK[60];//工作区
Word T;//扫描周期
Word STATE[10];//元件工作状态
Byte LinkType[60];//链接类型
}TIOWFO;
//加法
void DicALG(struct TDataP *_dp, struct TIOWFO *_Para){
_Para->OUT[0] = _Para->IN[0] + _Para->IN[1] - _Para->IN[2];
}
变量说明
输入引脚类型:_ Para->IN[0],_ Para->IN[1],_ Para->IN[2]…………
输出引脚类型:_ Para->OUT[0],_ Para->OUT[1]
引脚强制值:_ Para->FOUT[0],_ Para->FOUT[1]
内部工作变量(全局变量):_ Para-> WORK [0],_ Para-> WORK [1]
扫描周期(进入功能块的间隔时间):_ Para->T
功能块工作状态:暂无
功能块连接状态(输入来源为变量或常数):_Para->LinkType[0],_Para->LinkType[1]
1.3 编译生成库文件
1.编写好源码文件通过不同平台的编译软件编译生成文件
Window 平台:将源码文件 Dic402.c 编译生成 Dic402.dll
Linux 平台:将源码文件 Dic402.c 编译生成 Dic402.so
ARM 平台:客户自定义功能块文件编译生成 bin 文件
1.4 编写说明文档
1.在路径为./Help/Function 中找到示例模板 《示例模板.mht》。


2.将其命名为《序号_代码.mht》的格式。
3.根据自己需求更改文档。
二、 Windows 平台功能块制作
1、安装编译环境
1.首先打开 www.mingw.org 下载 mingw-get-setup.exe

2.安装 mingw-get-setup.exe

3.安装或更新被组件

找到 mingw32-gcc-g++(注意 class 属性要为 bin),右键点击 Mark for Installation。
2.点击左上角的 Installation 菜单中的 Apply changes 选项,然后管理器将开始在线安装或
3.更新被选中的组件。
4.配置环境变量
1.打开控制面板 -> 系统 -> 高级系统设置 -> 高级 -> 环境变量。
2.找到列表中的 PATH 选项,选中后点击编辑,在末尾添加 C:\MinGW\bin,注意如果 PATH
3.原有值的末尾没有添加分号(;),请自行添加。

5.检验是否安装成功
打开命令行(点击开始菜单 -> 运行,输入 cmd.exe 后确定),输入 gcc –v

2、编译生成库文件
1.打开命令行(点击开始菜单 -> 运行,输入 cmd.exe 后确定)
2.切换盘符 cd /d d:
3.切换到源码文件目录 cd D:\01ZhiMaComp\01QtSoftWare\03Decument\FuntionDec
4.执行编译指令:gcc Dic402.c –shared –o Dic402.dll –lm
5.目录下生成 Dic402.dll 文件


3、配置库文件
1.确定 iSmart-Core 处于关闭状态
2.拷贝生成的功能块 dll 文件到目录 iSmartOS_Core\DicFunc
3.重启启动 iSmart-Core 验证算法运行是否正确。
注意:也可以利用指../直接生成到配置录。
三、 Linux 平台功能块制作
1、 安装编译环境
1.运行指令:yum install gcc,或者 GCC 官网下载安装:http://ftp.gnu.org/gnu/gcc/
安装参考 https://www.cnblogs.com/yadongliang/p/6100003.html
2.验证安装是否完成,执行指令 gcc –version

2、 编译生成库文件
1.切换到源文件目录下 cd /root
2.执行编译指令:gcc Dic402.c -fPIC -shared -o Dic402.so –lm

2.3、目录下生成 Dic402.so 文件

3、 配置库文件
1.确定 iSmart-Core 处于关闭状态 2.拷贝生成的功能块 dll 文件到目录 iSmartOS_Core\DicFunc 3.重启启动 iSmart-Core 验证算法运行是否正确。
四、 ARM 平台功能块制作
1、 安装开发环境
1.keil 的官方下载链接:http://www.keil.com/update/rvmdk.asp

2.安装 Keil MDK(详情请自行网上查询)

2、 编译生成自定义库文件
1.使用芝麻智能提供的用户自定义工程
2.根据功能块编号编译自定义功能块,以下以功能块 402 为例 Y=X1+X2

3.编译生成 bin 文件


3、烧录库文件
1.使用工具烧录生成的 bin 文件,自行下载 sscom 工具
2.端口配置波特率:115200bit,数据位:8,停止位:1,无校验
3.将芯片重启,出现以下字符

4.在文件输出:请在 2 秒内发送 0xe1 进入 iSmartOS 引导程序…快速发送 e1 指令(HEX发送),出现以下字符:

5.在根据需要更新的自定义算法库,发送 e5 指令(HEX 发送),出现以下字符:
注意:当发送指令后,原程序或代码会被删除,等待新文件

6.选择编译完成的文件

7.选择发送文件,出现以下字符

8.如出现正在进路控制系统。。。ZiMAX SYSTEM V1.0 表示传送成功
9.使用 iSmart-Studio 检验算法是否正确。