منو
 کاربر Online
747 کاربر online
تاریخچه ی: Source برنامه کنترل موتور پله ای

نگارش: 8

در این برنامه از دو پورت سریال (COM) استفاده شده است شما می توانید هر دو برنامه را با هم اجرا کنید یا هر کدام را به صورت مجزا دقت داشته باشید
در صورتیکه شما برنامه مربوط به پورت سریال 1 را اجرا کنید.والمان دیگری مثل موس (Mouse) در این پورت باشد با پیغامی تحت عنوان پورت در دسترس نیست مواجه می شوید .این امر در مورد پورت 2 نیز صادق است.دقت داشته باشید این برنامه در ویندوز های با FAT32 اجرا می شود.
حال نحوه کد نویسی برنامه را با هم بررسی میکنیم

به سراغ Private Form Load میرویم .پارامترهای داخل این عبارت
اشاره به مسایلی میکند که در هنگام اجرای اولیه برنامه Load می شوند. با یک دستور شرطی If اگر پورت سریال در اتصال به چیز دیگری مثل موس باشد با ارسال پیغام COM unavailabld کاربر را از این قضیه مطلع می سازد. در این قسمت همچنین دو عبارت DTR,RTS را مشاهده می کنید .اینها بیتهای ارسال RS232 هستند که در هنگام Load برنامه هر دو مقدار یک را دارند. اگر در هنگام Load برنامه تغذیه آیسی و موتور پله ای وصل باشد متوجه حرکت کوچکی در موتور پله ای می شوید.که این به خاطر مقدار دهی DTR,RTS در هنگام Load برنامه است .
در قسمت Private Command1_Clickدو متغییر i,U با مقادیر وارد شده توسط کاربر مقداردهی می شو ند. یکی مربوط به تعداد پله ودیگری مربوط به شمارش پله موتور پله ای
پس از اجرا متوجه می شوید text مربوط به تعداد پله غیر فعال است .با کلیک بر روی Check Box بالای تعداد پله این text فعال می شود وشما مثلا در آن عدد 1000 را وارد کنید وسپس کلید شروع را بزنید. شمارش پله بعد از هر 30میلی ثانیه (30 میلی ثانیه در واقع فاصله بین هر پالس است.این عبارت در ُسابروتین Output قرار دارد وشما می توانید فاصله پالسها وسرعت موتور پله ای را با تغییر این پارامتر مطابق میل خودتان تنظیم کنید) یکی یکی اضافه می شود تا به مقدار 1000 که مقدار تعیین شده درtext تعدادپله توسط شما است برسد .در این پروژه تعداد دورهای موتور پله ای نیز در صورت تمایل شما با فعال کردن Check Box سمت راست بالی صفحه هم به صورت نهایی و هم به صورت لحظه به لحظه نشان داده میشود.پس از توضیح خلاصه از نحوه عملکرد برنامه سراغ کلید شروع می رویم .در انتهای سابروتین مربوط به Command1
به Output
در دستور While گفته شده تا زمانیکه مقدار تعداد پله با شمارش پله یکی نشده در حلقه While بمان و آنقدر مقدار شمارش پله را کم وزیاد بکن تا به مفدار تعدادپله برسد..فا صله زمانی بین هر دو پالس نیز در دستور While TimeREAD دارد .دراین کد برنامه هر بار که مقدار تعداد پله با شمارش آن متفاوت باشد
به آن مقدار یک را اضافه می کند.سپس باقیمانده تقسیم صحیح شمارش پله بر عدد 4 را در متغییر Phase می ریزد. و بر حسب اینکه این حاصل تقسیم 0و1و2و3 باشد به سابروتینهایPhase 1,Phase 2,Phase3 Phase 4 میرود.ودر اینجا بیتهای DTR,RTS را یک و صفر می کند.البته این نحوه 0و1 کردن سیمها بر مبنای تحریک دوبیتی سیم پیچهای موتور پله ای است .که می بایست در هر لحضه دو سیم پیچ به توالی 1و0 شوند بقیه کد های برنامه بسیار ساده است .وتنها جهت آموزشی شدن برنامه ارایه شده است مثل برنامه نویسی محاسبه تعداد دور یا حرکت عکس موتور پله ای
جهت اجرا شدن این برنام در کامپوتر کدهای DLL زیر را در folder سیستم ویندوز کپی کنید.


  1:  
  2:  ()Private Sub Check1_Click
  3:   If Check1.Value = 1 Then
  4:      Text3.Enabled = True
  5:   Else
  6:      Text3.Enabled = False
  7:   End If
  8:  End Sub
  9:  
 10:  ()Private Sub Check2_Click
 11:   If Check2.Value = 1 Then
 12:       Label15.Caption = Left((Text1.Text * Text3.Text) / 360, 6)
 13:   Else
 14:      Label15.Caption = "ÊÚÏÇÏ ÏæÑ"
 15:   End If
 16:  End Sub
 17:  
 18:  ()Private Sub Command1_Click 
 19:   i = Val(Text3.Text)
 20:   U = Val(Text6.Text)
 21:   If Check2.Value = 1 Then Label15.Caption = Left((Text1.Text * Text3.Text) / 360, 6)
 22:   OPENCOM ("COM1:9600,N,8,1")
 23:   If i = U Then MsgBox "جهت حرکت موتور پله ای مقدار پله را متفاوت با شمارش پله وارد کنید", vbInformation
 24:   Text7 = Text1
 25:   Output
 26:  End Sub
 27:  
 28:  ()Private Sub Command1_Click 
 29:   If Command1.Caption = "ãÚßæÓ" Then
 30:      Command1.Caption = "ãÓÊÞíã"
 31:      Z = Text3.Text
 32:      Text3.Text = Text6.Text
 33:      Text6.Text = Z
 34:      Call Command1_Click
 35:   Else
 36:      
 37:      Z = Text6.Text
 38:      Text6.Text = Text3.Text
 39:      Text3.Text = Z
 40:      Call Command1_Click
 41:  End If
 42:  End Sub
 43:  ()Private Sub Command3_Click 
 44:  
 45:   CLOSECOM
 46:  End Sub
 47:  
 48:  ()Private Sub Form_Load
 49:   i = 0: U = 0
 50:   DTR 1
 51:   RTS 1
 52:  End Sub
 53:  Sub Output()
 54:   While i <> U
 55:     ( If Check2.Value = 1 Then Label16.Caption = Left((Text6.Text * Text7.Text) / 360
 56:      If Check1.Value = 1 Then Check1.Enabled = True
 57:      If i > U Then U = U + 1
 58:      If i < U Then U = U - 1
 59:      Text6.Text = Str$(U)
 60:      Phase = U Mod 4
 61:      If Phase < 0 Then Phase = Phase + 4
 62:      If Phase = 0 Then Phase1
 63:      If Phase = 1 Then Phase2
 64:      If Phase = 2 Then Phase3
 65:      If Phase = 3 Then Phase4
 66:      TIMEINIT
 67:      While TIMEREAD < 30
 68:       DoEvents
 69:      Wend
 70:    Wend
 71:  End Sub
 72:  ()Sub Phase1
 73:   DTR 1
 74:   RTS 1
 75:  "Text4.Text = "1 
 76:  "Text5.Text = "1  
 77:   End Sub
 78:  ()Sub Phase2
 79:   DTR 1
 80:   RTS 0
 81:  "Text4.Text = "1
 82:  "Text5.Text = "0
 83:   End Sub
 84:  ()Sub Phase3
 85:   DTR 0
 86:   RTS 0
 87:  "Text4.Text = "0
 88:  "Text5.Text = "0
 89:  End Sub
 90:  ()Sub Phase4
 91:   DTR 0
 92:   RTS 1
 93:  "Text4.Text = "0
 94:  "Text5.Text = "1
 95:  End Sub
 96:  
 97:  (Private Sub Form_Unload(Cancel As Integer
 98:   CLOSECOM
 99:  End Sub 
100:


(Private Sub Form_Unload(Cancel As Integer


تاریخ شماره نسخه کاربر توضیح اقدام
 سه شنبه 04 بهمن 1384 [08:58 ]   23   جواد حمزه      جاری 
 چهارشنبه 31 فروردین 1384 [10:32 ]   22   جواد حمزه      v  c  d  s 
 سه شنبه 30 فروردین 1384 [06:02 ]   21   جواد حمزه      v  c  d  s 
 سه شنبه 30 فروردین 1384 [05:56 ]   20   جواد حمزه      v  c  d  s 
 سه شنبه 30 فروردین 1384 [05:41 ]   19   جواد حمزه      v  c  d  s 
 سه شنبه 30 فروردین 1384 [04:47 ]   18   جواد حمزه      v  c  d  s 
 سه شنبه 30 فروردین 1384 [04:35 ]   17   جواد حمزه      v  c  d  s 
 دوشنبه 29 فروردین 1384 [13:19 ]   16   جواد حمزه      v  c  d  s 
 دوشنبه 29 فروردین 1384 [13:16 ]   15   جواد حمزه      v  c  d  s 
 دوشنبه 29 فروردین 1384 [13:00 ]   14   جواد حمزه      v  c  d  s 
 دوشنبه 29 فروردین 1384 [12:49 ]   13   جواد حمزه      v  c  d  s 
 دوشنبه 29 فروردین 1384 [12:11 ]   12   جواد حمزه      v  c  d  s 
 دوشنبه 29 فروردین 1384 [11:38 ]   11   جواد حمزه      v  c  d  s 
 دوشنبه 29 فروردین 1384 [10:58 ]   10   جواد حمزه      v  c  d  s 
 دوشنبه 29 فروردین 1384 [10:43 ]   9   جواد حمزه      v  c  d  s 
 دوشنبه 29 فروردین 1384 [10:32 ]   8   بابک خسروشاهی      v  c  d  s 
 دوشنبه 29 فروردین 1384 [10:24 ]   7   جواد حمزه      v  c  d  s 
 دوشنبه 29 فروردین 1384 [08:17 ]   6   جواد حمزه      v  c  d  s 
 دوشنبه 29 فروردین 1384 [05:50 ]   5   بابک خسروشاهی      v  c  d  s 
 دوشنبه 29 فروردین 1384 [05:36 ]   4   بابک خسروشاهی      v  c  d  s 
 دوشنبه 29 فروردین 1384 [05:16 ]   3   جواد حمزه      v  c  d  s 
 یکشنبه 28 فروردین 1384 [20:28 ]   2   جواد حمزه      v  c  d  s 
 یکشنبه 28 فروردین 1384 [20:28 ]   1   جواد حمزه      v  c  d  s 


ارسال توضیح جدید
الزامی
big grin confused جالب cry eek evil فریاد اخم خبر lol عصبانی mr green خنثی سوال razz redface rolleyes غمگین smile surprised twisted چشمک arrow



از پیوند [http://www.foo.com] یا [http://www.foo.com|شرح] برای پیوندها.
برچسب های HTML در داخل توضیحات مجاز نیستند و تمام نوشته ها ی بین علامت های > و < حذف خواهند شد..