找回密码
 注册会员
查看: 6642|回复: 30

[讨论] 一个逐点张力计算法的例子

 火   [复制链接]
发表于 2009-7-29 17:18:22 |Error| 显示全部楼层 |阅读模式

我们不再是孤独的探索者;让我们的手紧紧相连,一起成长。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
这是一个逐点张力计算法计算法的例子,是在前人的模版基础上稍作修改而来的。

主要的计算公式和方法参考了《运输机械设计选用手册》,以及一篇题目为《煤矿用带式输送机设计计算与应用》的论文。

这个Excel表格与前人的模版最大的区别在于对逐点张力计算法的求解。前人的方法是在单元格内直接填写推导出的公式,而我采用的方法是使用VBA+规划求解自动求解,只需点击一个按钮即可完成。虽然在本例中这种方法似乎看不出什么优势,但是在更为复杂的张力计算时,这种方法的优点就比较突出了,原因在于规划求解可以根据需要添加约束条件,使得计算的结果能够完全满足所有的设计要求(当然是在有解的前提下)。不过,如果要达到让使用者易于操作的目的,就需要开发者花费更多的精力在VBA的编写上,不过我想这是值得的。

这个Excel文档在2003环境下写成,打开时请启用宏,否则无法单击按钮进行计算。

这个文档的VBA代码很简单,没有加密,有兴趣的朋友可以看看如何用VBA实现简单的规划求解计算(其实我本人也只会这简单的……)。关于规划求解的函数使用方法,请参考MSDN的页面。

当然我也要声明我不对这个计算书的正确性做任何形式的保证,使用本计算书的数据进行设计而产生的任何无论好的还是坏的后果,都由使用人自己承担。

如果哪位想下载这个计算书而又没有”流量“,可以写信到jiachizhang@hotmail.com,我会尽量回复的。

最后,我也是一个初学者,大家如果有什么意见或建议,希望不吝赐教~!
=======================================================================
自己看了一下这个模版,发现有点严重的问题,就是初算时会求出负值,原因就是P,由于多了一个P导致所列方程数比未知数少了一个,因为解不再唯一。现在把S1和S7的关系按欧拉公式写出,使得能够求出唯一解了。

不过这样有个问题需要注意,如果所设包角在初算时就能满足垂度条件,那么就意味着所设的包角恰好满足不打滑条件,我认为考虑到计算不是十分精确,此时用户应该在张力不变的条件下(就是说直接使用计算得到的张力,而不必为新设的包角重新计算),在最后确定输送机布置形式时适当增加一下包角,以保证安全(不知道这么说对不对……?)。

这个P是在计算等功率双驱动时使用的,以为在这里也能用,现在看来是不能够的。

另外,进行规划求解计算时需要先清空“可变单元格”(除非有特殊要求),也就是上次的计算结果,否则得到的答案可能受之前的结果的影响。在这个新的样本中,增加了计算前自动清空的功能,每次点击后得到的结果都是完全重新计算的。

附上了新的“样本”,之前的就不要再下载了。

[ 本帖最后由 domore 于 2009-7-30 11:08 编辑 ]

样本.zip

20.63 KB, 下载次数: 366

煤矿用带式输送机设计计算与应用.zip

365.99 KB, 下载次数: 341

样本090730.zip

21.28 KB, 下载次数: 276

发表于 2009-7-29 21:18:53 |Error| 显示全部楼层
你好能发个到我邮箱里面吗?地址power12345abcd@yahoo.com.cn
回复 顶 踩

使用道具 举报

发表于 2009-7-29 21:54:46 |Error| 显示全部楼层
还行
回复 顶 踩

使用道具 举报

发表于 2009-7-30 15:12:39 |Error| 显示全部楼层
谢谢楼主的资料!!
回复 顶 踩

使用道具 举报

发表于 2009-7-30 18:14:45 |Error| 显示全部楼层
不错,谢楼主分享
回复 顶 踩

使用道具 举报

发表于 2009-8-2 22:30:31 |Error| 显示全部楼层
找不到工程或库

Private Sub CommandButton1_Click()
[B46] = ""
[B47] = ""
[B48] = ""
[B49] = ""
[D46] = ""
[D47] = ""
[D48] = ""

solverok "B40", 3, 0, "B46:B49,D4648"
solveradd "B41", 2, 0
solveradd "B42", 2, 0
solveradd "B43", 2, 0
solveradd "D41", 2, 0
solveradd "D42", 2, 0
solveradd "D43", 2, 0
solversolve True
SolverReset
End Sub

不止这么多吧
回复 顶 踩

使用道具 举报

发表于 2009-8-3 09:15:16 |Error| 显示全部楼层
谢谢楼主分享,下来看看!
回复 顶 踩

使用道具 举报

发表于 2009-8-3 09:22:12 |Error| 显示全部楼层
谢谢 楼主 能用吧 或者学习看看啊 别像楼上说的有问题 啊 嘿嘿
回复 顶 踩

使用道具 举报

发表于 2009-8-3 09:58:14 |Error| 显示全部楼层
下了一个。。。看不懂
回复 顶 踩

使用道具 举报

 楼主| 发表于 2009-8-4 08:14:44 |Error| 显示全部楼层

回复 6楼 nihaogemen 的帖子

找不到工程或库,可能是你的Office没有安装规划求解造成的。你可以打开VB编辑器,然后单击工具->引用,看看里面有没有SOLVER这个东西,如果有请勾选上;如果没有,请重新安装Excel,并在安装选项中选择安装规划求解,这个工具挺有用的。

代码的确就是这么多,真正的计算工作由规划求解做了,这些代码只是提供给它一些约束条件而已,而规划求解的函数库人家是加密的,我们看不到其代码。

这个东西在安装了规划求解的Excel中应该能用。

如果是看不懂代码的话,我建议大家去查看我在一楼帖子中的MSDN链接,其中有关于规划求解的函数使用;如果不懂逐点张力计算法,我说个人看法就是列出每段上的阻力,然后把各个滚筒趋入点和奔离点的张力的关系逐个列出来,就像Excel表格中那样,最后带入已知条件进行计算就可以了吧。
回复 顶 踩

使用道具 举报

发表于 2009-8-4 08:38:30 |Error| 显示全部楼层
下了 很不错的东西 值得学习
回复 顶 踩

使用道具 举报

发表于 2009-8-4 08:42:21 |Error| 显示全部楼层
本人计算用PDJCAD  呵呵
回复 顶 踩

使用道具 举报

 楼主| 发表于 2009-8-4 12:33:09 |Error| 显示全部楼层

回复 12楼 呆无月 的帖子

呵呵,其实发这个只算是介绍一种方法吧,个人觉得可能使用规划求解+VBA的方法比较灵活且够强大,也不太复杂。
回复 顶 踩

使用道具 举报

发表于 2009-8-8 02:38:23 |Error| 显示全部楼层
原帖由 domore 于 2009-8-4 08:14 发表
找不到工程或库,可能是你的Office没有安装规划求解造成的。你可以打开VB编辑器,然后单击工具->引用,看看里面有没有SOLVER这个东西,如果有请勾选上;如果没有,请重新安装Excel,并在安装选项中选择安装规划求解, ...


感谢楼主的详细说明
我再试试

其实我最想感谢的是楼主的方法,能用好的函数就不必自己编程,从底层做起了。
回复 顶 踩

使用道具 举报

发表于 2009-8-8 02:45:48 |Error| 显示全部楼层
您能搞个截屏 顺便将dll文件发上来吗? 谢谢
回复 顶 踩

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

小黑屋|手机版|Cncad.Net ( 苏ICP备2026083443号 )

GMT+8, 2026-11-1 22:50 , Processed in 0.258251 second(s), 30 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表