level 1
朱老剑客,很是仰慕。我有个德国人工程项目mathcad的建模,有些地方看的不是很明白,我可以通过QQ发给您么
2014年08月28日 09点08分
1
level 12
截图到论坛里来,然后上传源文件。大家都看看,我觉得应该不是很保密的东西吧。
2014年08月28日 09点08分
2
level 1
我想问下,图中有五次多项式的部分,如果系数是未知变量,就不能直接算出数值来,我如何用一个函数表达式来表达这512个点?
2014年08月28日 09点08分
8
level 1
可能问题的本质上,这是个分段函数,如果有些条件是可变的,从我做模型的角度,不可能每次都到mathcad里修改这些参数,然后再去生成512点,我希望能够得到一个函数表达式
2014年08月28日 09点08分
9
level 1
可能表达叙述的有些模糊呵呵,刚接触mathcad不久,也买了老先生的书
2014年08月28日 09点08分
10
level 12
没闹明白,你还得说的详细些,我就没找到5次多项式,也没看到啥未知变量,也不明白你说的512个点是啥。多说点儿,说得越多,对MC吧的各位朋友帮助越大哈!
2014年08月28日 09点08分
11
level 12
嗯,注意,还要上传源文件。随便找个网盘,在这里给出链接。
最好在截图里把你关心的用什么笔画出来。
2014年08月28日 09点08分
12
level 1
随便说说吧,建模都来自于各行业,每个行业都有各自的背景。这个mathcad的程序不完全是我的思路,只是借鉴下,有些相似。我们行业做高端装备,里面涉及到伺服电机的运动控制。这些电机运动轨迹是些曲线,比较典型的是五次多项式曲线,也是从机械凸轮演化而来的。 运动控制曲线有位置曲线是五次的,速度曲线是4次的,加速曲线是3次的,jerk曲线也就是加加速度是二次曲线。 一些伺服电机的工艺曲线,一般不是单纯的一个函数,而是分段函数。随着设备作不同的产品,位置五次曲线的变量的系数会变化,一个完整的曲线一个周期我们一般采集512个点,我想可否将位置曲线的五次多项式用一种逼近式的公式取代,如欧拉公式,拉格朗日之类的公式,这样不同产品参数不同,而我的512个点是个分段函数组,就不需要换不同规格都要到mathcad里计算,因为这样机器也是不允许的,程序下载进去不可能换生产规格要重新下载程序。
我曾经看到一个美国人的程序,他就将五次多项式进行了拆分,变为另外一种函数类型表达,但具体我不知道用的是什么逼近函数
2014年08月28日 09点08分
13
在函数家族中,多项式函数算是性质很好的一类简单函数了——它连续,可导,可积......计算函数值也比较简单。
2014年08月28日 14点08分
level 1
我可能刚研究mathcad不久,尽管几年前就下载了软件,但一直断断续续,没有认真研究,以后还请大家多多指点
2014年08月28日 09点08分
14
level 12
我明白你的意思了,去年的这个时候我也在搞伺服,还折腾了一段时间的PLC,不过我这边儿钱少,用的是松下的伺服,西门子的伺服我也接触过,但我是最终用户,不是伺服的研发人员。
可能是因为我买的PLC比较低端吧,复杂的数学计算在PLC里根本实现不了,并且所有编程都要用汇编,程序稍微复杂一下就得穷折腾好久。
我不清楚用另外一个函数替代一个多项式函数会有什么好处,就像LNS说的,如果你的伺服支持矩阵运算的话,多项式可能是最方便的选择了。是不是你的伺服运动控制器(是不是PLC?)可以更好的支持一些特定的函数?就像西门子的PLC支持梯形图控制那样。这个你也没说清楚。如果真如我所说,你的控制器对某些函数支持效果更好,甚至比对多项式函数支持的更好,你应该告诉我函数的种类。
拆多项式,要不就是级数展开,对于PLC来说好像就是用电流脉冲频率来代替脉冲数来控制电机吧?要不就是傅里叶变换,用脉冲幅度来代替脉冲数。也不知道你要的是哪种。但有一点是肯定的,如果你要做到对电机的精确控制,无论是逼近,还是展开或变换,都肯定带来控制误差的。
嗯,如果你想用一台控制器控制不同型号的伺服电机,最简单的办法是将你说的那个512点的控制数据直接存储进控制器里,我去年就是用的这个方法,最保险也最可靠。PTC公司在好几年前出过Mathcad程控指南(好像是跟着MC12一块儿出版的一个小册子),也即将Mathcad程序改编为C或者C++,或者更底层的语言,然后也是推荐使用这种方法,只要你的PLC内存足够大,这个方法可以说是最简单实用的。
PTC也提到了其他的方法,比如说你这里提到的函数控制,还有将位置曲线离散为复数函数的,但都存在一个致命的弱点——电机的响应速度存在噪音——当然这个噪音在某些控制需求中是可以忽略的。
不知道你的伺服准备使用什么控制模式,我去年在我的松下伺服上实验用了一个sin()函数的泰勒展开进行位置控制,效果不是很好,尤其是在低频的时候,伺服不响应。
512点的矩阵并不大,比如说你有50种产品共用1台PLC,每个数据占8字节内存空间,那么你所需要的内存是512×50×8=204.8k字节,如果在机上50个分支选择切换(假设一个切换占20字节),也就是205.8k字节,一般内存容量的PLC就可以做的很不错了。
当然如果用函数控制可以更节省内存,因为控制所需的矩阵变小了,这是函数控制的优势,但响应速度并不见得会加快,反而因为程序结构复杂了,容错性可能也会变差。
这是我的看法,你到底想做啥我还是没闹明白。你还是得仔细说说你的方案,而且你也没上传工作表呢。
2014年08月28日 14点08分
15
level 1
呵呵朱老剑客是同行阿,我在德国倍福工作,我们的产品是ethercat总线,现在第三方伺服包括松下,三洋,omron都有ethercat伺服了,你可以用我们的上位控制它们,轴少的话控制器很便宜
2014年08月28日 15点08分
16
level 1
我的意思其实简单点说吧。举个更简单的例子。例如一个点到点的定位,虚拟主轴是时间轴,你也可以看成是一个固定的时间例如500ms。要在500ms内用五次曲线(其中也有四次曲线项)走一个点到点位置,走一个启停。如果电机走10圈是一个函数关系,走20圈五次曲线函数结构不变,但方程系数会变化。那么我们将10圈和20圈也放到这个五次曲线里,就等于增加了一些变量,我以前曾经研究过有些老外的资料,他们程序里已经不是五次曲线了甚至是一次曲线但未知系数比较多
2014年08月28日 15点08分
17
level 1
另外高速总线的伺服其实用的方法根据扫描周期发位置下去,伺服也不是脉冲了,例如1ms发多少位置下去。朱老剑客在上海么?
2014年08月28日 15点08分
19
level 12
如果按照你描述的,是可以试试将高次函数降幂,因为有时间t作变量,随时间可变的系数都可以对t求导,但这个跟MC没啥关系了吧,这是自己在算草纸上划拉的事儿了。嗯,或者MC的符号计算功能或许能帮上些微的忙?也说不定会添乱呢。
好像有一个视频介绍Maple的一个什么函数就是干这个用的。记不清了。
不过从你给的截图上看,看不出方程系数会有什么变化呀。有些专业上的裁度只能你们单位自己考虑了——如果我发现了随着转数的提高,方程系数会变,我觉得我不会考虑让控制器去改变系数,而是考虑如何让它不变,或者说通过什么手段抑制它的变化。
我在北京。
2014年08月28日 16点08分
20