Thông báo

Collapse
No announcement yet.

Mình muốn hỏi về việc dùng Matlab trong giao tiếp VDK với máy tính!

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Mình muốn hỏi về việc dùng Matlab trong giao tiếp VDK với máy tính!

    Có thể dùng Matlab để kết nối VDK với máy tính không vậy? Vì mình đang kết nối VDK với máy tính và dùng Matlab để tính toán và hiển thị. Như vậy có thể dùng Matlab để kết nối không hay phải dùng VB rồi nhúng Matlab vào? Ai có tài liệu gì về vấn đề này cho mình với!

  • #2
    Bạn có thể tham khảo một số demo trong Instrument Control Toolbox. Có một số VD về thu thập dữ liệu qua cổng COM của máy tính sử dụng MATLAB, bạn hoàn toàn có thể thu thập xử lý dữ liệu nhận được bằng các hàm có sẵn của MATLAB.
    Một số link từ Mathworks:
    Serial Port Overview:
    http://www.mathworks.com/access/help...f20-63744.html

    Communicating with a Serial Port Instrument:
    http://www.mathworks.com/access/help...f20-66175.html
    PNLab
    Mạch nạp/debug ULink2, Jlink ARM USB
    Mạch nạp AVR, PIC, 8051, MSP430 USB
    Mạch phát triển STM32, ARM9, ARM11
    more...www.pnlabvn.com

    Comment


    • #3
      Việc thu thập dữ liệu từ các cổng của máy tính và tính toán trên máy tính đòi hỏi phải có Card mở rộng của hãng Mathworks, card này rất là đắt lên tới hàng nghìn USD.

      Anh Dương Minh Tấn K46 ngành Điều khiển tự động đã làm đồ án và nghiên cứu khoa học về vấn đề này nhưng chỉ là mô phỏng cánh tay máy ảo chứ chưa có giao tiếp thật.

      Anh Tấn online thì xin mời đóng góp ý kiến cho các bạn hiểu thêm.

      Chúc các bạn thành công.
      Technical sale at WT Microelectronics S'pore
      Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
      Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

      Comment


      • #4
        Tôi đã làm giao tiep matlab voi VSL roi, nhung con VSL cua toi matlab co ho tro nen cung don gian. Ban cu doc phan embedd trong help se thay.

        Comment


        • #5
          Nguyên văn bởi ngohaibac Xem bài viết
          Việc thu thập dữ liệu từ các cổng của máy tính và tính toán trên máy tính đòi hỏi phải có Card mở rộng của hãng Mathworks, card này rất là đắt lên tới hàng nghìn USD.

          Anh Dương Minh Tấn K46 ngành Điều khiển tự động đã làm đồ án và nghiên cứu khoa học về vấn đề này nhưng chỉ là mô phỏng cánh tay máy ảo chứ chưa có giao tiếp thật.

          Anh Tấn online thì xin mời đóng góp ý kiến cho các bạn hiểu thêm.

          Chúc các bạn thành công.
          Thực ra Matlab có hỗ trợ sẵn công cụ để ghép nối cổng COM của máy tính với VDK. Chúng ta chỉ cần cái card đắt đỏ đấy khi muốn làm về DAQ thôi, phải ko ngohaibac. Nhân tiện mình cảm ơn bạn về mấy bài lập trình gui cho Matlab
          mail: [/email] :->

          Comment


          • #6
            Mà mấy cái CARD ý nó lại chẳng nối qua cổng COM, thông thường là PCI hoặc bét ra thì cũng là LPT!
            PNLab
            Mạch nạp/debug ULink2, Jlink ARM USB
            Mạch nạp AVR, PIC, 8051, MSP430 USB
            Mạch phát triển STM32, ARM9, ARM11
            more...www.pnlabvn.com

            Comment


            • #7
              uh thì LPT, nó cũng có lệnh truy nhập cồng LPT free đấy, bác vào thử trang của nó có hẳn ứng dụng điều khiển động cơ bước qua LPT free cho bác. Còn PCI thì chắc phải mua thôi. Tự thân vận động được 2 cổng COM+LPT.

              Comment


              • #8
                Giải pháp

                Theo mình trong ý hỏi của bạn cũng đã có phương án trả lời.

                Bạn có thể dùng VB để thực hiện bài toán truyền thông với VĐK, sau đó sử dụng các hàm gọi đối tượng Matlab trong VB để thực hiện các phép phân tích và xử lý dữ liệu theo ý của bạn.
                Càng biết nhiều càng thấy mình biết ít.

                Comment


                • #9
                  To ATYLA, cho mình hỏi bạn gọi các hàm đối tượng trong matlab bằng cách nào, ví dụ một hàm cho anh em xem ? Như tớ muốn đưa dữ liệu về tốc độ bên VB sang Matlab, rồi tính toán một hồi đưa lại sang VB.

                  Comment


                  • #10
                    To Courtney:
                    Matlab có hỗ trợ truyền thông với ngoại vi thông qua cổng Serial mà. Mình đã từng thử truyền với PSoC thông qua gõ lệnh trực tiếp trên Command Window, không phức tạp đâu.Bạn cứ vào help, đọc phần serial ấy, nó nói kỹ lắm.Để chuyên nghiệp hơn, bạn có thể sử dụng GUI để tạo giao diện và truyền thông với VĐK.Bạn có thể tham khảo trang này
                    http://cnx.org/content/m12062/latest/
                    hoặc
                    http://www.parallax.com/dl/docs/arti...atlabPaper.pdf

                    By the way, cảm ơn bạn Ngô Hải Bắc vì bài hướng dẫn lập trình GUI trên Matlab rất hay của bạn.Khi vừa mới bắt đầu chuẩn bị đọc GUI thì gặp ngay bài viết của bạn cho nên mình làm GUI nhanh hơn, không phải mất thời gian mò mẫm

                    Comment


                    • #11
                      Mình chưa làm giao tiếp giữa vi điều khiển với máy tính thông qua Matlab qua COM và LPT nhưng mình nghĩ rằng nếu mà giao tiếp ngon lành mà không cần card mở rộng thì thật là hay. Mình đã từng search về vấn đề này nhưng chưa tìm hiểu cụ thể và mình biết là Matlab có khả năng này.

                      Vấn đề này rất hay và thiết thực bởi vì dùng công cụ Matlab để xử lý số liệu thì còn gì bằng. Có thời gian mình sẽ nghiên cứu về vấn đề này và viết bài trao đổi cùng mọi người. Anh Dương Minh Tấn làm về giao tiếp này nhưng chỉ là mô phỏng thôi chứ chưa làm giao tiếp ra bên ngoài. Anh cũng vào trao đổi luôn nhé .

                      Vấn đề này thật sự hay với dân điều khiển tự động của bọn mình. Chúng ta cùng trao đổi vấn đề này nhé. Bạn nào đã làm rùi, đã biết rùi thì hãy hướng dẫn cụ thể cho mọi người nhé.

                      Chúc các bạn thành công.
                      Technical sale at WT Microelectronics S'pore
                      Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
                      Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

                      Comment


                      • #12
                        he he he

                        Nguyên văn bởi ngohaibac Xem bài viết
                        Mình chưa làm giao tiếp giữa vi điều khiển với máy tính thông qua Matlab qua COM và LPT nhưng mình nghĩ rằng nếu mà giao tiếp ngon lành mà không cần card mở rộng thì thật là hay. Mình đã từng search về vấn đề này nhưng chưa tìm hiểu cụ thể và mình biết là Matlab có khả năng này.

                        Vấn đề này rất hay và thiết thực bởi vì dùng công cụ Matlab để xử lý số liệu thì còn gì bằng. Có thời gian mình sẽ nghiên cứu về vấn đề này và viết bài trao đổi cùng mọi người. Anh Dương Minh Tấn làm về giao tiếp này nhưng chỉ là mô phỏng thôi chứ chưa làm giao tiếp ra bên ngoài. Anh cũng vào trao đổi luôn nhé .

                        Vấn đề này thật sự hay với dân điều khiển tự động của bọn mình. Chúng ta cùng trao đổi vấn đề này nhé. Bạn nào đã làm rùi, đã biết rùi thì hãy hướng dẫn cụ thể cho mọi người nhé.

                        Chúc các bạn thành công.
                        Cái này chú mày gặp DaiHang86 hơ hơ hơ hắn đêk phải dân điều khiển nhưng làm nhiều cái này rồi hô hô hô

                        Comment


                        • #13
                          Nguyên văn bởi ngohaibac Xem bài viết
                          Vấn đề này thật sự hay với dân điều khiển tự động của bọn mình.
                          Chúc các bạn thành công.
                          => ý nói là tôi là người học điều khiển tự động chứ không ám chỉ Daihang gì đó là dân ĐK, còn việc làm được giao tiếp với VDK được hay chưa chẳng quan trọng, quan trọng đó chỉ là một vấn đề nhỏ trong các ứng dụng của Matlab mà nhiều người chưa có thời gian để nghiên cứu kĩ. Vì vậy nên ai nghiên cứu vấn đề nào rùi thì mới post lên để học hỏi, trao đổi mà thôi.

                          Matlab ai cũng có thể dùng được. Matlab gồm nhiều công cụ, không biết kiến thức về món này của anh bao nhiêu nhưng chắc là đỉnh cao lắm đây .

                          Matlab rất rộng và mỗi người có lẽ sẽ dùng các công cụ khác nhau của nó vào mục đích của mình nên sẽ có nhiều ngành cần đến Matlab.

                          Ngành của em với em em suy nghĩ cách khác anh nên đừng nói kiểu đàn anh nhé.

                          => Công công lần sau đọc kĩ hãy nói nhé.

                          P/S: Em hơi bị ghét cái câu "he he" đấy.
                          Technical sale at WT Microelectronics S'pore
                          Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
                          Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

                          Comment


                          • #14
                            Chương trình giao tiếp RS232 đơn giản qua Matlab

                            Để biết thêm chi tiết về giao tiếp với PC qua cổng RS232 qua Matlab các bạn dùng Help của Matlab và search với từ khóa: serial.

                            Việc giao tiếp này cũng rất dễ dàng thực hiện, không có gì là quá cao siêu cả. Mình đã giao tiếp thành công rùi. Để test nó các bạn hãy đấu tắt 2 chân 2 và 3 (TX và RX) của cổng COM lại.

                            Đầu tiên mình sẽ đưa ra môt chương trình thật là đơn giản, thiết lập ít tham số, còn chi tiết về thiết lập tham số nó thế nào? ý nghĩa ra sao? thì sẽ nói sau, mình cứ làm đơn giản trước rùi phức tạp -> hiểu hết về thiết lập này sau.

                            Bài này mình giới thiệu cách tạo đối tượng, kết nối, viêt hàm callback.

                            Tạo đối tượng:
                            Chúng ta gõ lệnh và kết quả hiện luôn (nhớ là k có dấu ; ở cuối lệnh
                            Code:
                            >> s = serial('COM1')
                            
                               Serial Port Object : Serial-COM1
                            
                               Communication Settings 
                                  Port:               COM1
                                  BaudRate:           9600
                                  Terminator:         'LF'
                            
                               Communication State 
                                  Status:             closed
                                  RecordStatus:       off
                            
                               Read/Write State  
                                  TransferStatus:     idle
                                  BytesAvailable:     0
                                  ValuesReceived:     0
                                  ValuesSent:         0
                            Như vậy đối tượng là Serial-COM1, tốc độ 9600,..

                            Tiếp theo, chúng ta xem các tham số của đối tượng như thế nào bằng lệnh get(s):
                            Code:
                            >> get(s)
                                ByteOrder = littleEndian
                                BytesAvailable = 0
                                BytesAvailableFcn = 
                                BytesAvailableFcnCount = 48
                                BytesAvailableFcnMode = terminator
                                BytesToOutput = 0
                                ErrorFcn = 
                                InputBufferSize = 512
                                Name = Serial-COM1
                                ObjectVisibility = on
                                OutputBufferSize = 512
                                OutputEmptyFcn = 
                                RecordDetail = compact
                                RecordMode = overwrite
                                RecordName = record.txt
                                RecordStatus = off
                                Status = closed
                                Tag = 
                                Timeout = 10
                                TimerFcn = 
                                TimerPeriod = 1
                                TransferStatus = idle
                                Type = serial
                                UserData = []
                                ValuesReceived = 0
                                ValuesSent = 0
                            
                                SERIAL specific properties:
                                BaudRate = 9600
                                BreakInterruptFcn = 
                                DataBits = 8
                                DataTerminalReady = on
                                FlowControl = none
                                Parity = none
                                PinStatus = [1x1 struct]
                                PinStatusFcn = 
                                Port = COM1
                                ReadAsyncMode = continuous
                                RequestToSend = on
                                StopBits = 1
                                Terminator = LF
                            Các bạn thấy là có rất nhiều tham số phải không? chúng ta ở đây quan tâm đến tham số: BytesAvailableFcn tham số này chưa thết lập. Tham số này chính là hàm callback mà nó sẽ gọi khi có byte nhận được ở bộ đệm nhận.Vậy chúng ta viết hàm này chính là viết hàm OnComm đáp ứng sự kiện ReceiveEvent như trong MSCOMM của MS vậy.

                            Thiết lập này phải thực hiện trước khi mở cổng để giao tiếp, nên chúng ta sẽ viết hàm callback trước. Bạn viết 1 m-file với tên Serial_Callback.m như sau:
                            Code:
                            function Serial_Callback(obj,event)
                                ind = fscanf(obj)
                            Cú pháp của hàm callback như trên với obj là đối tượng kiểu Serial như trên. Hàm có tác dụng đọc dữ liệu và hiển thị luôn kết quả lên command window.

                            Chúng ta đưa tham số tên hàm vào cho đối tượng s của ta:

                            Code:
                            >> s.BytesAvailableFcn = @Serial_Callback;
                            Tiếp theo chúng ta bắt đầu giao tiếp:
                            Code:
                            >>fopen(s);
                            >>fprintf(s,'chao cac ban');
                            Sau đó các bạn xem kết quả thế nào, sau đó thử truyền các kí tự khác xem bằng lệnh fprintf(s,...), hoặc thử với vi xử lý xem cho nó truyền lên các bạn sẽ thấy rất hay.

                            Bạn không giao tiếp nữa thì đóng cổng lại:
                            Code:
                            >>fclose(s);
                            Mình viết tiếp sau còn giờ đi ngủ đã.

                            Chúc các bạn thành công.
                            Last edited by ngohaibac; 25-12-2006, 16:47.
                            Technical sale at WT Microelectronics S'pore
                            Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
                            Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

                            Comment


                            • #15
                              Chủ đề này rất là hay đấy mà chẳng thấy ai hưởng ứng là sao nhỉ? Tối nay mình sẽ viết chi tiết một vài phần nhé.
                              Technical sale at WT Microelectronics S'pore
                              Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
                              Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

                              Comment

                              Về tác giả

                              Collapse

                              courtney Tìm hiểu thêm về courtney

                              Bài viết mới nhất

                              Collapse

                              Đang tải...
                              X