由于工作需求接触开关电源,不得不看些开关电源设计的书籍,在其中一本获益匪浅的书籍《精通开关电源设计》中认识了Mathcad软件,该书的作者Sanjaya Maniktala所有的计算都是采用Mathcad进行的,他在他的另一本书籍《开关电源故障诊断与排除》中也提到“一旦你克服最初的困难制作完成一张经过验证的电子数据表,那么以后的生活就轻松了(而且更精确了)。按下一个键,你就能完成重复性的工作,无需每次都重新做计算,错误也不会成比例地增加。”在我短短三年的工程师工作中,每一次使用Mathcad都觉得这句话是真理,因为我极度厌恶重复性工作,可是我发现用稿纸做稍微复杂的计算时,每次改一个参数全都得重新计算一遍,而且有时手算的稿纸会找不到,然后又要重新推导一遍。Sanjaya还说“也许你偏好使用Matlab、Excel或其他软,我的选择是MathCAD(因为我只会用这个软件),它完全满足我的要求。我发现可以很容易地用它生成一份易读而清晰的报告,或者为我的应用团队准备一份简单的学习指导,甚至以文本的形式发给有需要的客户。”是的,对于工程师而言,Mathcad所提供的功能不只是足够而是很多,而且它还很好用,特别是计算式的键入很方便,事实上我现在就算是计算1+1等于几这样的简单的算式,我都是用Mathcad进行的,计算器实在是很麻烦,而Mathcad,打开进入其工作界面,输入算式就OK了。
先简单介绍下Mathcad的工作界面,我用的是14
你可以用鼠标左键把所有的工具栏都从上方拖出来,像下面那样,“标准”“格式化”“数学”“自定义字符”“资源”“控件”“调试”,还有更多的工具栏可以从“视图”菜单下找到哦。
这些工具栏的功能可以参见用户指南,里面有很全面详细的说明,我主要说一下数学工具栏,其他的工具栏都不会也没关系,数学工具栏一定要了解。
这部分简单介绍就结束吧,具体的大家还是参考用户指南,真的都是中文啊,其实也可以一边使用,再根据需求有所侧重地到指南中去查找相关主题,这样效率更高。 初级应用Mathcad非常简单,打开界面,鼠标在空白区域单击一下出现一个红色十字就可以开始编辑公式了,执行计算了。
比如你想计算一个半径为3.3的圆的面积,那就在半角下输入ctrl+shift+p+I,*,3.3^2,=,就可以了,你也可以在数学工具栏单击第一个符号,计算器工具栏,从中选择×π 数字直接键盘键入即可,半角符号下的.即是小数点,键入符号中间不要插入空格或其他键。
蓝色直角所在的位置即是你当前可编辑的对象,算式被一个实线方框围住表示处于激活状态,可进行编辑,同样,若没有这个方框即处于不可编辑状态,此时你若想编辑该算式,可用鼠标单击该算式,一定要注意蓝色直角所包含的范围,它表示了你键入下一个算符时的操作对象,不理解我意思的童鞋可以自己尝试一下,用空格或者左右箭头操作蓝色直角的位置和范围。
这里的关键是要处于半角时编辑,如果你发现出现了奇怪的符号,那赶紧撤销,切换成半角。
还有些快捷键操作可能需要多多练习,不过即使不知道快捷操作,一样可以从计算器工具栏选择运算符。
下面是进阶练习,假如你的圆半径发生变化,你希望在Mathcad中输入改变后的半径就能快速得到面积,这里就要定义一个变量了。比如你定义R作为半径变量,定义时输入R + :+3.3,记得在半角下输入,对的:就表示给变量赋值,然后你会发现R符号下有一个绿色波浪符号,单击R会提示该表达式定义了一个Mathcad内置单元,这个不会影响计算,不过看着绿色波浪线很不爽,所以建议不要以单字母作为变量名,比如我们可以定义R1=3.3,然后键入 S1 + : +ctrl+shift+p+i+R1+^+2+=
可以在算式双击,弹出下面的结果格式窗口,设置计算出的结果的格式,设置小数位数或者分数,按照你的要求设置结果格式,一般默认即可。
一个算式编辑完可按enter, 红色十字便切换到下一行,可以继续输入下一个算式进行计算了,当然你也可以用鼠标点击到自己想要编辑算式的位置,这里需要提醒的是Mathcad里你算式中用到的变量需要放在算式上面定义,若变量在算式下面,会提示该变量未定义。
计算器工具栏中还有正弦 余弦 正切 对数等等常用计算,也可以通过键盘输入哦,不过要记得加括号,还有正余弦函数均是以弧度为默认单位的,不是度,所以要计算90°的正弦值不能用sin(90) 必须要用sin(pi/2),更多的函数可以通过插入 函数调出函数工具栏来获得。
选中一个函数,下面会对函数功能以及变量类型,返回数据类型,关于使用函数最需要注意的是数据类型,范围,使用前应通过mathcad的帮助文件或者百度搞清楚,很多问题迎刃而解,比如论坛上这样的帖子http://bbs.21dianyuan.com/215687.html中Mathcad Bode图相位为什么会从-180度变到180度?减小360度还是解决不了。这样问题看了总是很忧桑,这就是对函数没了解清楚就使用导致的。
另外,如果要对一个或几个算式做删除、剪贴、复 制的操作,保持左键按下拉一个虚线框将待操作的算式置于该虚线框内,松开左键,算式周边是一圈虚线框,此时表示该算式可以执行delete copy cut 等操作,鼠标放在被虚线框围住的算式上时鼠标会变成手状,此时可对算式进行拖拽。
解释下这个帖子所提出的问题,关于波特图的相频曲线为什么从-180度变到180度,很多人最初使用Mathcad绘制相频曲线时应该都遇到过这个问题。,我一开始也绘制出了那样的相频曲线,好着急。
那个出现-180度突变到180度因为用的arg函数,arg函数在插入函数工具栏的解释是“返回复数z在-pi与pi之间主值辐角,包括pi。” 这句话都能看懂吧,arg函数计算出的值在-pi到pi之间,换成角度也就是-180度到180度,所以说你觉得相位不从-180度变到180度,难道还指望相位从-180度继续减小到-360度么?
那怎么解决呢,那个帖子里其实有大师答复了,那就是用angle函数,angle函数有两个参数,把你需要绘制相频曲线的那个函数的实部和虚部用Re和Im分别输进去,angle函数返回值在0~2pi之间,所以还得乘以一个系数180/pi,然后减去-360,减360是因为传递函数的相频特性曲线好像都在坐标轴下面啊。。。??
另外,绘制相频曲线记得把x轴设置成对数坐标啊,双击图形弹出x-y图形的格式化选项就可以设置了。
再扯点向量矩阵之类的内容吧,这个我用得也不多,不过一开始不会用函数,所以我的函数全是用向量实现的,好傻吧,现在那个开关电源的计算文件里传递函数还是向量呢。
从数学工具栏的第三个图标调出向量矩阵工具栏,如下图所示。
工具栏里的图标应该一看就了解了吧,矩阵应该很少用到,我用得比较多的还是值域变量”m..n”和下标”Xn”。值域变量的快捷键是键盘上的分号”;”,下标的快捷键是键盘上的中括号”[”(要记住哦,记住会很方便)。
值域变量 是Mathcad中的一个特殊变量,不过真的很好用,值域变量定义一组一个值域内依序且有相同间隔的数字。若值域变量出现在Mathcad等式中,Mathcad将针对值域变量中的每个值进行计算。(这段解释真的好拗口,因为是抄过来的,大家自己到Mathcad试一下去理解吧)。
然后我要举个例子,而且是个相对比较复杂的例子,也是我自己在使用的一个采用值域变量计算传递函数的例子。
计算boost主回路的Gvd传递函数:
当然,我们都知道s其实就是频率f的函数,所以首先定义f为值域变量:
(输入”f””:””1””,””2””;””100000”,”,””2”也可以不输入,默认的间隔是1,”100000”值则取决于你需要的频域范围,不建议定义过多无意义的点,可能会出现点太多无法绘制无法计算等问题,而且也不利于你观察关键范围的曲线,这就定义了一组从1Hz到100kHz且按照1Hz递增的频率点)
(输入”S” ”[” ”f” ”:” ”2” ”*” ”ctrl+shift+p” ”*” ”f” ”*” ”1” “j”,定义了一组基于值域变量f各个值的向量,那个输入”1””j”表示虚数,编辑框离开该等式后,显示为”j”,而不是”1j”)
等式中涉及到的Gvd_dc frhpfesr等都是需要提前定义的变量,对于一个参数确定的回路而言,这些 变量都是定值。而等式中min就是用”.”形成的下标,仅起变量标识作用。要绘制幅频特性 相频特性曲线,仅有传递函数还不够哦,还得定义下面两个函数:
还是从数学工具栏,单击第二个图标,调出图表工具栏,如下图所示。
惭愧地说,这里面我真的只用过第一个功能,x-y绘图,似乎觉得一般的工程计算,x-y绘图完全足够了。单击图表工具栏第一个图标x-y绘图,将会在Mathcad工作表红色十字位置处插入一个x-y绘图,如下图所示。
其四周有个实线框,可用鼠标对该实线框下侧线中间和右侧线中间位置拖拽以实现绘图窗口的大小调整,鼠标停在实线框变成一个手状时,鼠标的拖拽可调整绘图窗口的位置。在绘图外的地方用鼠标单击,该实线框消失,绘图处于不可编辑状态,反之在绘图窗口单击实线框出现,绘图处于可编辑状态,可调整大小、位置,可剪切、幅值、删除等。需要注意的是要对整个绘图剪切、**、删除,必须在下图所示的状态下进行,上图所示的状态时无法对绘图操作的,感觉有点像找不同的游戏了,你们有没有注意到,两个图的蓝色直角位置是不同的,上图的蓝色直角位于绘图x轴的中间,表示可编辑x轴参数,下图的蓝色直角函括了整个绘图,表示可对整个绘图进行操作,可以在绘图范围内右击鼠标,执行剪切、**操作,亦可以用键盘快捷键剪切和**,也可用Delete键删除绘图。关于那个蓝色直角位置怎么控制,大家自己操作看看吧,你自己会掌握的。
然后呢,可以在绘图区域双击鼠标,调出x-y绘图的格式化窗口,如下图。
就不具体讲格式化窗口所有的功能了,后面还有示例呢! 提一下关于次要y轴,就是说是可以有两个y轴的,左侧一个轴,右侧一个轴,绘制Bode图就很有用了,一个轴绘制幅频曲线,一个轴绘制相频曲线,下图就是这样的,对于两个函数共用自变量的情况这样绘图就特别利于观察。两个y轴是彼此独立的,分别进行设置,当然你要在上面的格式化窗口内选择“启用次要Y轴”的多选框,就可以在绘图框的右侧输入次要y轴的参数了。
这是一个Boost拓扑主回路输出电压对控制变量及占空比的传递函数,下面的几个式子是根据我的初始条件计算出的传递函数各参数值。
根据上面式子计算的参数值,我们现在有了下面这样一个复数域的函数(其实就是个基于f参数的向量哈),boost输出电压对占空比的传递函数是个典型的带右半平面零点高Q值的系统。
下面我们就是要绘制这个函数的bode图,首先做好相关参数定义工作:
红色方框中的定义是很重要的,而且是可以照葫芦画瓢移植到其他需要绘制Bode图的任何文件中,然后输入我们要绘制Bode图的那个函数式:
对,就是上面的那个式子,输入到Mathcad的空白区域就是这个样子的了,非常直观清楚明了。紧接着就是插入x-y绘图了,怎么插入还记得吧,前面刚讲过的。插入绘图后,调整到合适的位置和大小,双击打开绘图格式化窗口,选中“启用次要y轴”。
在插入的绘图x轴参数输入处输入”f”,左侧y轴参数输入”dB””(“”Gvd””[””f””)”,右侧y轴参数输入”Ph””(””Gvd””[””f””)”(x轴参数输入处即x轴中间位置处那个黑色小方块,鼠标单击一下即可输入参数,其他y轴参数输入处以此类推),可得到下面的图。
感觉很奇怪,对不对,不太像带一个右半平面零点的共轭复根的函数啊,其实是因为x轴还没设置成对数坐标,此时就是双击绘图调出绘图格式化窗口,如下图所示进行设置,x轴选择两个复选框“对数比例”和“网格线”,其他的都是默认的,主要Y轴和次要Y轴的网格线都选中。
然后,那个格式化窗口中,切换到跟踪选项卡可以设置线的线条形状、宽度、颜色等等。
基本操作可以参考Mathcad基础教程,我从教程里截了两个图贴在这儿,需要注意的是请尽量控制自己不要手动输入 if otherwise for 等操作符,有编程习惯的人应该都很难控制,不过Mathcad是无法识别你手动输入的if语句的,尽量采用编程工具栏插入操作符,最好单击了Add Line之后,在相应的程序行首先插入需要的语句,插入语句后再在相应的占位符(就是一个黑色小方块)输入算式、赋值、判断等,就编程而言操作上真的比不了vs,所以建议是涉及到复杂运算的简单程序用Mathcad来做,如果程序相对复杂还是用编程更便利的软件来做,毕竟Mathcad的优势在于计算上的便捷,编程功能也不过是为计算算式来服务的。
一个温度传感器,其输出电压与温度分段线性,如下图所示,然后我希望能够快速根据测得的电压算出其温度,分段线性的话我则必然需要编程来判断每一段。
上图中每一段是以温度起止来分的,而我现在的情况是已知电压,要计算温度,所以首先应该按照上面的分段参数计算每一段的起止电压,当然是用Mathcad计算,如下图所示,计算过程都没有带单位,单位在心中,哈哈,温度就是℃,而电压是以mV来算的。
输入 “Tx(Vx)” “:”,单击编程工具栏的”Add Line”,如下图所示出现两个编程行。
用鼠标单击第一行将蓝色直角切到第一行编程行,单击编程工具栏的”if”,插入if操作符,再将蓝色直角切到第二行,单击编程工具栏的”otherwise”,插入otherwise操作符。
上图中每一个黑色小方块都是一个编辑域,需要输入相应的表达式,if操作符右侧应输入条件判断语句,if左侧应输入相应的赋值操作语句,otherwise即表示不满足与其匹配的if条件,执行otherwise行的操作,其左侧应输入相应的赋值操作语句,根据需求应输入相关表达式为:
Otherwise操作符没有输入表达式是因为本例中共有七段,即otherwise的表达式内还需要嵌入多重if语句,将蓝色直角切到otherwise左侧,单击编程工具栏的”Add Line”。
然后与之前一样操作就可以了,otherwise下的两个程序行分别输入if操作符和otherwise操作符,输入相应的表达式,otherwise操作符左侧的表达式则单击”Add Line”。
后面都是类似,就不一步一步讲了,最后一步的otherwise左侧 输入表达式而不是增加新行,如下图所示。
后来借着论坛活动,试用正版Mathcad Prime 3.0,发现这个版本竟然取消了次要坐标轴的功能,幅频曲线和相频曲线无法在一幅x-y绘图中显示,以为是功能太过隐藏,于是发邮件咨询这个问题,结果邮件回复Mathcad Prime 3.0竟然没考虑这个功能,将会在Mathcad Prime 4.0的版本中加入这个功能。前几天下载了最新版本Mathcad Prime 6.0试用版,看帮助文件确实是有这个功能了,可惜试用版不支持使用,也是心累。