# 物理单位推导与检查
物理系统建模时,物理量通常用变量值与单位表示。Modelica 内置类型 Real 包含属性 “quantity”、“unit” 和 “displayUnit”。
Sysplorer 支持单位推导与检查的功能,包括变量单位自动推导、单位合法性检查和等式单位匹配性检查。
# 支持的单位
Modelica 规范中指出“Modelica 中支持的基本单位应该包括 SI 体系的基本单位和导出单位”,Sysplorer 满足该要求。
SI 基本单位
Sysplorer 支持 SI 规定的 7 种基本单位如下:
Name Symbol metre m kilogram kg second s ampere A kelvin K mole mol candela cd SI 单位前缀
Sysplorer 支持 SI 规定的 20 个单位前缀如下:
Factor Name Symbol Factor Name Symbol 10e1 deca da 10e-1 deci d 10e2 hecto h 10e-2 centi c 10e3 kilo k 10e-3 milli m 10e6 mega M 10e-6 micro μ(u) 10e9 giga G 10e-9 nano n 10e12 tera T 10e-12 pico p 10e15 peta P 10e-15 femto f 10e18 exa E 10e-18 atto a 10e21 zetta Z 10e-21 zepto z 10e24 yotta Y 10e-24 yecto y SI 推导单位
Sysplorer 支持 SI 规定的 24 种推导单位如下:
Name Symbol Definition Name Symbol Definition radian rad 1 siemens S A/V steradian sr 1 weber Wb V.s hertz Hz 1/s tesla T Wb/m2 newton N kg.m/s2 henry H Wb/A pascal Pa N/m2 degree Celcius degC K joule J N.m lumen lm cd.sr watt W J/s lux lx lm/m2 S 视在功率 VA J/s Q 无功功率 Var J/s coloumb C A.s becquerel Bq 1/s volt V W/A gray Gy J/kg farad F C/V sievert Sv J/kg ohm Ohm V/A katal kat mol/s 非 SI 单位
以下是一些 Sysplorer 能识别但不属于 SI 系统的常用单位,它们与 SI 系统的换算关系如下:
Name Symbol Expressed in SI units minute min 60s hour h 60min day d 24 h degree(Angle) deg (π/180) rad litre l dm3 decibel dB 1 electronvolt eV 0.160218 aJ bar bar 0.1 MPa phon phon 1 sone sone 1 degree Fahrenheit degF (K-273.15) *(9/5) + 32 degree Rankine degRk (9/5) * K revolutions rev / minute ′ 1′ = (1/60)o = (π/ 10 800) rad second ″ 1″ = (1/60)′ = (π/ 648 000) rad hectare ha 1 ha = 1 hm2 = 104 m2 litre L dm3 tonne t 1 t = 103 kg
# 单位检查
Sysplorer 会对包、模型和函数中的各个方程做单位检查。检查内容包括变量单位是否合法以及方程两边表达式的单位是否匹配。
目前,Sysplorer 的单位检查是基于实例化后的方程系统进行的,其检查比较灵活。空字符串 “” 被解析为未知单位,可进行单位推导。如果单位是字符串类型,但不是基本单位也不能根据基本单位推导得到,则不能被解析,如“ssss”或“2”,Sysplorer 会给出警告,但这些单位可以显示。
Sysplorer 认为带前缀下标数组中的所有元素单位应该是相同的,若变量单位的变型各分量不相同,则 Sysplorer 会给出警告,并忽略。
举例 1:
Real x[2,2](unit = {{"s", "s"}, {"s", "s"}}) = {{1, 2}, {3, 4}};
Real x[2,2](unit = {{"m", "m"}, {"s", "s"}}) = {{1, 2}, {3, 4}};
上述第一个声明方程是合法的,第二个声明方程会给出警告。因此建议给数组变量单位属性变型时赋相同的单位。
下面基于两个有错误的模型做单位检查。
举例 2:
model CheckUnit_Example1 // 变量单位的合法性检查
Real x(unit = 1) = 1;
Real y(unit = "m") = 1;
Real z;
equation
z = x + y;
end CheckUnit_Example1;
执行该模型的模型检查或编译,输出如下信息:
CheckUnit_Example1.mo(2): 警告(2710): 组件 x 的属性 unit 的变型表达式 1 的类型不合法. 变型表达式类型为 Integer. 该属性值被忽略.
该警告信息表明,变量 x 的单位不是字符串常量,需要改正此声明方程以避免该警告。
举例 3:
求解一个恒力在直线方向做功,其中用速度(“Velocity”)代替位移(“Distance”):
model CheckUnits_Example2 //等式单位的匹配性检查
Modelica.SIunits.Velocity V = 2 "Velocity";
Modelica.SIunits.Force F = 3 "Force";
Modelica.SIunits.Energy E "Energy";
equation
F * V = E;
end CheckUnits_Example2;
选择模型检查或编译,输出如下信息:
警告(5002): 方程 F*V = E 的单位不匹配:
F*V 的单位为 W,
E 的单位为 J.
上述警告说明方程两边表达式的单位不匹配,用位移(“Distance”)替换速度(“Velocity”)即可消除该警告。
为了便于单位检查与单位推导,建议在设置变量单位时采用国际标准单位(SI 单位制),这也是进行单位检查的前提条件。
提示
单位检查时,Sysplorer 认为 “km” 与 “m” 这两个单位是不匹配的,尽管它们都是长度单位。
# 单位推导
单位推导以单位运算为基础。表达式由变量、运算符等组成。变量指定其 “quantity” 及 “unit” 属性,即可代表某个物理量。物理量的值经过运算,可得出表达式的值,根据各物理量单位的运算可得出表达式的单位。如物理量 s (unit =“m”) 为长度,t (unit =“s”) 为时间,则表达式 s/t 经运算可得其单位为“m/s”,该表达式的量纲为速度。
单位推导本身就隐含了“根据一个表达式推导出另外一个表达式单位”的含义,因此一元表达式不涉及单位推导。单位推导仅涉及 4 种运算:“+(-)”、“*”、“/”以及“=”,其他二元表达式的运算则在转化为这 4 种基本运算之后进行推导,否则推导终止。
单位推导遵循如下规则:
Unknown unit * "unit1" → unknown unit
Unknown unit + "unit1" → "unit1"
提示
单位“1”例外,因为未知单位“”与单位“1”具有不同含义。单位“1”表示无单位,而未知单位则表示单位不确定。“1”作为已知单位,在单位检查时,不要求“1”与其他单位匹配,如“+”运算左单位为“1”,右单位为“m”,合法,结果为“m”。
举例:
以 Modelica.Blocks.Examples.PID_Controller 为例。
求解后推导单位在仿真浏览器中显示。
从仿真浏览器中可以看到,PI 的参数 u_m 和 y 原先没有明确的单位,在模型编译后它们的单位被推导且在仿真浏览器中显示。
# 单位显示
在建立物理系统模型时,Sysplorer 建议使用 SI 基本单位。但有时非 SI 单位可能更适合实际应用场景需要。Sysplorer 提供对显示单位(displayUnit)的支持以满足实际的需求。一般情况下,unit 对应 SI 单位,displayUnit 对应工程单位。
显示单位配置
一个 SI 单位可能对应多个显示单位,如 SI 单位“m”,对应“km”、“cm”、“mm”这三个显示单位。通过用户目录下的显示单位配置文件
..\%Sysplorer安装目录%\setting \MWORKS.DisplayUnit.xml定制候选显示单位。该文件定义了一些 SI 单位与工程常用的显示单位之间的换算关系,详细信息,请参见显示单位。单位选项配置
变量单位与其显示单位之间的转化关系依赖于显示单位配置文件中的配置。
另外,也可在曲线窗口属性对话框中设置曲线的显示单位。

从上述对话框可以看到变量 PI.u_m 的单位为“rad/s”,当前显示单位为“deg/s”,如果需要更改显示单位,可以单击下拉列表选择合适的显示单位。此处显示单位的候选项可通过显示单位配置文件进行定制。
曲线窗口上下文菜单的显示单位中提供配置文件中显示单位的候选项,直接选择其中一项即可设置显示单位。
提示
通过曲线窗口修改显示单位不会对文本视图中内容产生影响。