MatLab SimuLink国产代替

news2024/11/9 2:05:50

MATLab SimuLink国产代替

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

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

 

一、基本功能:

1、算法块编辑和定义。

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

2、定义接口:

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

设定后显示如下图:

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

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

4、存储算法:

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

5、构建仿真:

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

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

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

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

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

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

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

2)、接线:

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

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

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

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

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

3)、开始仿真:

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

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

4、输出

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

值列表:

二、解决思路:

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

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

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

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

三、高级功能:

1、子图模块:

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

(创建前)

(创建后)

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

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

3、标注模块

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

4、自定义属性值:

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

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

5、子图关系浏览:

这点跟MatLab的Simulink类似。

6、着色:

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

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

四、案例:

1、输出正弦曲线:

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

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

c、运行输出如下:

2、矩阵运算

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

a、构建的仿真图如下:

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

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

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

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

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

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

f、输出到标签文本。

3、XY曲线

示例如下:

4、3D输出:

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

输出图像如下:

 

五、目标:

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

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

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

Visual C++ Library with source code

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

UCanCode Software

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/74018.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

乐享元游的 UWA Pipeline 最佳实践分享

“躬身入局 践行游戏研发工业化”是UWA在2022年研发上坚持的方向,其中UWA Pipeline更是今年在工业化部署上的一个重要的突破口。在近一年里,越来越多的游戏研发团队在日常项目生产开发中,使用UWA Pipeline搭建了符合自身需求的DevOps研发交付…

fat32文件系统分析

fat32文件系统结构: fat32文件系统比fat16文件系统少了根目录FDT,其实是将根目录归结到数据区中了。 注意数据区第一个扇区所在蔟为2号蔟。 首先在磁盘管理中创建一个fat32磁盘: 大小为16GB。 使用winhex打开磁盘。 可以看到MBR在扇区0处…

AI推理卡/tensorRT c++

#####AI 推理卡:我的需求是x86上Nvidia显卡训练好的模型 用在AI推理卡上进行推理### AI 推理卡 环境配置 安装ubuntu系统、AI推理卡环境 1,安装ubuntu20.04.4 过程忽略,网上教程很多。 2,ubuntu20.04.4设置root登录&#xf…

入门系列 - Git基本操作

本篇文章,是基于我自用Linux系统中的自定义文件夹“test_rep”,当做示例演示 具体Git仓库的目录在:/usr/local/git/test_rep Git基本操作 之前我们已经创建了 Git 版本库了,下一步我们将进行一些 Git 的基本操作。 有关 Git 版本…

微服务框架 SpringCloud微服务架构 28 数据同步 28.3 声明队列和交换机

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构28 数据同步28.3 声明队列和交换机28.3.1 直接开干28 数据同步 28.3 声明…

【Mybatis】一级缓存和二级缓存

【Mybatis】一级缓存和二级缓存(一)为什么需要缓存(二)一级缓存(在SqlSession上缓存)【1】示例代码【2】增删改操作会刷新一级缓存【3】一级缓存流程总结(1)一级缓存简介&#xff08…

多点DMALL冲刺港股:年亏损超9亿 腾讯IDG金蝶是股东

雷递网 雷建平 12月8日多点数智有限公司(简称:“多点数智”)日前递交招股书,准备在港交所上市。年亏损超9亿多点DMALL成立于2015年,为本地零售业提供基于云的一站式端到端的数字零售SaaS平台。多点DMALL提供的服务包括…

搜索是过拟合的生成;生成是欠拟合的搜索

神经搜索的最大竞争者可能来自于一种甚至不需要向量嵌入作为中间表示的技术 —— 一种直接返回你想要的结果的端到端技术。"那么,谁将是神经搜索最大的竞争对手?"本文作者:肖涵,Jina AI 创始人兼 CEO 谁将是神经搜索最大…

Redis框架(二):SpringDataRedis入门和序列化方式解决内存占用问题

SpringDataRedis入门和序列化方式解决内存占用问题基本介绍实例Demo自定义RedisTemplate序列化自定义的RestTemplate的内存占用问题StringRedisTemplate解决内存占用问题总结SpringCloud章节复习已经过去,新的章节Redis开始了,这个章节中将会回顾Redis 主…

c#入门-可选参数,不定长参数

可选参数 声明可选参数 函数的参数在声明时,可以同时为其赋值一个常量。 但是所有这样的参数,需要在所有必填参数的后面。 void Any(int i 10) {Console.WriteLine(i); }使用可选参数 稍后,在调用函数时,你可以不填可选参数。…

1 - 线程池的基础用法

参考:线程池的基本用法 - 简书 1、为什么要用线程池? 在java中,开启线程的方式一般分为以下三种: a. 继承Thread,实现其run方法; b. 实现Runnabler接口,通过Thread来实现线程; …

法的概念与大纲

一、法的概念 法是由国家制定或认可并由国家强制力保证实施的,反映特定物质生活条件所决定的统治阶级意志,以权利和义务为内容,以确认、保护和发展对统治阶级有利的社会关系和社会秩序为目的的规范系统。 二、法的特征 规范性 国家意志性 权…

微信恢复大师花了200多,套路一环接一环!

数据恢复本是一个科技进步的体现,让误操作导致的重要数据可以找回来。但是近年来数据恢复跟诈骗挂钩,数据恢复本是利好的事情,为什么会跟诈骗挂钩。究竟是什么原因呢?最近小编发现,百度推荐词出现:“微信恢…

Neural Network-神经网络算法本质

1. Word2vec~single CBOW算法推导BP word2vec主要实现方式有:skip-gram和CBOW。 CBOW的目的是根据上下文contextual words来预测当前中心词的概率,且上下文所有单词对当前中心词出现的概率影响权重是一样的,如在袋子中取词,取出…

痞子衡嵌入式:国内外串行NOR Flash厂商官网Cross Reference功能使用体验

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家讲的是国内外串行NOR Flash厂商官网Cross Reference功能。 串行 NOR Flash 是一个相对发展稳定的市场,目前全球市场约 90% 的份额被中国的三家厂商(Winbond华邦/MXIC旺宏/GigaDevice兆…

Java入门教程(26)——继承

文章目录1.继承的作用2.继承的关键字3.继承的特点4.实例5.instanceof 运算符继承是面向对象三大特征之一,继承可以让我们减少代码量,实现类的复用1.继承的作用 代码复用,更加容易实现类的扩展方便建模 2.继承的关键字 extends,…

网站都变灰了,几行代码可以实现

前言 这两天,我们经常逛的好多网站、app首页都变灰了,原因大家应该都知道了 网站变灰 ①B站 ②爱奇艺 ③ 腾讯视频 ④ csdn ⑤百度 怎么实现的呢? 难道这些网站开发商在网站开发的时候都准备一套灰色主题的UI么? 好奇心…

端水or信仰?ChatGPT“点评”Web3未来

近日,OpenAI发布了人工智能聊天机器人模型 ChatGPT,产品自11月30日发布到现在仅一周时间,就积累了上百万用户,广受大家好评。有人让它写代码,有人拿高考题目考验它,这些“难题”似乎都难不倒它,…

vue3 教程(上)

学 vue3 通过官方文档更详细,不过阅读本博客,可以更容易理解,且帮你速成! 官方文档(记得将API风格偏好切换为 组合式 否则你学的是vue2) https://cn.vuejs.org/guide/introduction.html 学习前的准备 创建…

[synchronized ]关键字详解

目录 1.synchronized 特性 1.1互斥性 1.2内存刷新 1.3可重入 2.Java 标准库中的线程安全类 3.死锁问题 3.1 一个线程,一把锁 3.2 两个线程,两把锁 3.3 多个线程,多把锁 4.死锁的条件 1.synchronized 特性 1.1互斥性 synchronized 关键字会起到互斥效果,当某个线程执…