怎样编写C语言程序对曲柄滑块机构进行运动及动力分析?

怎样编写C语言程序对曲柄滑块机构进行运动及动力分析?,第1张

#define PI 3.1415926

#define Num 36

#define Num1 Num+1

#include<stdio.h>

#include <math.h>

#include<graphics.h>

void main()

{

int i

int gdriver=DETECT,gmode

float L1,L2,E,w1

double e1[Num1],e2[Num1],w2[Num1],d2[Num1],sc[Num1],vc[Num1],ac[Num1]

double g1,g2

double x1,x2,y1,y2

printf("\n Please input your data L1,L2,E,w1:\n")

scanf("%f,%f,%f,%f",&L1,&L2,&E,&w1)

printf("===========================================================\n")

printf(" e1 e2 w2 d2 sc vcac\n")

printf(" (DEG)(DEG) (rad/s) (rad/s2) (m) (m/s)(m/s2)\n")

for(i=0i<=Numi++)

{

e1[i]=360.0/Num*i

g1=PI/180.0*e1[i]

g2=asin((E-L1*sin(g1))/L2)

e2[i]=180.0/PI*g2

sc[i]=L1*cos(g1)+L2*cos(g2)

w2[i]=-w1*L1*cos(g1)/(L2*cos(g2))

vc[i]=-w1*L1*sin(g1-g2)/cos(g2) d2[i]=(w1*w1*L1*sin(g1)+w2[i]*w2[i]*L2*sin(g2))/(L2*cos(g2))

ac[i]=(-w1*w1*L1*cos(g1-g2)-w2[i]*w2[i]*L2)/cos(g2)

getchar()

printf("%6.1f%9.3f%9.3f%9.3f%9.3f%9.3f%11.3f", e1[i],e2[i],w2[i],d2[i],sc[i],vc[i],ac[i])

}

printf("\n")

printf("Welcome to computer world!")

initgraph(&gdriver,&gmode,"c\\Turboc2")

cleardevice()

line(140,100,550,100)

line(140,240,550,240)

line(140,380,550,380)

line(140,40,140,440)

line(500,40,500,440)

x1=e1[0] y1=0.7*(sc[0]-300)

for(i=0i<=Numi++)

{ x2=e1[i] y2=0.7*(sc[i]-300)

line(140+x1,100-y1,140+x2,100-y2)

x1=x2 y1=y2 }

x1=e1[0]y1=vc[0]

for(i=0i<=Numi++)

{ x2=e1[i] y2=vc[i]

line(140+x1,240-y1,140+x2,240-y2)

x1=x2y1=y2 }

x1=e1[0]y1=0.5*ac[0]

for(i=0i<=Numi++)

{ x2=e1[i]y2=0.5*ac[i]

line(140+x1,380-y1,140+x2,380-y2)

x1=x2 y1=y2}

getchar()

closegraph()

}

%Matlab仿真程序如下:

r1=36 %单位mm

r2=140

omiga1=60%单位d/sec

x11=1:720

for i=1:720

x1(i)=i*pi/180

%sin(x2(i))=-r1/r2*sin(x1(i))

x2(i)=asin(-r1/r2*sin(x1(i)))

x22(i)=x2(i)*180/pi

r3(i)=r1*cos(x1(i))+r2*cos(x2(i))

B=[-r1*omiga1*sin(x1(i))

r1*omiga1*cos(x1(i))]

A=[r2*sin(x2(i)) 1-r2*cos(x2(i)) 0] X=inv(A)*B

omiga2(i)=X(1,1)

v3(i)=X(2,1)

end

plot(x11/60,0.5*r1*sin(x1))

xlabel('时间 t/sec')

ylabel('连杆质心在Y轴上位置/mm')

figure(2)

plot(x11/60,r3)

xlabel('时间 t/sec')

ylabel('滑块位移r3/mm')

figure(3)

plot(x11/60,omiga2)

xlabel('时间 t/sec')

ylabel('连杆角速度omiga2/rad/sec')

figure(4)

plot(x11/60,v3*pi/180)

xlabel('时间 t/sec')

ylabel('滑块速度v3/mm/sec')

如图添加1个Timer控件Timer1 ;1个HScrollBar控件HScroll1 ;1个VScrollBar控件VScroll1

然后复制下列代码到代码框

Private Sub Form_Load()

Timer1.Interval = 100

Timer1.Enabled = True

End Sub

Private Sub Timer1_Timer()

HScroll1.Max = VScroll1.Max

HScroll1.Min = VScroll1.Min

HScroll1.Value = VScroll1.Max - VScroll1.Value

End Sub


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11391219.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存