PIC - RS232 - Matlab Simulink (?)

Başlatan 50Cal, 15 Nisan 2011, 22:54:20

50Cal

Merhaba

Bir sensörden aldığım analog veriyi pic ile dijitale çevirdikten sonra matlab simulinke göndermek istiyorum. Bu gelen veriyi  fonksiyon bloklarından geçirerek eş zamanlı olarak işlemem gerek. Fakat simulinkte yer alan rs232 blokları veriyi ne şekilde alır, ben picten gönderirken ne formatta göndermeliyim bilmiyorum. Pic'ten gidecek veri 10 bitlik bir tamsayı ve 100Hz güncelleme frekansı olacak.  Şu anda mathworks'te ve nette araştırıyorum.

Daha önce böyle bir konuyla uğraşmış arkadaşların yardım ve önerilerini bekliyorum.

Ayrıca, proteusta picten COM portlarına veri göndererek ve  matlabten de bu veriyi okuyarak simülasyonda bu iletişimi sağlayabilir miyim?

mozkan87

10 bitlik tam sayıyı tek seferde seri port ile gönderemezsiniz. 8 bit olarak 2 byte parçalayıp gönderebilirsiniz. Bilginin başına senkron ekleyip sorunsuz kullanabilirsiniz. Matlab kısmını hiç bilmiyorum.

50Cal

Yanıt için teşekkürler. İlk etapta veriyi 8 bite çevirerek gönderirim, daha sonra gerek olursa 10 biti 2 parça olarak göndermeyi denerim.

Simulink xPC Target altındaki RS232 bloklarını inceliyorum. senkron ve asenkron tipte bloklar var.
Asenkron tipte "Receive" bloğunun özellikleri aşağıdaki gibi:

[IMG]http://img130.imageshack.us/img130/3841/matlab1.jpg[/img]

Veri alma formatı olarak :  'start,%f,stop;'  gösterilmiş ve mesaj sonu karakter sayısı 1 olarak verilmiş. Tabi formatta oynama yapmak müümkün. Ama öncelikli olarak bu yapıyı anlamam lazım.
%f 'i anlamadım C'de float tip değişken ama burda ne tip bir veridir bu?

Seri iletişim konusunda çok az bilgim var, CCS ile seri iletişimde  integer bir değişken(ör: 38 ) gönderebilir miyim yoksa 3 ve 8 karakterlerini ayrı ayrı gönderip, alıcı tarafta 38 stringini oluşturup onu da tekrar integera çevirerek mi yapmalıyım?





50Cal

#3
Proteus'ta bir picten diğerine RS232 üzerinden 2.89 sayısını 4 bytelık bir string'e atayıp puts() fonksiyonu ile gönderiyorum. Alıcı picte de, gets() ile alarak 4 bytelık bir stringe atıyorum. Fakat bu stringin içeriği şu şekilde oluyor;  '10' '2' '.' '8' burada 10 desimal..
ASCII tablosundan baktığımda 10 değeri new line olarak belirtilmiş..

Şimdi öğrenmek istediğim bu 10 değerini benim string ifademin başına ekleyen, puts fonksiyonu mu gets fonksiyonu mu?

50Cal

Simulink'te gerçek zamanlı simulasyon yapılabiliyor mu? yani sim. süresine 10 saniye dediğimde, 10 sn boyunca seri portu dinleyip gelen veriyi işleyecek şekilde uzun süreli simulasyon?


vitruvius

Alıntı yapılan: 50Cal - 19 Nisan 2011, 22:57:00
Simulink'te gerçek zamanlı simulasyon yapılabiliyor mu? yani sim. süresine 10 saniye dediğimde, 10 sn boyunca seri portu dinleyip gelen veriyi işleyecek şekilde uzun süreli simulasyon?

Evet yapabilirsiniz.