اطلاعیه

Collapse
No announcement yet.

ارتباط plc با labview

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #31
    پاسخ : ارتباط plc با labview

    سلام
    از بابت پاسخ های کاملتون ممنون
    خوشحالم بعد از کلی صغری و کبری کردن رسیدیم سر اصل مطلب :

    1-ACK و NAK یعنی چی؟چرا باید استفاده کرد؟اصلاً باید استفاده کرد؟(من با PLCآ‌سری Delta کار می کنم و این موضوع توش نیست؟؟)

    2-من برای PLC دیتاهای زیادی توی زمانهای مختلف می فرستم چون می خوام بعضی از پارامترها رو توی جدول نمایش و ذخیره کنم.چه جوری باید توی LabView این کار رو کرد ؟منظورم اینه که من باید چند تا M رو بخونم یعنی اولاً دیتای برگشتی برای هر کدوم فرق داره ثانیاً اگه دیتا کامل بیاد یا ناقص چه جور باید این دو رو تمیز کرد؟

    3-من یه نمونه فایل VI برای LabView پیدا کردم که ابتداش کد ENQ رو نوشت.همونطور که گفتید این کد رو نمیشه توی برنامه های دیگه مثل Notepad نمایش داد .اما این کد توی برنامه LabView بود و من هم کپی پیست کردم.

    4-چرا توی فایلPDFآ‌ مربوط به PLC GM7U برای ارسال و دریافت به دو روش استفاده می کنه ؟ هم به صورت فرمولی که گفتید و هم به صورت کد اسکی؟

    5- توی روشی که گفتید نیازی به فرستادن BCC و ... هست یا نه؟؟؟توی مثالی که گفته فقط از عباراتی که گفته استفاده شده

    6-توی برنامه Labview آیا باید از یه حلقه استفاده کرد؟برای اینکه مثلاً هر 3 میلی ثانیه نمونه گیری کنه؟

    7-زمانی که یه Request به PLC آرسال میشه ، یه دیتای هم بر می گرده.درست.چه جور باید این دیتاها رو جداسازی کرد؟؟(مثلاً دیتای مربوط به سرعت و دما و فشار و....)

    با تشکر فراوان

    دیدگاه


      #32
      پاسخ : ارتباط plc با labview

      http://www.4shared.com/document/08n6w6BE/7_online.html
      http://www.4shared.com/document/GRs1rSk9/1_online.html
      http://www.4shared.com/document/xGwhknFl/2_online.html
      http://www.4shared.com/document/kpBL2Tww/3_online.html
      http://www.4shared.com/document/l_WimN_R/5_online.html
      http://www.4shared.com/document/08n6w6BE/7_online.html
      http://www.4shared.com/document/AqSWVHPu/8_online.html
      http://www.4shared.com/document/ckgAl4J7/4_online.html
      http://www.4shared.com/document/G8SL3XMw/6_online.html
      http://www.4shared.com/document/Id4sLecc/9_online.html
      http://www.4shared.com/document/qzabPQnJ/10_online.html
      http://www.4shared.com/document/W0_iEMFG/11_online.html
      http://www.4shared.com/document/_-AflTUl/12_online.html
      جانم به فدای ائمه اطهار
      می دونستم تحمل مرگ اعضای خانواده خیلی سخته ولی نه تا این حد،ایکاش پدرم بیشتر می موند.روحش شاد.

      دیدگاه


        #33
        پاسخ : ارتباط plc با labview

        سلام این لینکهایی که بالا گذاشتم رو دانلود کنید بدرد میخوره
        در بایره PLCهای GLOFA-GM7هست.امیدوارم خوشتون بیاد
        جانم به فدای ائمه اطهار
        می دونستم تحمل مرگ اعضای خانواده خیلی سخته ولی نه تا این حد،ایکاش پدرم بیشتر می موند.روحش شاد.

        دیدگاه


          #34
          پاسخ : ارتباط plc با labview

          نوشته اصلی توسط ahmadpashaei
          سلام این لینکهایی که بالا گذاشتم رو دانلود کنید بدرد میخوره
          در بایره PLCهای GLOFA-GM7هست.امیدوارم خوشتون بیاد
          آقای پاشایی مطالبتون فوق العاده بود ممنونم :applause: :wow:

          دیدگاه


            #35
            پاسخ : ارتباط plc با labview

            نوشته اصلی توسط آیدین247
            آقای پاشایی مطالبتون فوق العاده بود ممنونم :applause: :wow:
            خواهش میکنم ولی استقبالی نشد فقط شما :angry:
            جانم به فدای ائمه اطهار
            می دونستم تحمل مرگ اعضای خانواده خیلی سخته ولی نه تا این حد،ایکاش پدرم بیشتر می موند.روحش شاد.

            دیدگاه


              #36
              پاسخ : ارتباط plc با labview

              نوشته اصلی توسط ahmadpashaei
              خواهش میکنم ولی استقبالی نشد فقط شما :angry:
              دوست عزیز از تلاشتون متشکرم
              اما باید بگم که در دیتاشیت های ارائه شره توسط خوذ LS مطالب جامع تر و کاملتر و با کیفیت گرافیکی بهتری ارائه شده است

              دیدگاه


                #37
                پاسخ : ارتباط plc با labview

                با سلام خدمت دوستان
                جناب Majid.ebru ظاهرا چند تا مشکل اساسی تو فهم این مسائل دارید.
                ابتدا سعی میآ‌کنم نقاط مجهول رو براتون معلوم کنم.
                1) ACK و NAK یعنی چی؟چرا باید استفاده کرد؟اصلاً باید استفاده کرد؟

                ببین دوست عزیز ، ما برای دریافت اطلاعات یا OverWrite کردن اطلاعات جدید در حافظه PLC یک دستور با فریم مشخص برای PLC میفرستیم. این همون درخواست یا Request هستش.
                حالا این PLC هست که به درخواست ما پاسخ میآ‌ده و میگه این درخواست مورد قبول بوده یا نه.
                اگه مورد قبول باشه طی یک فریم خاص (Response ACK) مقدار درخواستی رو بر میآ‌گردونه
                اگه مورد قبول نباشه طی یک فریم دیگر (Response NAK) میگه موفق نشده و یک کد خطا ارسال میآ‌کنه که از روی این کد میتونیم بفهمیم کجا اشتباه کردیم.(مثلا بازه آدرس اشتباه بوده یا نوع فریم غلطه یا BCC اشتباهه یا ....)
                پس این PLC هست که ACK یا NAK رو میفرسته نه ما.
                که اگه ACK باشه همون اطلاعاتی رو داره که ما میخواهیم.

                2) چرا توی فایلPDF مربوط به PLC GM7U برای ارسال و دریافت به دو روش استفاده می کنه ؟ هم به صورت فرمولی که گفتید و هم به صورت کد اسکی؟

                اصلا هیچ دو روشی موجود نیست. تنها یک روش هست.
                اگر در PDFها جایی گفته شده Header(ENQ) یا Tail(EOT) یا Command یا ... منظور این نیست که باید عین این عبارات را گذاشت.
                فی المثل منظور از ENQ این است که هر زمان نیاز به شروع دستور جدید داشتید باید با ENQ شروع کنید.(شما موقع خوندن بگو شروع !!!) و یعنی هر موقع بهش رسیدی جایش باید مقدار معادل آن یعنی 5 Hex رو بزاری که اتفاقا با 5 دسیمال برابره.
                در مورد نوع دستور مثلا خواندن گسسته هم شما میآ‌تونید همون SS رو تو String نهایی بزاری. اما چون باید با بخشهای دیگه فریم دستور که از جنس کد اسکی هستند تلفیق کنی، عاقلانه ترین راه اینه که کد اسکی این عبارات رو هم جایگذاری کنیم و در انتها کل عبارت حاصله رو با Byte Array To String Function به String تبدیل کنید.
                کد اسکی S چنده ؟ 83 دسیمال یا 53 هگزادسیمال
                چون کار با دسیمال و انجام عمل جمع و تفریق باهاش راحت تره با دسیمال کار میآ‌کنیم.

                پس دیدید که دو روش وجود نداره.
                هر جا عبارات تعریفی وجود داره کد معادل اون رو قرار میآ‌دید. (ENQ = 5 و EOT = 4)
                هرجا عدد یا حرف وجود داره کد اسکی دسیمال معادل اون رو قرار میآ‌دید. (% = 37 و M = 77 و W = 87 و 0 = 48 و 1 = 49). %MW100

                3-من یه نمونه فایل VI برای LabView پیدا کردم که ابتداش کد ENQ رو نوشت.همونطور که گفتید این کد رو نمیشه توی برنامه های دیگه مثل Notepad نمایش داد .اما این کد توی برنامه LabView بود و من هم کپی پیست کردم.

                اگه دقت کنید میبینید که کد هایی که به عبارات تعریفی اختصاص داده شده در جداول کارکتری کد اسکی (کلید های تایپی کیبرد) دارای مقداری نیستند و با نگه داشتن Alt و زدن عدد در Notpad کارکترهایی نظیر ♣ و ♦ و ... را ملاحظه میآ‌کنید.
                امیدوارم این بخش براتون جا افتاده باشه و دیدید که همه این صغری کبری چیدن ها بیمورد نبوده و شما به همش نیاز داشتید
                3) توی برنامه Labview آیا باید از یه حلقه استفاده کرد؟برای اینکه مثلاً هر 3 میلی ثانیه نمونه گیری کنه؟

                برای اجرای یک دستور به صورت متوالی باید اون رو تو یک حلقه While قرار داد. اما هرگز از توابع تاخیری درون حلقه استفاده نکن.
                Cycle Time بدست آمده بستگی به حجم برنامه LabView داره و وقتی برنامه سنگین بشه نمیشه Access Time دستیابی و Timeout Serial Port رو از حدی کاهش داد.
                فکر نکنم بشه از حدود 300 تا 400 میلی ثانیه کمترش کرد.

                4) توی روشی که گفتید نیازی به فرستادن BCC و ... هست یا نه؟؟؟توی مثالی که گفته فقط از عباراتی که گفته استفاده شده

                فقط یه روش وجود داره.
                صد در صد نیاز به ارسال BCC هستش
                چون PLC مقدار BCC ارسالی رو با اون چیزی که خودش محاسبه میآ‌کنه و اگه اشتباه باشه NAK ارسال میآ‌کنه.

                روش محاسبش رو هم که قبلا توضیح دادم

                5) من برای PLC دیتاهای زیادی توی زمانهای مختلف می فرستم چون می خوام بعضی از پارامترها رو توی جدول نمایش و ذخیره کنم.چه جوری باید توی LabView این کار رو کرد ؟منظورم اینه که من باید چند تا M رو بخونم یعنی اولاً دیتای برگشتی برای هر کدوم فرق داره ثانیاً اگه دیتا کامل بیاد یا ناقص چه جور باید این دو رو تمیز کرد؟

                برای دریافت دو یا چند Word دیتا از آدرس های خاصی از PLC ، باید در LabView در هر صفحه یک فریم رو همونطور که در پستهای قبلی توضیح دادم و میآ‌بینید درست کنید و سپس بهم بچسبونید و تبدیل به یک رشته کنید و بدید به قسمت Write Buffer در VISA Write .
                این در حقیقت همون بخش ارسال Request است. این مثال خواندن گسسته (SS)آ‌ است.



                اگر همه سیم بندی های مربوط به VISA درست باشه (حتما به مثال Advance Serial Port Write and Read رو بخونید.) در قسمت VISA Read با قراردادن یک String Indicator میآ‌تونیم Response هایی که PLC در جواب Requestها ارسال میآ‌کنه رو ببینیم و ذخیره کنیم.
                این Response ها هم میآ‌تونه شامل ACK باشه و هم NAK



                حالا باید فریم های جواب در مقابل Individual reading (SS) رو بررسی کنیم تا بدونیم چطور اطلاعاتی که مد نظرمون هست رو از String Indicator استخراج کنیم.

                دیدگاه


                  #38
                  پاسخ : ارتباط plc با labview







                  اگه پاسخ ACK باشه فریم جواب با عبارتی آغاز میشه که کد اسکیش 6 است(عبارت تعریفی ACK). اما اگه NAK باشد کد اسکیش 15 هگزا دسیمال که همون 21 دسیمال هست آغاز میآ‌شه.
                  سپس عبارات Station Number و Command و Command Type همانند Request تکرار میشوند.
                  اگر جواب از نوع ACK باشد Variable length می آید که طول داده بعدی را مشخص میآ‌کند که خود دوبایت طول دارد. مثلا برای دوبایت داریم:
                  Variable length = 02 که ترجمه به کد اسکی هگزا دسیمال شده و داریم 30,32 که دسیمالش 48 , 50 است.

                  سپس دیتای مورد نظر ما در ادامه قراردارد که هم بصورت کد اسکی و هم بصورت String متناظر با آن قابل برداشت است.
                  در انتها ETX که معادل آن کد 3 است به معنی پایان پاسخ قرار دارد و سپس BCC قراردارد
                  این BCC را ارسال میآ‌کند.
                  این BCC جدید است و به همان روش گفته شده برای فریم Response محاسبه و ارسال شده است.
                  اگر در محیط پر نویزی هستید و طول کابل بلند است ، شما می توانید جدا گانه BCC را محاسبه و مقایسه نمایید تا از صحت و سوق داده ها مطمئن شوید.

                  اگر جواب از نوع NAK باشد تنها قسمت Error Code برای ما مهم است تا مشکل را حدث زده و رفع کنیم.



                  دیدگاه


                    #39
                    پاسخ : ارتباط plc با labview

                    ظاهرا عکس های بزرگ به خوبی قابل رویت نیستند

                    لطفا عکس ها رو ابتدا در کامپیوتر خود Save کنید تا بتوانید تمام جزئیات را ببینید

                    دیدگاه


                      #40
                      پاسخ : ارتباط plc با labview

                      حال یک مثال از اول:
                      خواهشا اگر متوجه نشدید تمام پست های قبلی رو چند بار بخونید.
                      مثال :
                      میآ‌خواهیم به روش Individual reading of direct variables (RSS) * اطلاعات موجود در حافظه MW10 رو بخونیم.(Station Number در PLC برابر 01 است).

                      داریم :
                      کد اسکی (به ترتیب از چپ به راست) :
                      5 , 48 , 49 , 114 , 83 , 83 , 48 , 49 , 48 , 53 , 37 , 77 , 87 , 49 , 48 , 4 , BCC
                      5 + 48 + 49 + 114 + 83 + 83 + 48 + 49 + 48 + 53 + 37 + 77 + 87 + 49 + 48 + 4 = 882
                      882 (Decimal) = 372 (Hexa Decimal)
                      دو بایت کم ارزش تر = 72
                      ASCII Code (7) = 55 (Decimal) and ASCII Code (2) = 50 (Decimal)
                      پس داریم :
                      5 , 48 , 49 , 114 , 83 , 83 , 48 , 49 , 48 , 53 , 37 , 77 , 87 , 49 , 48 , 4 , 55 , 50
                      اگر با گرفتن Alt در WordPad در هر مرحله اعداد بالا را وارد کنیم داریم :



                      اگر این دیتا را در یک String Indicator بعد تبدیل به رشته مشاهده کنیم داریم :





                      همانطور که ملاحظه می کنید به جای ♣ و ♦ ، ؟ یا مربع تو خالی چاپ میآ‌شود. علت هم این است که این اعداد در کد اسکی کیبرد معادل کارکتری نیستند.

                      از روش زیر هم میآ‌توان برای ارسال Request استفاده نمود :



                      اگه خودتون مقایسه کنید میبینید که درد سر این روش خیلی بیشتر از روش قبله.
                      خلاصه String آماده شده رو میدیم به این قسمت VISA :



                      جواب حاصل از پاسخ PLC در قسمت String Indicator که در اینجا نامش Reading Part A است ذخیره میآ‌شود.
                      فرض کنید مقدار MW10 برابر 24C5 باشد. عبارت حاصل اینگونه است.



                      که کد های اسکی آن معادل :
                      6 , 48 , 49 , 114 , 83 , 83 , 48 , 49 , 48 , 50 , 51 , 52 , 67 , 53 , 3 , BCC (new)
                      6 + 48 + 49 + 114 + 83 + 83 + 48 + 49 + 48 + 50 + 51 + 52 + 67 + 53 + 3 = 804 Decimal

                      805 Decimal = 325 Hexa Decimal
                      BCC = 24  50 , 52

                      حال برای جداسازی 34C5 از سایر عبارت باید چه کنیم ؟
                      راحت ترین راه به صورت زیر است :



                      همانطور که تا حالا حتما متوجه شدید عبارت SS0102 در هر Response ACK وجود دارد و دیتای مد نظر ما همواره چهار بایت بعدی بلافاصله بعد SS0102 است.
                      پس در String Indicator به وسیله بلوک Match Pattern دنبال SS0102 میگردیم و پس از یافتن after substring را جدا کرده و به وسیله String Subset چهار بایت را جدا میآ‌کنیم.
                      این همان مقدار 34C5 هگزادسیمال است که اگر آن را به دسیمال تبدیل کنیم داریم 13509.
                      حال فرض کنید این دمای تایین شده در قسمت ذوب یک کوره با دقت یک رقم اعشار باشد که ما آن را از حافظه PLC خواندیم.
                      اگر در هنگام ارسال Request چند فریم را به هم چسبانده باشیم و متوالیا ارسال کرده باشیم، در Response هایی که در String Indicator ذخیره میآ‌شود نیز متوالیا جوابها ذخیره میآ‌شود که بصورت نردبانی میآ‌توانیم اطلاعات دلخواه را استخراج کنیم. (مانند شکل بالا)
                      این مثال را در یک فایل که برای کنترل یک کوره ذوب به روش القایی نوشته بودم یافتم و در حال حاضر درحال کار است.

                      اگر سوالی در مورد خواندن به روش Individual reading of direct variables (RSS) داشتید پس از آنکه تمامی این پست ها را چندین بارخواندید بپرسید.

                      اگر در مورد نوشتن در حافظه PLC یا خواندن به هر روش دیگری نیز سوالی داشتید پس از خواندن دیتاشیت های مربوطه سوال کنید.کل کار خیلی شبیه به روش توضیح داده شده است.

                      خواهشا سوال ها موردی باشد و به صورت کلی پرسیده نشود.

                      دیدگاه


                        #41
                        پاسخ : ارتباط plc با labview

                        نوشته اصلی توسط ehsan_akbari
                        دوست عزیز از تلاشتون متشکرم
                        اما باید بگم که در دیتاشیت های ارائه شره توسط خوذ LS مطالب جامع تر و کاملتر و با کیفیت گرافیکی بهتری ارائه شده است
                        سلام ببخشید عزیزم اینارو خودم بریدم با snagitو pdfکردم میدونم کیفیتش بده ولی بلد نبودم بهتر از این.شرمندم.شما بلدین pfd خوب و توپ بسازید؟یادم میدی؟
                        جانم به فدای ائمه اطهار
                        می دونستم تحمل مرگ اعضای خانواده خیلی سخته ولی نه تا این حد،ایکاش پدرم بیشتر می موند.روحش شاد.

                        دیدگاه


                          #42
                          پاسخ : ارتباط plc با labview

                          سلام
                          خیلی خیلی ممنون از جوابهاتون جناب آقای اکبری
                          عالی ، کافی و مفید بودن.
                          اگه امکانش هست یه مثال هم برای Write بزنید.من توی این دستور کمی مشکل دارم.
                          با تشکر فراوان

                          دیدگاه


                            #43
                            پاسخ : ارتباط plc با labview

                            سلام

                            این چند روز وقت کافی برای نوشتن ندارم

                            اشا الله باشه برای 10 دی ماه به بعد

                            آیا یک پروژه صنعتی در حال انجام دارید؟؟؟

                            دیدگاه


                              #44
                              پاسخ : ارتباط plc با labview

                              نمیگید چجوری pdfباکیفیت بسازم؟ :angry: :cry2:
                              جانم به فدای ائمه اطهار
                              می دونستم تحمل مرگ اعضای خانواده خیلی سخته ولی نه تا این حد،ایکاش پدرم بیشتر می موند.روحش شاد.

                              دیدگاه


                                #45
                                پاسخ : ارتباط plc با labview

                                سلام
                                بله.قرار از PLC LS مقادیری رو بخونم و توی نمودار نمایش و توی یه فایل ( مثلاً اکسل ) ذخیره کنم.
                                فقط باید بخونم و نوشتنی در کار نیست.
                                چند تا مثال توی اینترنت پیدا کرده بودم اما دقیق متوجه نشده بودم که با راهنماییهای شما موضوع تا حد زیادی جا افتاد.
                                از بابت تمام راهنمای هاتون ممنونم.

                                دیدگاه

                                لطفا صبر کنید...
                                X