介绍
目录 1. 介绍 安装和启动 2. 图形用户界面 (GUI) 3. 建模 概念 库 类型 & 构件 模型的建立 连接 参数 名称&模型层级 用户自定义类 4. 仿真 概念 瞬态仿真 常量初值计算 结果 线性系统分析 稳态平衡 5. 其他特性 代码输出 COM接口&脚本 变量向导 优化设计 联合仿真
1. 安装
基础 SimulationX 配备: 本培训能够: 本培训不能: 操作直观的图形用户界面(windows-图形用户界面) 全面的联机帮助 丰富的手册 :硬拷贝和 pdf文件 大量的实例参考 入门指南 本培训能够: 使得用户轻松入门 本培训不能: 替代手册
首次运行窗口 桌面图标 启动对话框,用于选择软件权限,只操作一次即可 测试版 学生版 专业完整版 通过菜单Extras中的选项 可以改变权限和版本
权限选择 寻找软件狗或者许可码 选择 点击OK选项,启动软件 取消此处设置,再次 启动软件时,不再显 示该对话框
2 图形用户界面(GUI)
图形用户界面 菜单 工具条 +工具提示 任务栏 模型浏览 学科库栏 结果窗口管理器 输出窗口 模型管理器 结果窗口
图形用户界面 – 模型描述 三维视图 模型视图 (电路图, 结构) 模型管理器 结构
图形用户界面– 学科库栏 显示及管理学科库 显示库元件的主要信息 树形结构 通常在左面一个 独立的窗口
图形用户界面–参数确定 属性窗口 参数 模型管理器
图形用户界面–参数确定 特征和表格 数据的导入和导出 不同的插值方法 可作为组和件用于创建用户自定义类
图形用户界面– 结果窗口 结果许可属性必须设置为有效状态 通过拖拉模型管理器中的属性或浮动菜单都能打开结果窗口 协议时间步长 dtProt : dtProt = 常数 ? ----> 变量向导 可视化、分析和导出功能的多样化
图形用户界面- 结果 在某些时间节点的值 模型管理器 实时显示
图形用户界面- 文档 用户定制 输出格式(*.pdf, *.rtf, *.htm)
图形用户界面- 附加功能 文本,图片,实时显示,控制元件
图形用户界面 – 用户定制 定制: - 符号栏和菜单 - 宏连接的菜单命令 - 菜单效果 - 浮动菜单内容
图形用户界面 – 选项 用户定制: - 激活的库和拓展 - 路径 - 语言 - 权限
3 建 模
动态系统建模方法 集中离散元件建模法 (物理网络建模) 信号方块图式建模 数学方程式建模 直观和高效 双向连接(信息流) 推荐用于物理系统 (即. 电子, 机械, 液压, 气动, 热学, ... ) 信号方块图式建模 信号流的建模 单向连接 适合用于控制系统 数学方程式建模 数学描述 要求较高的数学抽象性,在物理关系和数学 方程方面要求有较为丰富的知识
建模概念 –网络式建模 定义了每个物理域的势和流 模型由元件和连接组成 连接计算势的数值,定义连接结点处的平衡方程 (例如: ∑F = 0) Knot 连接 定义了每个物理域的势和流 模型由元件和连接组成 连接计算势的数值,定义连接结点处的平衡方程 (例如: ∑F = 0) 元件计算流的数值,定义流和势之间的关系式(例如. F = k*Dx)
建模概念 –网络式建模 不同物理域的 网络元件 ò 力学 w 基本元件类型 势 流 容性元件 感应元件 阻性元件 电压 V 电流 I 电容器 电感器 电阻器 电子学 U C I & × = ò dt L 1 R 速度 v 力 F 质量 弹簧 阻尼 力学 (平移) v m F c d 角速度 w 转矩 T 转动惯量 转动弹簧 转动阻尼 (旋转) J T 压力 p 体积流量 Q 体积 管道 (无损失) 节流阀 液压学 p V H 温度T 热流 P 热容量 热阻 - 热学 P th 不同物理域的 网络元件
建模 – 库 元件等级制 基本元件 (例如:机械学) 用于系统建模的特殊耦合元件 (例如: 电机, 液压缸, ...) 复杂元件(例如:异步电机,行星齿轮,液压泵, ... ) 可以将常用的元件类型定义到Favorites库中 任意拓展
学科库 (可选择) 电子学 信号块 液压学 电磁学 机械学
元件类型和元件 元件质量1: 元件类型质量: 类型:质量 在库中定义 是模型Model15的一个组件 有唯一的名字(识别) 可应用于不同版本 有唯一的名字(可变) 属性是不可变的 参数可以赋值 在库中定义 有唯一的名字(识别) 可应用于不同版本 作为一个元件模板 定义元件的属性 可以设置参数的默认值
连接 connection1: 类型:机械连接 是模型Model2的一个组件 有唯一的名称(可变) 属性是不可变的 参数可以赋值
内部和外部元件类型 内部元件类型: 外部元件类型: 由ITI定义 存储在库中 库的内容取决于权限 用户不能改变、删除或编辑 由用户定义的 可以是整体的或局部的类型 整体类型定义在库中 局部类型定义在模型中
整体和局部类型 全局类型: 局部类型: 定义与模型无关 可供所有模型使用 模型移植困难 可以转化为局部类型(仅对外部类型而言) 在库工具条中管理 在模型内部定义 仅适用于定义所在的模型 模型移植容易 可以转化为整体类型 在模型管理器中管理
类型、组件和模型 总结: 类型是构件的“结构图”。 构件可以是元件、连接、参数和变量。 改变一种元件类型的属性,该类型的所有元件的性质会自动更改。 一个类型中可以包含另一种类型的元件。( 组合件) 一个模型就是一个类型。它们可以包含元件、连接、参数和变量. 用户可编辑这个模型类型,例如为了增加参数和结果变量.
模型建立 – 范例 单质量振荡器 略图
模型建立 操作元件符号 选择类型,创建元件 建立连接 元件标识 连接方式是自动建立的
连接 简单连接 在端口处分离连接 连接分支 按住 Shift 键 或
连接 建立一个连接/自动布线 或 a) b) 自动布线: 可以按照下面的某一规则自动形成路线。 路线可以手动改变 (a). (通过按住ALT 键) 随着连接元件的改变,自动布线功能再次被激活(b))。 或 a) b)
连接 两个连接之间的连接 两个接线可以通过兼容元件 (质量, 体积等)的自由端口连接在一起 连接将被合并。
连接 在两个连接中没有元件存在自由端口的情况下,必须添加一个兼容元件,并将参数 (质量, 体积..) 设置为0。 两个连接之间的连接 在两个连接中没有元件存在自由端口的情况下,必须添加一个兼容元件,并将参数 (质量, 体积..) 设置为0。 或者: 删除连接后再重新定义。
连接 在自动布线的过程中,已改变的路线将被重新设置。 在路线分支时,可以建立最多带有四个端口的结点。 结点可以像元件一样移动(选择)。 线路布置的改变 在自动布线的过程中,已改变的路线将被重新设置。 在路线分支时,可以建立最多带有四个端口的结点。 结点可以像元件一样移动(选择)。 结点不受自动布线影响。 不存在少于3个端口的结点。 注意! 自动布线 带有四个端口的结点
连接 隔离功能 隔离功能清除元件的所有连接 选择元件 点击鼠标右键,弹出浮动菜单 通过按住Shift键和点击鼠标左键将断开一个连接的端点。
参数设置 属性对话框-参数 由一个或多个页面的参数和属性组成 选择不同的模型方法 通过数值、表达式或者特征来确定参数 单位改变和变换 取消变换:按 SHIFT 键改变单位 备注 (注释) 单位列表框 名称 表达式的编辑框 变换 没有变换
参数设置 属性对话框-结果 由一个或多个页面的结果变量组成 选择结果显示的单位 结果变量的名称和备注 名称 备注 (注释) 结果显示许可属性 单位列表框 属性
参数设置 属性对话框-概要 基本信息和基本调整 元件名称 可改变的 必须唯一 注释 窗口的“插销” 具有软开关功能,能使窗口保持打开状态 获取在线帮助 最小尺寸 扩大
参数设置 属性对话框-多重参数设置 具有相同参数的多个元件可以同时设置参数 打开一个元件的属性对话框 启动窗口“插销” 选择所有需要改变的元件。 设置参数 元件elasticFriction1的其它参数
参数设置 属性对话框-初始值 三种方法确定参数 必要的常量表达式 用户应该尽可能多地提供初始值 初始值将由 SimulationX计算 固定的初始值 初始值由用户给出,然后SimulationX进行计算。
参数设置 属性对话框-初始值 1 2 3
参数设置 参数设置-数值和变量 数值是基本对象,在所有计算中都会用到. 所有表达式和函数都用到数值. 数值并非仅表示一个数. 他们可以表示由许多数组成的维数较高的结构。 排列是具有高维的数值的通用名称。标量是0维的 ,向量1维和矩阵2维。 数值具有一个类型。可以是布尔型(真和假) ,整数型或实数型( 64位浮点数)。 变量有数值. 有一个名称,可被表达式引用。
参数设置 参数设置-物理单位 每一个表达式可以后缀一个字符串(用单引号引起来)用来描述物理单位. 两种形式: 例如 1 ‘km’ :表示该值具有指定单位,将被转化为标准单位, 例如 1 'km' == 1000 例如 1 ‘->km’ :表示该值具有国际标准单位, 将被转化为给定单位, 例如 1 '->km' == 0.001 两种形式可以一起使用,例如 1 'km^2->ha' == 100. 由美国单位组成的数值可直接给出, 例如 6 'ft' 6 'in' == 1.9812 'm'.
参数设置 预定义常量,变量和函数 常量 pi 2*arccos(0) == 3.14159265358979... e exp(1) == 2.71828182845905... 变量 t, time 当前仿真时间 函数 sin(x) 正弦函数 cos(x) 余弦函数 sinh(x) 正双曲线函数 arcsin(x) 反正弦函数 ln(x), exp(x), tan(x)...
参数设置 表达式:数学函数及附属 和, 差, 积, 商 3*4/(5+6) 对数 ln(2*pi/t) 指数函数 Mass.m/2*v^2 和, 差, 积, 商 3*4/(5+6) 对数 ln(2*pi/t) 指数函数 Mass.m/2*v^2 平方根 sqrt(Mass.c/Mass.m) 三角函数 0.1*sin(2*pi*t*4) 条件语句 if x>5 then 1 else 0 物理单位的使用 10 'm²' * 5 'g‘
参数设置 逻辑条件, 条件语句 SpringDamper1.k = if SpringDamper1.Fi>0 then 10000 else 5000 该if语句创建了事件
命名空间 概念 范例 名称空间 模型的所有组件有一个唯一的名称,因此可以在其它地方引用它们。 名称空间是分层级设计的。 刚度系数 k 阻尼系数 b 种类 kind 位移差. dx 内力 Fi 端口 ctr1 弹簧阻尼器 Spring1 位移 x 速度 v ctr2 元件 参数 变量 名称空间 Spring1.k Spring1.b Spring1.kind Spring1.dx Spring1.Fi Spring1.ctr1 Spring1.ctr1.x Spring1.ctr2.v Spring1.ctr2 Spring1.ctr2.x
命名空间 – 范例 参数化模型 不同元件的参数相互依赖 参数可以用在不止一个地方 建模 特征的多次移动使用(二冲程发动机)
命名空间 – 范例 任务: 将该模型扩展为另一个单质量振荡器模型。新弹簧的刚度为该模型 中弹簧的四倍。 ?
类型设计器 封装 — 多个元件集合到一个新的元件类型中 (层级建模) 扩展 — 改变现有的类型(派生,继承 ) 新建 — 创造全新类型
类型设计器1– 封装 具有组合模型的特性的“黑匣子” 可选择添加元件 (端口, 参数,结果) 与模型外部进行连接或计算等 可以引入附加属性 目标: 层级建模 简化复杂模型结构 重用性 知识保护(加密保存) 范例: 发动机特性模型
发动机特性模型 发动机模型:转速-扭矩曲线 创建一个封装模型 以特性曲线和节气门开度 (0...1) 作为参数 以发动机扭矩为输出结果 转动惯量: 0.1 kgm² 曲线: 创建一个封装模型 以特性曲线和节气门开度 (0...1) 作为参数 以发动机扭矩为输出结果
发动机特性模型 模型: 封装元件:
类型设计器2– 拓展 拓展类型的所有属性将被继承 可以引入附加属性 可以拓展行为的描述(附加算法或方程式) 目标: 引入附加信号端口 使用附加的参数或特性 计算附加结果 范例: 电阻的功率计算
电阻的功率计算 介绍: 功率作为输出结果 在方程选项内计算功率
电阻的功率计算 类型设计器:
类型设计器3 – 新建类型 定义接口(参数,变量,端口) 定义行为(算法,方程) 联机帮助 (HTML), 图形用户界面 (符号等) 目标: 设置自己的类型库 直接输入微分方程 现有资源的再利用(调用外部函数) 范例: 电容器充电的微分方程
电容器充电的微分方程 电路图: 通过电容器的电流与电压未知 采用建模语言进行建模
电容器充电的微分方程 类型设计器:
类型设计器 – 基本描述 集成到软件系统中 (全局或局部类型) 名称,注释和版本 元件符号及其大小的定义 (自带的符号编辑器)
类型设计器 – 端口和元件 不同的端口类型 获取每个连接所属领域的主要属性 参数(实数,整数,布尔) 变量 初始值 曲线和表格 函数, 方块, 枚举 数据库连接 重置基类 组 (用于属性对话框的设计)
类型设计器 – 物理特性 建模语言 行为可用算法和(或)方程描述 符号分析 自动提取未知数和方程式
类型设计器 –物理特性 建模语言(1) 扩展Modelica®子集 面向对象 支持不同的物理领域和单位 不连续的特殊处理 层级模型 排列和矩阵运算 外部和内部函数, 方块 枚举 存储附加信息作为注释 (符号, 联机帮助等. )
类型设计器 –物理特性 if ... then ... else ... end if; 建模语言 (2) 算法: 处理命令相当于注解 指令 ... := ... 控制结构: if ... then ... else ... end if; when ... then ... end when; for ... in ... loop; while ... loop ... end while; 方程式: 处理命令由 SimulationX 自动决定 ... = ... 注释: C 注释: /* ... */ 和 C++ 注释: //...
类型设计器 – 行为 建模语言 (3) 表达式: 条件表达式: if ... then ... else 逻辑表达式: ... or ... , ... and ... , not ... 关系: ... < ... , ... <= ... , ... > ... , ... >= ... , ... == ... , ... <> ... 数学运算: ... + ... , ... - ... , ... * ... , ... / ... , ... ^ ..., - ... 向量-, 矩阵- 和排列 – 表达式: { ... , ... , ... } 建立向量, 如 v:={ 1.0, 1.1, 1.2, 1.3 } ... : ... : ... 建立向量, 如 1.0 : 0.1 : 1.3 == v [ ... ; ... ; ... ] 建立矩阵: 如 m:=[ 1,2,3; 4,5,6 ] ->2x3 矩阵 可以有子矩阵: { { 1,2,3 } , { 4,5,6 } } == m 更高的维数也是可能的 ... [ ... , ... ] 获取元素:如 m[1,2] == 2 (基于索引 1) 索引可以是向量: e.g. m[ 2 , { 1 , 3 } ] == { 4,6 } : 所有一维索引向量: m[2,:] == { 4,5,6 }
类型设计器 – 行为 建模语言 (4) 预定义表达式: 常数: true, false, pi, e 变量: time, gravity, gravity3D, pAtm, TAtm 函数: der(var), der(var,base), integral(var, init), integral(var,base,init), last(var) initial(), terminal(), noEvent(expr), sample(start,intervall), pre(var), edge(var), change(var), reinit(var,expr) abs(expr), sign(expr), sqrt(expr) div(x,y), mod(x,y), rem(x,y), ceil(x), floor(x), integer(x), int(x) delay(expr,delayTime,delayMax), delay(expr,delayTime) cardinality(pin) ndims(A), size(A,i), size(A), scalar(A), vector(A), matrix(A), array(A,B,C,...), cat(dim,A,B,C,...) transpose(A), outerProduct(v1,v2), identity(n), diagonal(v) zeros(n1,n2,...), ones(n1,n2,...), fill(s,n1,n2,...) linspace(x1,x2,n), min(A), max(A), sum(A), product(A), symmetric(A), cross(v1,v2), skew(v)
类型设计器 – 联机帮助 改变帮助的工具条 自动生成帮助框 改变类型后更新 帮助框 在 HTML里 (集成的编辑器,需要 IE 5.5 or 6) 集成在 SimulationX 帮助系统里 改变帮助的工具条 自动生成帮助框 改变类型后更新 帮助框
类型设计器 – 安全性 仅使用于保存全局类型 类型的使用权限和编辑权限使用不同的密码
4. 仿真
仿真概念 一个模型 - 不同的计算方法: 瞬态 稳态平衡 线性系统分析
瞬态仿真 求解器 隐式的DAE方程求解器 BDF 系列求解方法 变量步长和阶次 初始值的计算 不连续的特殊处理
瞬态仿真 流程图 开始 整体符号分析 Index计算 相同 状态? 计算初始值 时间步长 成功? 准备新的时间 步长 通讯 完成? 事件? 是 否 相同 状态? 计算初始值 时间步长 是 否 成功? 准备新的时间 步长 通讯 否 是 完成? 否 是 事件? 通讯 停止
瞬态仿真 - GSA 整体符号分析 (GSA) 使模型收敛并使其简化 工作流程: 分解参考 置换简单方程 确定循环变量的索引范围 确定变量的维数 将多维方程转换为一维方程
瞬态仿真 - GSA 分解语句 建立中断 引入特殊函数的变量 分配方程的变量 根据变量重新整理方程 确定方程的阶次
瞬态仿真 - GSA 变量的关联性 确定状态和方程 减少索引 符号Jacobi矩阵
瞬态仿真 - GSA 符号分析后的方程组:
瞬态仿真 计算相容初始值: 常微分方程通常有相容初始值 代数微分方程的初始值往往在某些环境下创建的 例如:一个三维模型的约束 主动轮施加给系统一个运动 连接的初始速度不等于零 通过求解一组特殊的非线性方程可以创建相容初始值 (可变初始值未知) 不相容,固定 不相容,可变 相容,可变
瞬态仿真 – 求解 模型描述为隐式的代数微分方程系统: 求解器: BDF法 和 MEBDF法 预估-校正方法:可变的时间步长宽度与阶次 x ..... State p Parameter z discrete state zf .... Zerofunctions t ...... time
瞬态仿真 – 求解 运用预估法,计算出新的近似值。 通过校正迭代,该近似值将得到修正,直至达到要求的精度和满足收敛标准。 Predictor Corrector-iteration 运用预估法,计算出新的近似值。 通过校正迭代,该近似值将得到修正,直至达到要求的精度和满足收敛标准。 校正值Dx由线性方程组确定:
瞬态仿真 – 事件 已知时间点 未知时间点
瞬态仿真 – 事件 每个中断自动引进一个零函数,该函数在中断点有一个零通道 例如: v = if t<=0.05 then 12 else 0 零函数: t-0.05 零函数用于限制时间步长宽度和精确确定时间点:
瞬态仿真 – 事件 在不连续点计算将被执行两次 步长是理想的! 在不连续点的结果将记录两次!
仿真 - 稳态平衡 仿真任务 范例 研究系统的某一平衡状态 电子学: 放大器的直流工作点 液压学: 液体驱动的稳态计算 电子学: 放大器的直流工作点 液压学: 液体驱动的稳态计算 力学: 弹性系统的静态平衡 机械学: 船舶以等速度行进并且开始机动操作。
仿真 - 稳态平衡 力学: 两种平衡 系统静止 状态的所有导数都等于零 (v, a) 系统匀速运动 只有最高阶的导数等于零 (a)
仿真 – 线性系统分析 研究分析当前工作点的线性化系统: 固有频率和模态 频率响应 零极点分布 线性化的系统矩阵 可以在任意模型状态下运行: 没有计算过的模型 计算后的模型 平衡模型
仿真 – 线性系统分析 固有频率和模态: 适合于整个系统 共轭复数特征值 计算能量分布,用来分析对象对某个模态的影响 模态分析结果的动画显示
仿真 – 线性系统分析 频率响应 输入正弦类型激励的系统响应 定义输入输出量 定义激励 (幅值, 相位, 频率范围) 通过拖拉变量值就可以得到其结果的显示窗口
仿真 – 线性系统分析 零极点 传递函数的零极点值 为控制工程师进行稳定性预测
仿真 – 线性系统分析 系统矩阵输出 状态矢量空间显式描述模型: 附加矩阵 E隐式描述模型: 以 Modelica 语句的格式输出,或通过剪贴板输出Matlab 的m文件 x ....... states u inputs y outputs A System matrix B Input matrix C Output matrix D feed through matrix
仿真 – 计算追踪 提供关于计算流程信息 可用于查找错误 可在 “Tracing”属性对话框中进行调整
仿真 –计算追踪 打开和关闭可依赖于模型 在模型的参数traceOn中输入条件:
仿真 –计算追踪 在输出区域按照树形结构方式显示结果 利用文本文菜单进行拷贝,打印,删除,搜索
5. 其他特性
SimulationX – 其他特性 代码输出 数据库链接 COM接口&脚本 变量向导 最优化 联合仿真
代码输出 模型的C代码输出 可以包含在不同的应用软件中: 直接支持: 设计程序,快速变量计算 其它模拟器 实时环境, HiL模拟 可执行模型 Matlab / Simulink S函数, SIMPACK的用户程序 实时平台ProSysRT
数据库连接 面向对象建模 面向对象参数化 产品数据库 SimulationX G1 G2 G3 G4 ... 数据库接口
数据库连接 范例: 齿轮
数据库连接 数据库连接的设置 将数据库连接添加到类型中 选择数据库 选择数据表 参数连接 选择数据集
数据库连接 选择数据库 选择OLEDB提供商 连接测试
数据库链接 选择数据库 –EXCEL 的例子 选择 OLEDB提供商 选择文档 调整属性 连接测试
数据库连接 选择数据表 选择一个表或其他表视图 EXCEL特例: 除了表外,还可以 选择表 的范围 检查表属性
数据库连接 参数连接 为参数分配列 选择单位
数据库连接 选择数据 表视图 选择窗口
接口特性 参数化 仿真 建模 分析 参数导入 参数识别 参数研究 变量向导 最优化 逆向仿真 软件在环 模型建立 模型管理 可选的 GUI 结果输出 图形显示 确认
接口 – 模型对象 对象和集合: 应用程序 仿真模型 模型组件 参数 结果变量 元件类型 结果窗口 选择 应用程序 现行文档 文档 参数 ActiveDocument 文档 Documents 参数 对象 连接 SimObjects Parameters Parameter 对象和集合: SimObject 结果 Results Result 应用程序 Connections Parameters Parameter 仿真模型 Connection Results 模型组件 Document Result Parameters 参数 Application Parameter 结果变量 Results Result 选择 对象 接线 SimObjects SimObjects 元件类型 SimObject SimObject Selection Selection 结果窗口 Connections Connections Connection Connection 类型 实体 Types Entities 选择 Type Entity 结果窗口 ResultWindows ResultWindow
接口 – 编程 是 是(下载) 调试器 部分 MS Office 产品 部分SimulationX 部分窗口 注释 否 VB, VC++, C#, Pascal a.o. 其他设计工具 MS Office 其它 窗口和对话框 是否集成在SimulationX中 IDE Visual Basic VBScript JScript a.o. 语言 VBA ITI-Script WSH
接口 – 编程 入门指南 Excel 参数研究 简单事件处理器 ITI-脚本, 宏记录器, 模型设置, 变量向导 参数化, 结果输出 事件, 回路中软件, 协同仿真
变量向导 – 特性 参数研究 通过初始值,步长和最终值或通过查表描述变量 以文本形式,仿真模型或者XML形式来保存结果 可用于瞬态和稳态仿真 COM接口
变量向导 – 图形用户界面(GUI)
最优化 定义参数,准则,曲线组,辅助条件和调整量 可用优化工具OptiY 执行 参考仿真模型的参数 可选的不同方法 结果的集中显示
联合仿真 – 原理 SimulationX 新的开放协议 任意输入和输出量 独立的TCP/IP通信平台 可以作为主动器或者被动器来运行 同时耦合多种模拟器 SimulationX 耦合块1 模拟器A TCP/IP 耦合块2 模拟器B TCP/IP
联合仿真 – 通讯方式 主动方 (客户机程序) 被动方 (服务器) 定义通讯步长 和输入输出量 在通讯间隔交换 数据
联合仿真 – 接口元件 插值法: 上一个值 线性插值
联合仿真 ITI SimulationX