PIC Vietnam

Go Back   PIC Vietnam > Robotics > Matlab-Simulink & Labview & 20-Sim

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Matlab-Simulink & Labview & 20-Sim Các công cụ mô phỏng đa ngành...

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 19-06-2011, 09:59 AM   #8
lequangthanh
Đệ tử 1 túi
 
Tham gia ngày: Jun 2011
Bài gửi: 22
:
Trích:
Nguyên văn bởi dvnccbmacbt View Post
Chào mọi người.
Em đang thực hiện vẽ đồ thị tren matlab với dữ liệu là số xung encoder PIC truyền lên qua cổng com. Phần nhận dữ liệu em đã thực hiện xong. Nhưng vẽ đồ thị thì em chưa vẽ được. Nếu lưu lại dữ liệu nhận được rồi chờ đến khi kết thúc quá trình nhận dữ liệu thì không có vấn đề j.
Em có thắc mắc thế này: Nếu em muốn vẽ đồ thì ngay trong hàm ngắt của matlab có được không? Tức là động cơ đang quay và em muốn đồ thị cũng vẽ theo đó luôn chứ không chờ đến lúc động cơ dừng rồi mới vẽ ( em điêu khiên vị trí cua động cơ);
Em thấy trong luồng "PID cho động cơ đã có người làm rồi nhưng không thấy nói cụ thể về cái này. Mong mọi người giúp đỡ!
có nhiều cách giải quyết vấn đề này:


nếu bạn không lập trình trong GUI,bạn có thể làm được việc này ,vì hiện tại mình chưa làm được với GUI.

bạn định dạng cổng COM như sau:


s=serial('COM1');%lựa chọn cổng com tùy vào phần cứng của bạn
get(s);%lấy các thông tin về cổng
hàm trên sẽ trả về các thuộc tính của đối tượng s,giống như lập trình hướng đối tượng bạn có thể thay đổi thông số sau khi khởi tạo (với các thông số mặc định)
s.BaudRate=9600;hoặc set(s,'BaudRate',9600);
s.InputBufferSize=1024;%tùy chọn,có thể bỏ qua các bước này
s.TimeOut=2;%thời gian phát sinh lỗi nếu quá trình đọc dữ liệu vượt quá thời gian này
s.BytesAvailableFcnMode='byte';%chế độ gọi hàm ngắt sẽ là đếm số byte nhận được,mặc định là terminal:gọi hàm ngăt khi gặp ký tự kết thúc
s.BytesAvailableFcnCount=10;%định nghĩa số byte nhận được trong bộ đệm thu 10 byte thì gọi chương trình ngắt
s.BytesAvailableFcn=@vedothi;%khai bao hàm call back
vedothi là một hàm ngắt mà ta sẽ định nghĩa và lưu trong thư mục đang làm việc của matlab,cách định nghĩa hàm này có đôi chút khác biệt

cấu trúc hàm này như sau:
kích phải trong thư mục đang làm việc và chọn new>function
ta sẽ chỉnh sữa lại như sau:
Function y = vedothi(obj,event) % có trả về kiểu dữ liệu
obj:là đối tượng serial
ví dụ một hàm mầu như sau
function th( obj,event )
%TH Summary of this function goes here
% Detailed explanation goes here
figure

end

cái hàm trên có tên là th và thực hiện một công việc vô cùng đơn giản là tạo một cái cửa sổ figure.và không trả về kiểu dữ liệu gì hết,hehe
lưu ý là cái hàm này phải tạo trước khi khai báo hàm callback trong matlab nhé
công việc còn lại là
fopen(s);
một số bạn thắc mắc là việc gửi dữ liệu thì rất nhanh,còn đọc thì chậm,tất nhiên rồi
khi bạn khởi tạo cổng com,matlab mặc định thời gian đọc dữ liệu tối đa là 10s,khi bạn gửi dữ liệu xuống cổng,thì cái cổng trong máy tính bạn nó gủi dữ liệu đi cho thiết bị đầu cuối đọc,chứ nó đâu có gửi cho nó đọc đâu,vì vậy đâu có gì trong bộ đệm nhận đâu mà đọc,bạn muốn gửi,rồi nhận lại cái mình đã gửi thì phải nối dây số 2 và dây 3 của cổng com lại thì sẽ làm được việc này,còn nếu bạn đang dùng laptop,thì dùng phần mềm giả lập cổng com để thử nghiêm!!

chúc bạn thành công!!!
lequangthanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 03:43 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam