MatLab SimuLink国产代替

MATLab SimuLink国产代替

MatLab SimuLink国产代替_第1张图片

米国的限制,把工业软件的国产化推到风口浪尖,作为扎根工业软件开源基础架构20多年的UCanCode, 一直是国外顶尖工业软件的基础架构提供商之一。许多国外软件都在这个基础上构建出来,这里我们也希望探讨一下国产代替MatLab仿真Simulink的源码架构。算是为中国工业尽一份自己的力。

MatLab SimuLink国产代替_第2张图片

UCanCode Simulink源码解决方案设计目标是为国产代替MatLab Simulink仿真提供的全面解决方案,包括:

 

一、基本功能:

1、算法块编辑和定义。

算法块的绘制可以通过UCanCode专业的绘图工具来进行绘制,如下图:

MatLab SimuLink国产代替_第3张图片

2、定义接口:

可以根据算法块的需要自定义需要的输入端口和输出端口数目,比如我们要计算两个数的和,那就定义两个输入端口,定义一个输出端口,如下:

MatLab SimuLink国产代替_第4张图片

设定后显示如下图:

MatLab SimuLink国产代替_第5张图片

3、定义控制逻辑(算法)

算法的定义是采用JavaScript来编写,我们提供了大量的函数,通过这些函数来获取通过输入端口传递进来的数值和字符串(UCanCode的端口不但可以传递数值,也可以传递字符串),也就是您可以通过传进进来的值或者字符串(一般用于矩阵运算)来进行计算,并且UCanCode解决方案也提供了临时或者整个仿真数据存取的变量和内存空间,下面是以上面计算求和运算的控制逻辑:

MatLab SimuLink国产代替_第6张图片

4、存储算法:

编辑好算法块后,可以直接复制粘贴到左边的工具盒中,如下图:

MatLab SimuLink国产代替_第7张图片

5、构建仿真:

在画布上创建仿真图跟MatLab的Simulink完全相似,但各有所长,有些我们更加灵活。

1)、在画布上创建图元,有如下方式。

a.直接从左边的工具盒中找到需要的元件拖拉进画布。

b、类似于Simulink本身,在画布上双击鼠标,即显示下拉查询列表,直接输入需要元件的部分名称,会自动搜索需要的元件,单击或者回车即可创建,如下图:

MatLab SimuLink国产代替_第8张图片

c、在画布上移动到需要的元件上,会在四周显示箭头,单击箭头即可创建复制品,如下图:

MatLab SimuLink国产代替_第9张图片

d、用鼠标拖拉画布上现成的元件,同时按住Ctrl键,在需要的位置放开鼠标即可复制。

e、使用右键的复制粘贴菜单来复制创建。

2)、接线:

要在端口与端口之间创建连接线,有如下几个方式:

a、点击开始端口按住鼠标,在移动到输出端口放开鼠标,则会自动创建连线。

b、选中多个图元,按住Ctrl键,在需要连接得图元上单击鼠标,即可自动连接,如下图:

MatLab SimuLink国产代替_第10张图片

c、移动图元,将要连接的端口和端口对齐到一条线上(系统会自动捕捉),则会自动接上。

d、从输出端口按住鼠标移动到需要的位置,放开鼠标,会自动弹出创建元件列表框,从中选中需要创建的元件即可自动创建,自动连接。如下图:

MatLab SimuLink国产代替_第11张图片

3)、开始仿真:

点击工具条上的运行按钮(

),即可开始仿真,仿真开始后,会实时显示每个端口的数据,如下图:

MatLab SimuLink国产代替_第12张图片

4、输出

UCanCode提供了多种输出元件或者图表,有2D的,也有3D的,有文本输出,也有曲线(时序图,xy图,3d图),如下:

MatLab SimuLink国产代替_第13张图片

MatLab SimuLink国产代替_第14张图片

值列表:

MatLab SimuLink国产代替_第15张图片

二、解决思路:

1、UCanCode的思路是给开发国产替代软件提供一个高效的基础架构,并开放所有这个架构的源代码。用户可以通过如下几种方式进行拓展:

1)、直接在UCanCode平台基础上进行算法块的积累,这些算法块包括积分块,微分块等等,这些算法块可以直接通过我们提供的JavaScript来进行扩展,也可以进一步定制UCanCode的源码来支持其他脚本语言或者直接调用其他c,或者C++编写的动态库的算法函数。开放的算法库可以积累,也可以分享。UCanCode不对软件的使用收取任何费用,我们只对需要购买这个软件本身源码收费。UCanCode已经提供了数百个算法块,如下:

MatLab SimuLink国产代替_第16张图片

MatLab SimuLink国产代替_第17张图片

同时UCanCode提供了仪表盘和游标这些控制元件,通过这些元件可以显示数值,也可以调节数值,如下图:

MatLab SimuLink国产代替_第18张图片

MatLab SimuLink国产代替_第19张图片

2)、UCanCode创造性的把组态HMI&SCADA集成到同一个平台,可以直接定义实时变量,全局变量。脚本可以直接操作变量的值,而实时变量可以直接通过OPC,Mobus以及内置通讯驱动从下位机采集数据,传上来的数值再进入仿真模块进行计算输出。

MatLab SimuLink国产代替_第20张图片

三、高级功能:

1、子图模块:

选中画布上的计算模块,单击鼠标右键,选择“创建子图模块”

MatLab SimuLink国产代替_第21张图片

(创建前)

MatLab SimuLink国产代替_第22张图片

MatLab SimuLink国产代替_第23张图片

(创建后)

2、模块注释掉和解注释:

跟Simulink一样,在调试的时候可以分模块注释,注释的模块会灰色显示,如下图:

MatLab SimuLink国产代替_第24张图片

3、标注模块

跟Simulink一样,可以将模块进行分组,分组的模块可以整体移动,如下图:

MatLab SimuLink国产代替_第25张图片

4、自定义属性值:

任何一个图元都可以根据需要定义任意多的变量,这些变量可以用来保存值,也可以用来计算:

MatLab SimuLink国产代替_第26张图片

当然也可以链接输入变量和输出变量。

5、子图关系浏览:

MatLab SimuLink国产代替_第27张图片

这点跟MatLab的Simulink类似。

6、着色:

选中画布上的一个元件,可以通过鼠标右键调整前景,字体等,则与其关联的接线则会自动着色和调整字体,如下图:

MatLab SimuLink国产代替_第28张图片

此外,作为一个非常专业的图形可视化基础架构,我们的源码解决方案远不止这些功能,还包括剪贴板,分组与打散,Undo/Redo,多边形编辑,自动对齐,分层,表格,拖拉,打印等等广泛的功能。为此我们积累超过20年。核心源码超过50万行。

四、案例:

1、输出正弦曲线:

a、绘制一个矩形,设置一个输入一个输出端口。控制脚本如下:

b、放一个输入元件,控制脚本如下:

c、运行输出如下:

MatLab SimuLink国产代替_第29张图片

2、矩阵运算

我们做坐标按角度旋转,通过矩阵来进行转换,转换矩阵如下:

MatLab SimuLink国产代替_第30张图片

a、构建的仿真图如下:

MatLab SimuLink国产代替_第31张图片

b、构建theta角度,控制脚本如下:

MatLab SimuLink国产代替_第32张图片

g1是全局变量,值通过下面的游标进行调整。

c、构建2 x 2转换矩阵,如上sin, cos, - sin,控制脚本如下:

MatLab SimuLink国产代替_第33张图片

c、构建2 x 2矩阵,控制脚本如下:

MatLab SimuLink国产代替_第34张图片

d、构建转换坐标输入矩阵:

MatLab SimuLink国产代替_第35张图片

e、红色方块矩阵运算模块控制脚本:

MatLab SimuLink国产代替_第36张图片

f、输出到标签文本。

MatLab SimuLink国产代替_第37张图片

3、XY曲线

示例如下:

MatLab SimuLink国产代替_第38张图片

4、3D输出:

选择3D输出元件,控制脚本如下:

MatLab SimuLink国产代替_第39张图片

输出图像如下:

MatLab SimuLink国产代替_第40张图片

 

五、目标:

提供这个架构平台的目的不是要开发一个完全代替MatLab Simulink的软件,这不是我们的目标。我们是希望为开发Simulink这一类建模仿真软件提供一个基础架构平台,并开放所有源代码。平台所有功能均可以根据自己的需要进行定制,无论是工业企业,科研院所,大学机构等只要需要类似的软件都可以基于这个架构去快速构建。实际上全球很多大公司包括:三星电子,LG,现代,西门子,阿尔斯通,高通,华为等都在这个基础上得到很好的应用。

很遗憾,我们并不是Simulink的专家(您才是),甚至Simulink解决方案也不是我们的全部,我们提供了很多工业软件的源码,这个只是其中之一。

下面网址可以找到所有这些源码:

Visual C++ Library with source code

软件的运行版本也可以通过这个网址获取。

UCanCode Software

希望听到您的宝贵建议,为中国工业软件加油。

你可能感兴趣的:(c++开源绘图平台,组态与建模仿真,matlab,开发语言,仿真,开源,Simulink)