PIC Vietnam

Go Back   PIC Vietnam > Truyền thông > Giao tiếp USB, CAN, I2C, SPI, USART...

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

Giao tiếp USB, CAN, I2C, SPI, USART... Những giao tiếp được tích hợp trên PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 29-08-2009, 10:05 AM   #1
HaiAu2005
Đệ tử 9 túi
 
Tham gia ngày: May 2006
Bài gửi: 150
:
Real-time applications: giao tiếp giữa máy chủ và máy mục tiêu

Tôi mở chủ đề này nhằm trao đổi thêm về mấy trao đổi ở cuối chủ đề giao tiếp USB:

http://www.picvietnam.com/forum/show...p?t=472&page=7

Trong chủ đề này tôi muốn trao đổi về ứng dụng thời gian thực sử dụng kết nối giữa một máy tính chủ (host PC) và một máy tính mục tiêu (target PC). Trong phần cuối ở link trên, tôi và bqviet có trao đổi về giao tiếp dùng máy tính PC\104. Đây là một trong những ứng dụng thời gian thực (real-time applications) mà cần có hai máy tính:

1. Máy chủ (host PC) có các phần mềm lập trình: như Visual Studio, LabVIEW, MATLAB/Simulink (và một số toolboxes khác)

2. Máy mục tiêu (target PC): có thể là một máy tính PC\104 hoặc một máy tính nào đó có I/O modules, có Real-time OS.

Việc kết nối giữa máy chủ và máy mục tiêu có thể thực hiện được qua các cổng như Ethernet, RS-232 và Wireless. Ứng dụng của giao tiếp này có khá nhiều, ví dụ như trường hợp thực hiện việc điều khiển một thiết bị gắn máy mục tiêu ở địa điểm nào đó và dùng máy chủ chạy chương trình điều khiển, kết nối giữa máy chủ và máy mục tiêu dùng wireless, hoặc cũng có thể dùng để điều khiển một tầu con (không có người lái) từ tầu mẹ v.v...

Theo tôi biết hiện có một số hãng có giải pháp và phần mềm cho các ứng dụng thời gian thực kết nối máy chủ và mục tiêu sau:

1. OPAL-RT: http://www.opal-rt.com
2. Xanalog: http://www.xanalog.com/
3. MathWorks: http://www.mathworks.com/ (MATLAB/Simulink và xPC Target)
4. National Instruments: http://ni.com

Tuy nhiên những ứng dụng này thì phần cứng và phần mềm còn khá đắt, ngoài ra ứng dụng wireless ngày càng phổ biến nhưng lại có hạn chế cho ứng dụng điều khiển phương tiện ngầm do sóng RF không lan truyền tốt trong môi trường nước, do vậy tôi nghĩ rất muốn đi sâu vào việc tìm giải pháp này cho một số ứng dụng điều khiển phương tiện ngầm. Ngoài ra từng ứng dụng cụ thể thì lại không đơn giản, việc kết nối và thiết trí giữa từng loại sản phẩm lại khác nhau. Nếu ai có kinh nghiệm thì xin trao đổi.

Liệu các bạn đang học và làm phát triển PIC ở đây có ý tưởng gì cho việc phát triển các ứng dụng này không?

Hải Âu

thay đổi nội dung bởi: HaiAu2005, 29-08-2009 lúc 12:09 PM.
HaiAu2005 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-08-2009, 12:23 PM   #2
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Anh nói vấn đề này đúng ngay vấn đề mà R&P đang triển khai. Hiện nay R&P đang cho thiết kế một bo mạch, gọi tên là mPC120 (bắt chước tên PC104).

Microchip PC 120 pincounts = mPC120.

Trong đó 120 pincounts sử dụng trên PIC32 Expandsion board của Microchip, sẽ giống y hệt. Core có thể là PIC16/18 hoặc PIC24 hoặc PIC32. Thiết kế gần giống theo chuẩn của PC104, nhưng có một chút thay đổi. Tạm thời những thay đổi chi tiết chưa được công bố, chỉ làm việc với các nhà thiết kế của R&P.

Hỗ trợ các giao tiếp xa (giao tiếp ra ngoài phạm vi bo mạch):
- RS232
- RS485
- CAN
- Ethernet (đối với PIC32 là Fast Ethernet 100Mbps, với loại khác là 10Mbps)
- USB (Host, Device, OTG)

Hỗ trợ các giao tiếp gần (Onboard):
- UART
- SPI
- I2C

Hỗ trợ các cổng I/O (120 pins):
- I/O
- PSP/PMP (để điều khiển LCD, giao tiếp RAM)
- PWM
- ADC

Có bổ sung thiết kế EEPROM EUI có địa chỉ Mac Address tĩnh của Microchip.

Sơ bộ về tính năng như vậy. Dự kiến bộ sản phẩm này sẽ được tung ra vào khoảng cuối năm nay.

Mục đích của bộ sản phẩm này là để thúc đẩy nhanh quá trình thiết kế, làm prototype, test functions,...

Giá bán dự kiến cho bộ sản phẩm này sẽ khoảng 60USD (khoảng 1.2M) đối với PIC32. Còn các dòng thấp hơn sẽ rẻ hơn. Hiện tại R&P đang trong quá trình thiết kế và thử nghiệm.

Các giải pháp mẫu trong quá trình thiết kế đều đã được công bố, để từ đó các nhà thiết kế khi có sản phẩm mPC120 này ra đời, sẽ có thể nhanh chóng thiết kế ứng dụng và chạy được ngay trên bo mạch này.

Ngoài ra, đi kèm với bo mạch, R&P dự kiến sẽ sản xuất luôn các bo mạch in trắng, có đục lỗ sẵn và có bắt vít đúng chuẩn theo kiểu test board, để khi cần là người dùng có thể mua về lắp linh kiện cắm lên thử nghiệm luôn. Nó đảm bảo tốc độ phát triển ứng dụng nhanh và cực kỳ hiệu quả.

Đây là vấn đề mà R&P đã tâm đắc từ lâu, nhưng chưa có điều kiện phát triển. Khoảng cuối năm nay, các thiết kế này sẽ được mở hoàn toàn và sẽ hỗ trợ cộng đồng phát triển sản phẩm nhanh hơn nhiều lần.

Chúc vui
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-08-2009, 12:30 PM   #3
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Bổ sung thêm, điều duy nhất mà có thể R&P chưa làm được và cũng chưa muốn làm đối với PIC32 đó là port một hệ điều hành nhỏ lên trên đó. Bởi thiết nghĩ, cho tới nay, năng lực xử lý của PIC32 chưa phù hợp để port một hệ điều hành lên. Điều này có thể sẽ thực hiện được trong khoảng 2 năm tới (tức khoảng 2011), khi mà trình độ phát triển của người dùng đủ đông đảo, đủ chuyên sâu. Đồng thời, chắc chắn rằng vào khoảng thời gian này, MCHP cũng sẽ có dòng PIC phù hợp để có thể port hệ điều hành lên.

Sự phát triển này là phù hợp với tốc độ phát triển của cộng đồng, và phù hợp với nhu cầu thực tế ở VN. Theo đánh giá của R&P, giá cho hệ thống kiểu như thế này là quá rẻ. Khi sản lượng tăng lên, giá cho một mPC120 với PIC32 sẽ có thể rơi xuống vào tầm 40$/bộ với đầy đủ tính năng như đã nêu. Nhưng tạm thời chưa thể kéo xuống được do nhu cầu chưa có đủ lớn.

Chúc vui
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-08-2009, 12:58 PM   #4
bqviet
PIC Bang chủ
 
Tham gia ngày: Jul 2007
Bài gửi: 43
:
Đúng là nên chuyển sang một luồng riêng để tránh loãng luồng USB có từ trước. Xin bóc tách từng vấn đề để trả lời dần

Phương án thực hiện cái target
Cách thức ban đầu anh HÂ đưa ra là dùng 1 host PC và 1 target PC. Cách này có 1 ưu điểm chính là có thể mua được thiết bị COTS dễ dàng nên không phải động tay chế tạo phần cứng. Nhưng đi kèm nó là nhiều vấn đề
1. Giá thành phần cứng: target PC và I/O module ít nhất cũng cỡ 500-600$ hàng vô danh, hàng hiệu "non- made inChina" giá chắc chắn không dưới 1200$.
2. Giá thành phần mềm: target PC cần một hệ điều hành thời gian thực, hoặc chí ít cũng là hệ điều hành nhúng, nếu dùng bản thương mại sẽ tốn từ 100$ tới vài ngàn tùy theo tính năng
3. Công lập trình: cần lập trình cho cả 2 nơi host PC và target PC.
4. Vấn đề cấp nguồn: công suất tiêu thụ điển hình của một target PC vào khoảng 5W, 12 VDC chưa kể I/O card và wireless card; đây là gánh nặng cho ắc-quy. Có loại máy tính nhúng tiêu thụ năng lượng ít hơn, nhưng tính năng cũng giảm đi rất nhiều và/hoặc giá thành vượt lên nhiều.
5. Vấn đề về kích thước của bộ ba target PC + I/O card + wireless card có vừa để lắp vào mô hình ?

Vì vậy bqviet mới đề xuất phần target nên làm trên 1 bo mạch duy nhất thực hiện cả chức năng truyền thông wireless lẫn chức năng vào/ra tín hiệu. Kích thước của bo như vậy vào khoảng tờ giấy A5. Nguồn cấp chỉ cần 2 cục pin 1,5 V (AA hoặc AAA, thậm chí 1 cục pin cúc áo cũng được nếu thời gian thử nghiệm chỉ kéo dài dưới 24 giờ). Nhược điểm của phương án này là phần cứng phải tự làm. Nói là nhược điểm so với người ít làm điện tử, nhưng rất có thể nó lại là ưu điểm, bởi khi đó có thể tối ưu hóa phần vào/ra cho phù hợp với đối tượng đang mô phỏng bằng 1 bo mạch duy nhất, thay vì phải dùng 2-3 bo mạch vào/ra PC104 mới đáp ứng được hết. Ví dụ khi đối tượng mô hình cần vừa đầu vào ADC vài loại (điện áp, dòng), vừa đầu ra DAC, vừa đầu ra xung và vài đầu vào/ra hai trạng thái ..., khó có khả năng bo mạch bán sẵn nào đáp ứng được và sẽ phải mua vài cái.


Phương án truyền tin
_ Nếu là mô hình tàu nổi hoặc đối tượng di động không ngập nước thì nên dùng truyền thông không dây. Đơn giản, giá thành vừa phải trong khi giải quyết được nhiều vấn đề dây nhợ lằng nhằng, xử lý kín nước. Việc quan trọng là chọn chuẩn truyền thông phù hợp và thiết kế cấp nguồn.
_ Nếu là mô hình tàu ngầm thì truyền thông có đây phù hợp hơn. Vấn đề cấp nguồn cũng không phải nghĩ tới nữa. Tín hiệu RF nói chung không thể truyền được trong nước, trừ dải tần số cực thấp cỡ 100-125 KHz (sóng rất dài).


Vấn đề phần mềm
Đa phần người VN quen dùng với nền tảng Windows, tuy nhiên ở mảng phần mềm khoa học Linux có thế mạnh rõ rệt. Phần mềm khoa học và phần mềm cho máy chủ là những mảng mạnh nhất của thế giới Unix nói chung, trong đó bao gồm Linux. Linux một mặt cho phép lập trình can thiệp rất thấp vào phần cứng (trong khi Windows không cho phép và bắt buộc phải dùng bộ SDK, viết driver), mặt khác lại có nhiều thư viện trợ giúp để lập trình ở mức cao đối với phần cứng - ví dụ thư viện libusb, thư viện Comedi. Khi dùng công cụ của hãng MathWorks, nếu người dùng muốn lập trình dạng sơ đồ khối phải mua (1) Matlab, (2) Simulink, (3) Realtime workshop, (4) có thể cần hệ điều hành QNX cho ứng dùng thời gian thực; trong khi có thể dung Scilab thay cho Matlab, Scicos thay cho Simulink, RTAI-Lab thay cho Realtime workshop, RTAI Linux thay cho QNX. Tất cả những thứ thay thế đó đều là phần mềm mã nguồn mở, tự do, miễn phí và hoàn toàn hợp pháp.
bqviet vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-08-2009, 02:45 PM   #5
HaiAu2005
Đệ tử 9 túi
 
Tham gia ngày: May 2006
Bài gửi: 150
:
Hãng MathWorks có xPC Target:

http://www.mathworks.com/products/xpctarget/

Có thể dùng cho nhiều loại target PC. Sử dụng cái xPC Target này thì trong máy chủ cần:

1. MATLAB/Simulink
2. xPC Target + Real-Time Workshop
3. Watcom Compiler hoặc MS Visual Studio (C Compiler)

Kết nối RS-232: đơn giản
Kết nối Ethernet: hơi phức tạp hơn chút - phổ biến trong cộng đồng dùng xPC Target
Kết nối wireless: hiện nay mới chỉ có ít người có ứng dụng thành công với wireless

Còn máy mục tiêu thì cần cái xPC Target Kernel, chương trình xPC Target sẽ tạo ra phần mềm này và nạp vào xPC Target. Các I/O modules: xPC Target hỗ trợ rất nhiều bảng giao diện của nhiều hãng, và cũng có hướng dẫn viết device drivers cho những bảng không hỗ trợ.

Chơi cái này nếu đem so sánh giá với các loại "home-made" mà bác bqviet nói thì có đắt đỏ, ví dụ:

1. MATLAB/Simulink: nếu mua phiên bản dùng cho research thì vài ngàn
2. xPC Target/Real-Time Workshop: chừng 2, 3 ngàn gì đó
3. Bảng giao diện I/O mà xPC Target hỗ trợ: một vài trăm

Hải Âu

thay đổi nội dung bởi: HaiAu2005, 29-08-2009 lúc 03:09 PM.
HaiAu2005 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-08-2009, 05:17 PM   #6
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Ở các vấn đề trên đây, ta nên chú ý tới việc sử dụng Target PC. Những câu hỏi đặt ra là tại sao cần Target PC phải có hệ điều hành?

1) Hệ điều hành giúp ta những gì? Ta cần làm gì? Tại sao ta cần phải có hệ điều hành? Trong khi những bài toán ở đây chỉ là có giao tiếp: RS232, Ethernet, Wireless (có thể là Zigbee hoặc Sub GHz, loại khoảng 6,7 GHz dành cho quân sự tạm thời không bàn), sau đó chỉ là các cổng I/O điều khiển thời gian thực. Ở đây không có một lý do gì khiến ta cần thêm hệ điều hành cả.

2) Một số người cho rằng, khi có hệ điều hành trên máy thì có thể ta sẽ dùng các công cụ phát triển nhanh hơn và đơn giản hơn. Xin thưa rằng, nếu nói như vậy thì không hẳn đúng. Bởi nếu như kiểu hệ điều hành Windows 7 vừa ra đây, cả một cô bé chưa đụng máy tính lần nào cũng có thể tự cài đặt được, đó là một chuyện khác hẳn. Khi đó, các công cụ lập trình trên đó nó hầu như cho sẵn hết, tất cả các phần cứng đều tương thích với nó. Thế nhưng, để phát triển hệ điều hành trên Linux, trên một Embedded PC, không phải là ai cũng làm được. Có hàng trăm người có thể dùng PIC hoặc dùng bất kỳ con vi điều khiển khá khá nào để làm được những yêu cầu nêu trên: Giao tiếp (RS232, Ethernet, Wireless) và I/O (I/O, ADC, PWM), nhưng bảo họ cài Linux lên một cái máy tính nhúng thì không phải là việc đơn giản. Chưa kể với những thiết kế phần cứng khác nhau, yêu cầu sử dụng khác nhau, đưa một cái disto hay tự viết lại một cái core để đưa vào lại là một vấn đề hoàn toàn khác nữa.

Như vậy, so ra, nó đều có cái mà ta cần phải "cân, đong, đo, đếm" thật kỹ lưỡng.

3) Một cái máy tính nhúng đơn giản có thể lấy từ bất kỳ đâu, không nhất thiết là PC104 hay bất kỳ cái gì, và máy tính nhúng PC104 cũng không có nghĩa là nó có hệ điều hành. Những đời đầu tiên của PC104 cũng là dòng vi điều khiển 8-bit, 16-bit, hoàn toàn không có hệ điều hành trên đó. Đừng hiểu lầm chữ PC là có hệ điều hành. Chuẩn PC104 vẫn bao hàm cả việc sử dụng cho các dòng 8-bit, 16-bit, tới khi có dòng 32-bit phát triển lên, có chuẩn PCI, thì PC104 mở rộng chuẩn PC104+ để bổ sung PCI vào.

Với yêu cầu của bác Hùng, một con PIC32 thừa sức làm tất cả những điều đó, và không cần quá phức tạp như bác nghĩ

4) Trên PC chủ lúc này, bác thích xài Win hay Linux hay cái gì cũng được cả, miễn là bác vứt được lệnh điều khiển xuống để cho PC Target chạy, còn nó chạy thế nào thì không nhất thiết là phải có hệ điều hành mà là do người lập trình, tất cả đều là C chuẩn. Các giao tiếp mà các bác đề cập nó cũng chuẩn nốt luôn và rất phổ biến. Cuối cùng lại, chỉ là tiền mua Tools thôi. Cái tools nào cho các bác dễ dùng thì các bác xài.

5) Có người thì cho rằng sử dụng Matlab, Labview sẽ rất là nhanh và thuận tiện, các bo mạch có sẵn, chỉ cần làm Matlab rồi dịch ra, rồi đổ xuống phần cứng là chạy được. Nghe thì có vẻ có lý, nhưng đúng là từ xưa tới nay, Matlab hay Labview vẫn chưa ra khỏi được phòng thí nghiệm. Mãi tới năm 2008, nó có demo một số công nghệ và biểu diễn trực tiếp việc làm bộ điều khiển máy bay không người lái, sau đó đổ vào bo mạch và chạy thử thành công. Thực tế mà nói thì những ứng dụng như thế này cũng chưa phát triển nhiều. Xu hướng mới của Matlab và Labview chính là làm sẵn cả phần cứng luôn, sau này người ta mua về chỉ cần vẽ vẽ thử kết quả xong, đổ xuống MCU, DSC, DSP là xong, khỏi phải làm nhiều.

Có thể nó hay, có thể nó không hay, vẫn chưa biết được. Cả hai thằng đều đang chạy đua với nhau trong lĩnh vực này. Có lẽ tới một lúc nào đó, nó sẽ đủ nhiều Tools để mọi người dùng, nhưng bọn nó đang gặp vấn đề:

a) Trên thực tế, người ta dùng rất nhiều platform khác nhau (PIC, TI, Renesas, ARM,... kể đại ra cho vui vậy). Nếu nó chọn cách đi phục vụ hết các platform, nó sẽ mệt mỏi ngay, và những thằng sản xuất khác chưa biết sẽ support thằng nào? Lực ở đâu ra để support hết?

b) Nếu tập trung vào một thằng, thì hiện nay nó đang làm mạnh nhất cho TI, các dòng C6000 khá nhiều. Cũng mới năm 2008 thì nó bắt đầu có dsPIC trong đó. Vậy nếu tập trung cho một vài thằng, thì nó sẽ loại bỏ một phần những người dùng khác. Điều này đúng trong thời điểm hiện tại, khi mà sự chênh lệch lực lượng giữa các hãng đang là lớn, những đại gia là những đại gia. Tới một ngày đẹp trời, khi chip VIA chỉ bằng 1/100 chip loại khác, việc hỗ trợ của Matlab trở thành con muỗi đối với người dùng. Ý ở đây muốn nói là thế giới đang phẳng dần ra, các hãng nhỏ sẽ phát triển lên, chưa ai biết được chuyện gì vào hướng đi này.

c) Cũng nên kể tới những thằng như 20SIM, cái này ở Hà Lan khá mạnh, Matlab hay Labview sau này cũng sẽ có đối thủ cạnh tranh, nếu giá của nó rẻ hơn, người ta sẽ không cần đến những "bộ thí nghiệm" nữa, mà người ta chơi luôn "đồ thiệt".

Một vài ý trao đổi vậy.

KẾT LUẬN:
- Cần cái gì, tập trung vào giải quyết cái đó, đừng phân tích quá xa và yêu cầu cái platform quá phức tạp trong khi bài toán chỉ bé bằng con muỗi.
- Cái gì càng chuyên biệt, càng tốn tiền. Càng phụ thuộc, càng tốn tiền. Thấy rằng anh Hùng cứ đi kiếm mấy cái tools "chuẩn", nhìn vào thì rất ghê, nhưng anh càng kiếm theo hướng đó, anh càng mất đi sự lựa chọn, và anh càng tốn kém tiền để trả cho nó hơn.
- Bài toán của anh chỉ là cái bảng điều khiển, trong đó bọn nó cần là mô tả trên máy tính, sau đó đổ dữ liệu xuống target board (đừng nói là target PC có khi hiểu lầm), thì thực tế ra Matlab vẫn cho lập trình giao tiếp và truyền nhận dữ liệu. Anh có thể lập trình bằng ngôn ngữ khác để thực hiện thuật toán và truyền nhận dữ liệu mà anh cũng đã dự định làm bằng Visual .NET rồi đấy thôi. Thậm chí anh lập trình web rồi cho học viên của anh mỗi người một máy đăng nhập vào, rồi tự mô phỏng, rồi tự sinh code, rồi tự truyền xuống bo target, rồi xem "1" hệ thống duy nhất chạy và so sánh cả lớp với nhau, vì lúc đó học viên chỉ ngồi trên máy, vào web browser tạo thuật toán điều khiển, và xem cùng một cái phần cứng chạy, ai làm tốt hơn ai, đều có thể thấy "bằng mắt".
- Những cái kiểu như thế này, MATLAB và LABVIEW có mà chục năm sau cũng không làm được, tại nếu làm được thế thì nó lấy đâu ra nó bán hàng chục phiên bản cho máy sinh viên nữa, nó chỉ còn bán được có 1 bản cho máy của thầy. Nó ko làm vậy đâu, vậy anh có thể làm kiểu này để bán cho trường .

Chúc vui
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-08-2009, 11:40 PM   #7
HaiAu2005
Đệ tử 9 túi
 
Tham gia ngày: May 2006
Bài gửi: 150
:
Trên thế giới có nhiều hãng có các giải pháp & sản phẩm khác nhau. Tôi cho rằng sản phẩm của mỗi hãng có những ưu nhược điểm khác nhau, ai sử dụng quen cái nào thì thích dùng cái đó thôi. Mỗi giải pháp cũng đều có ưu nhược điểm: ví dụ như nếu ngôn ngữ lập trình bậc thấp thì giá rẻ, đòi hỏi người lập trình phải "mày mò" mất nhiều thời gian và công sức thì mới làm được, còn ngôn ngữ lập trình bậc cao thì giá đắt nhưng đòi hỏi người dùng ít phải hiểu về nó hơn mà vẫn làm được. Tôi nghĩ rằng không thể có một thứ nào có đầy đủ toàn các mặt tốt cả. LabVIEW, MATLAB/Simulink cùng các Toolboxes khác nhau cũng vậy, và cả 20SIM chắc cũng có mặt mạnh mặt yếu. Ngoài ra còn vô vàn các hãng khác nữa họ đều có những sản phẩm có đặc thù riêng của họ cả.

Đứng trên quan điểm người sử dụng, tôi chưa dùng những giao tiếp dữ liệu dùng PIC để chạy các chương trình điều khiển. Chỉ biết ưu điểm của nó là rẻ so với những sản phẩm khác. Theo Falleap nói chuyện thì những ứng dụng dùng PIC tương tự như Embedded PC (hoặc cũng có thể gọi single-board computer) của hãng Rabbit Semiconductors:

http://www.rabbit.com/

Loại mới nhất dường như là series BL4S2xx:

http://www.rabbit.com/products/bl4s200/

Chạy cái này bằng Dynamic C (cũng là ngôn ngữ C nhưng rất khác với ANSI C) qua cổng RS-232 và Ethernet. Tôi đã có dịp dùng thử một loại embedded PC này, bảng cũ hơn chút là bảng RL2100, chạy bằng Dynamic C qua cổng RS-232 nhưng không có cách nào có thể lập trình có giao diện tốt được và cũng không có cách nào lập trình để lưu dữ liệu vào files trên máy chủ được. Vào mạng của Rabbit tham khảo thông tin về loại này cho thấy rằng chạy RL2100 bằng Dynamic C qua cổng RS-232 không có khả năng lưu dữ liệu vào files, mà phải tìm giải pháp khác: kết nối embedded PC và máy chủ bằng RS-232 và Ethernet, rồi chạy Dynamic C load chương trình vào RL2100 (đại khái tôi hiểu giống như nạp phần mềm cho cái thằng embedded PC chạy và liên kết với máy chủ), sau đó chạy chương trình LabVIEW để giao tiếp lưu dữ liệu (Rabbit có cung cấp chương trình LabVIEW mẫu). Lập trình và giải pháp lưu dữ liệu vào files khá phức tạp (sinh viên không chuyên về lập trình và giao tiếp dữ liệu bó tay luôn!)

Bài toán về cái bảng giao diện USB ở Lab cho thiết bị thí nghiệm là bài toán nhỏ như con kiến bé như cái kim: 1. chấp nhận phần mềm của hãng sản xuất, 2. tôi có thể giải quyết thay thế được bằng những thứ có sẵn ở Lab (dùng LabVIEW và MATLAB/Simulink). Khi đem trao đổi tôi chỉ muốn tận dụng cái bảng giao diện USB (cùng với 1 cái máy desktop PC to dùng chỉ dùng chạy cái chương trình phần mềm của hãng sản xuất thấy hơi phí!) và nếu có được giải pháp đơn giản thì có thể để cho sinh viên làm và chạy thử.

Còn bài toán cho giải pháp giao diện giữa host PC và target PC (dùng loại PC có đầy đủ chức năng như một PC thường, có hệ điều hành, và có đầy đủ các cổng giao tiếp -> mô hình tầu nho nhỏ nhưng cũng có chiều dài tới gần 1 mét, chiều rộng 30-50 cm đủ chỗ chứa cả cục PC\104 - cũng vừa là khối lượng dằn mô hình luôn vì phải xếp thêm mấy cục nặng vào nữa để cho mô hình tầu cân bằng khi thả trong nước) là bài toán lớn hơn và cũng dùng cho mục đích cho việc điều khiển phương tiện ngầm. Nếu R&D của Falleap mà "chơi" được & muốn "chơi" thì vào địa chỉ sau xem thử:

http://www.dieukhien.net/vn/discuss....2983&pagenum=1

Một trong những vấn đề cần giải quyết của bài toán trình bày ở link trên là giải pháp giao tiếp dữ liệu và điều khiển cho cái chân vịt biến bước trước, sau đó là thử nghiệm để đo và ước lượng các lực do chân vịt tạo ra, và tiếp đến là ứng dụng chân vịt này cho phương tiện ngầm không người lái (Autonomous Underwater Vehicles). Đại khái bài toán này có từng giai đoạn:

1. Giai đoạn 1: Kiểm nghiệm đánh giá đặc tính chân vịt: cần giao tiếp truyền dữ liệu giữa máy tính chủ và máy tính nhúng (hiện tại dùng RL2100) và phát triển chương trình điều khiển phát, thu nhận và lưu dữ liệu từ các sensors và thiết bị đo lực mô men. Yêu cầu của thiết bị truyền dữ liệu là gọn nhẹ, và kết nối qua cổng Ethernet, có thể lập trình dễ dàng (cho những người không rành mấy về lập trình) và có giao diện tốt, lưu được dữ liệu vào máy tính chủ. Như trong hình vẽ, bao gồm cả việc điều khiển động cơ không chổi than, động cơ bước, các sensors chính là đo độ dịch chuyển (displacement), và tốc độ động cơ, góc quay động cơ, sensors đo lực và mô men. Hiện tại cái chân vịt này được điều khiển bằng Rabbit RL2100 chạy bằng Dynamic C >> tôi muốn chuyển sang ngôn ngữ lập trình khác, e.g. LabVIEW, để sinh viên không rành mấy về lập trình có thể dùng được.

2. Giai đoạn 2: Thiết kế thí nghiệm và tiến hành thí nghiệm tại bể thử, mô hình hóa dựa trên kết quả thu được > đánh giá đặc tính chân vịt.

3. Giai đoạn 3 & các giai đoạn tiếp theo: Thiết kế phương tiện ngầm và hệ điều khiển cho nó ... tiếp tục cần giải pháp điều khiển và truyền dữ liệu > mục tiêu cuối cùng như trong Hình 2 trong link trên, nghĩa là lập trình trên máy chủ, rồi tải xuống máy mục tiêu rồi ngắt máy chủ ra khỏi máy mục tiêu, cho vận hành AUV bằng máy mục tiêu gắn trên AUV.

Liệu R&D của Falleap (hoặc bác bqviet) "chơi" được thì cho biết. Rất có thể sẽ có giải pháp nào đó và giải pháp này sẽ có thể ứng dụng cho dự án tôi đang làm này, và cũng có thể thực hiện được ở VN vì tại VN hiện đang có nhu cầu về phương tiện ngầm và hệ điều khiển phương tiện ngầm, tầu lặn dùng cho khách du lịch. Nếu Falleap thấy có giải pháp nào đó thì thử phác thảo một số điểm xem sao.

Hải Âu

thay đổi nội dung bởi: HaiAu2005, 30-08-2009 lúc 02:00 AM.
HaiAu2005 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-08-2009, 03:19 AM   #8
HaiAu2005
Đệ tử 9 túi
 
Tham gia ngày: May 2006
Bài gửi: 150
:
Trong trao đổi ở link trên:

Trích:
Nguyên văn bởi bqviet View Post
Nếu hãng không cho cũng chả bán, anh thử xem bo mạch có nằm trong danh mục thiết bị hỗ trợ của thư viện Comedi này hay không: http://www.comedi.org/ Comedi là bộ thư viện hỗ trợ lập trình cho các bo mạch vào/ra tín hiệu, số lượng phần cứng nó hỗ trợ phải nói là khổng lồ, tuy nhiên chỉ chạy với Linux.
Tôi đã xem thông tin về RTAI và Comedi, thấy dùng được với các bảng giao diện tôi có ở Lab. Chỉ cần một cái máy tính chạy Linux là có vẻ ổn. Hôm nào rảnh rỗi có thể sẽ "chơi" một cái máy tính chạy Linux và mần thử xem sao!

Hải Âu
HaiAu2005 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-08-2009, 09:56 AM   #9
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Em thề với anh là một cậu sinh viên vừa tốt nghiệp đại học nào cũng có thể lập trình được cái này (tốt nghiệp thực sự có chất ấy, không nhất thiết điểm cao). Toàn bộ các phần vào ra anh cần hầu hết đều rất đơn giản.

Phần khó nhất là phần thuật toán điều khiển, phần này thì cứ các đồng chí thạc sĩ, tiến sĩ, sau khi nghiên cứu xong, thì vứt thuật toán lại. Không kể PIC mà bất kể loại vi điều khiển nào cũng làm được (đảm bảo dung lượng tí, và tốc độ tính toán).

Như vậy, toàn bộ cái phần này không hề khó như anh nghĩ đâu, chẳng qua anh tiếp cận từ điều khiển vào đây, cho nên anh nghĩ nó quá khó, em thì tiếp cận các vấn đề kiểu này từ cả điện tử và điều khiển, nên dám chắc với anh là nó không khó như anh nghĩ.

Chi phí setup cho một cái "chơi" là 500$ - 700$/tháng (ngang với các công ty outsourcing cho Nhật). Hoàn toàn là có thể làm được. Vấn đề bây giờ là người ta có muốn "chơi" hay không.

Với bài toán này, anh nên nhận một cậu sinh viên Cơ Điện Tử (hoặc Tin học công nghiệp, hoặc Tự động hóa) để làm thực tập, làm mỗi tháng anh trả khoảng 50 - 100$, tương đương 1-2M. Làm khoảng 6 tháng - 1 năm, vừa hướng dẫn cậu này, vừa đào tạo con người cho nhóm nghiên cứu ở VN của anh,...

Em nghĩ cách này là hay nhất cho mô hình của anh. Nếu có người chịu trách nhiệm thiết kế cái này, và anh trả lương, R&P sẵn sàng cho cậu này tới ngồi ở R&P để thực tập (R&P không trả lương, và R&P sẽ không tính chi phí chỗ ngồi là 2.5M/tháng). Cần kỹ thuật hay source code gì R&P cũng hỗ trợ hết, không có gì phải giấu. Làm xong cái này, anh chỉ cần ghi nhận sự đóng góp của R&P là xong.

Chúc vui
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-08-2009, 11:05 AM   #10
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
À, còn một điều nữa nếu anh muốn R&P hỗ trợ, đó là nghiên cứu này phải được công bố là thiết kế tại Việt Nam, đối với phần máy tính nhúng này (nếu muốn R&P có thể cho mở mã nguồn tại VN). Tuyệt đối không được công bố nó là thiết kế của nước ngoài, hay của anh (với tư cách là giảng viên của trường đại học Úc).

Chúc vui
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-08-2009, 04:33 PM   #11
HaiAu2005
Đệ tử 9 túi
 
Tham gia ngày: May 2006
Bài gửi: 150
:
Để giải bài toán này tôi không yêu cầu phần thuật toán điều khiển > phần này để sinh viên làm nghiên cứu tự giải quyết bằng các thuật toán điều khiển khác nhau, mà chỉ yêu cầu phần giao tiếp dữ liệu vào ra. OK, tạm ghi nhận những trao đổi của Falleaf là R&D có thể làm được bằng việc sử dụng PIC và sẽ trao đổi chi tiết hơn về một số những yêu cầu cụ thể.

Tôi nghĩ việc này sẽ làm trọn gói (nghĩa là giao hàng giao tiền) hơn là việc trả lương theo tháng vì giải pháp giao tiếp dữ liệu cho bài toán điều khiển trên không phải là không có (e.g. tạm thời trong giai đoạn này thì cần một bảng giao diện của National Instruments và LabVIEW là đủ, thay cho cái RL2100 và Dynamic C, hoặc thậm chí vẫn có thể sử dụng cái RL2100 cùng với LabVIEW để chạy chương trình điều khiển và lưu được dữ liệu như mong muốn), mà là tôi cần một giải pháp khác sử dụng PIC (có thể đọc trao đổi ở link trên tôi viết trong một văn cảnh khác nên Falleaf có thể hiểu nhầm) để giúp sinh viên có thể giải quyết bài toán điều khiển theo các hướng khác nhau > đồng thời giải pháp này sẽ là giải pháp cho một anh bạn ở VN có nhu cầu phát triển hệ điều khiển cho phương tiện ngầm/tầu lặn sử dụng những thứ có ở VN.

Tất yếu khi thực hiện sẽ phải có một số những quy định cụ thể và kết quả công bố cần được thỏa thuận khi bắt đầu thực hiện dự án.

Hải Âu

thay đổi nội dung bởi: HaiAu2005, 30-08-2009 lúc 08:05 PM.
HaiAu2005 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-08-2009, 09:03 PM   #12
HaiAu2005
Đệ tử 9 túi
 
Tham gia ngày: May 2006
Bài gửi: 150
:
Để phát triển những ứng dụng thởi gian thực, các phần mềm (commercial) như MATLAB/Simulink cùng các Toolboxes, LabVIEW và các Modules kèm theo không rẻ (cho dù là mua chúng dùng ở trường học với giá "mềm") và thiết bị thí nghiệm chuyên dụng cũng không rẻ, sinh viên không tự mình trang trải được, cần phải có sự hỗ trợ của trường học. Tôi nghĩ giải pháp cho sinh viên ngoài việc trường học trang bị các phòng thí nghiệm có những thiết bị cơ bản ra thì thày trò viên có thể tìm thêm những giải pháp khác.

Giải pháp dùng mã nguồn mở là một hướng tốt > tuy nhiên hướng này đòi hỏi người dùng phải có những kỹ năng lập trình ở mức độ nhất định. Câu hỏi đặt ra là:

1. Cần bao nhiêu thời gian để đào tạo một người (từ kỹ năng lập trình & kiến thức về điện/điện tử v.v... từ zero) có thể sử dụng các chương trình mã nguồn mở để có thể phát triển thành các chương trình ứng dụng cho mình?

2. Sử dụng mã nguồn mở sẽ có thể tạo ra nhiều hướng phát triển khác nhau, vậy làm thế nào để có thể tạo ra các sản phẩm chuẩn cho các ứng dụng trong công nghiệp (nghĩa là các sản phẩm của hãng này phải lắp ghép được với sản phẩm của hãng khác)?

Các bạn quan tâm hãy tiếp tục trao đổi.

Hải Âu

thay đổi nội dung bởi: HaiAu2005, 30-08-2009 lúc 09:32 PM.
HaiAu2005 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-08-2009, 12:24 PM   #13
bqviet
PIC Bang chủ
 
Tham gia ngày: Jul 2007
Bài gửi: 43
:
Trích:
Nguyên văn bởi HaiAu2005 View Post
Để phát triển những ứng dụng thởi gian thực, các phần mềm (commercial) như MATLAB/Simulink cùng các Toolboxes, LabVIEW và các Modules kèm theo không rẻ (cho dù là mua chúng dùng ở trường học với giá "mềm") và thiết bị thí nghiệm chuyên dụng cũng không rẻ, sinh viên không tự mình trang trải được, cần phải có sự hỗ trợ của trường học. Tôi nghĩ giải pháp cho sinh viên ngoài việc trường học trang bị các phòng thí nghiệm có những thiết bị cơ bản ra thì thày trò viên có thể tìm thêm những giải pháp khác.

Giải pháp dùng mã nguồn mở là một hướng tốt > tuy nhiên hướng này đòi hỏi người dùng phải có những kỹ năng lập trình ở mức độ nhất định. Câu hỏi đặt ra là:

1. Cần bao nhiêu thời gian để đào tạo một người (từ kỹ năng lập trình & kiến thức về điện/điện tử v.v... từ zero) có thể sử dụng các chương trình mã nguồn mở để có thể phát triển thành các chương trình ứng dụng cho mình?

2. Sử dụng mã nguồn mở sẽ có thể tạo ra nhiều hướng phát triển khác nhau, vậy làm thế nào để có thể tạo ra các sản phẩm chuẩn cho các ứng dụng trong công nghiệp (nghĩa là các sản phẩm của hãng này phải lắp ghép được với sản phẩm của hãng khác)?

Các bạn quan tâm hãy tiếp tục trao đổi.

Hải Âu

Theo kinh nghiệm của bqviet đào tạo vài nhóm trước đây để làm điện tàu (0) giả thiết rằng nhóm đó đã tốt nghiệp ĐHBK hoặc tương đương ngành điện cỡ trung bình khá trở lên; (1) trả lương tương ứng mức kỹ sư trên thị trường, chứ không phải mức ở trường học; (2) nhóm từ 2 tới 5 người; (3) đầy đủ tài liệu, thiết bị và linh kiện thực hành - nói chung là điều kiện cơ bản đủ; (4) người đào tạo mất khoảng 4 giờ toàn thời mỗi ngày để đào tạo và tư vấn suốt cả ngày; thì trung bình một người sẽ mất cỡ 5 tháng để bắt đầu làm việc được và 18 tháng để làm được việc - hiểu theo nghĩa bắt đầu có lợi cho nhóm làm việc. Kiến thức bao gồm: hiểu rõ bài toán và biết mình phải làm gì, làm điện tử phần cứng ở mức độ cơ bản, lập trình nhúng cho vi điều khiển hoặc lập trình C++ (chỉ 1 trong 2 cái này thôi, thông thường lập trình C++ đào tạo lâu hơn).

Cái khái niệm "chuẩn" ở đây khá là "mờ". Thông thường chẳng có hãng nào muốn tuân thủ chuẩn, họ LUÔN muốn đưa ra cái gọi là chuẩn của riêng họ để lần sau khách hàng chỉ mua sản phẩm của họ mà thôi. Hiện tượng này gọi là lock-in khách hàng và anh đừng huyễn hoặc rằng đó là chuẩn quốc tế, dù cho nó thông dụng bao nhiêu đi chăng nữa.

Đã là chuẩn quốc tế thì nó phải được ban hành bởi một tổ chức quốc tế phi lợi nhuận, kiểu như IEC, IEEE, ANSI, ISO, W3C ... Điều duy nhất khiến cách hãng sản xuất tuân thủ chuẩn quốc tế là vì chuẩn đó đã được chấp nhận rộng rãi và nếu không tuân thủ thì không bán được hàng. Nhưng ngay cả khi tuân thủ chuẩn quốc tế, hãng sản xuất vẫn tìm cách này khác để đưa thêm phần mở rộng của họ, cài cắm theo một cách này hay cách khác.

Trái với quan niệm thông thường rằng phần mềm tự do thì phát triển tự do không kiểm soát, cộng đồng này thực tế luôn luôn tuân thủ chuẩn quốc tế ở mức tối đa. Ví dụ Firefox và Konqueror tuân thủ tất cả các chuẩn và thỏa mãn tất cả các bài test của tổ chức W3C, trong khi Internet Explorer thì không, và tới tận bây giờ bản IE8 vẫn chưa hỗ trợ đầy đủ JavaScript, chưa hỗ trợ SVG một chút nào và còn nhiều bài test chưa qua. Chi tiết có thể tham khảo từ đây http://www.w3.org/ Tương tự, Linux tuân thủ hoàn toàn The single Unix specification (http://opengroup.org/onlinepubs/007908799/) cũng như bộ chuẩn POSIX (http://en.wikipedia.org/wiki/POSIX), trong khi WinNT và các thế hệ Windows sau mặc dù nói rằng có tuân theo POSIX nhưng thực ra không thực hiện hết. Sản phẩm của hãng Sixnet (sản xuất tại Mỹ) tuân theo chuẩn truyền thông Modbus (http://www.modbus.org/) chạy hoàn toàn bình thường với phần mềm của một ông kỹ sư vô danh tại Vinashin Electric cách nửa vòng trái đất, dù rằng trước đó ông này chưa từng sờ một lần nào vào thiết bị Sixnet. Hãng Microsoft mặc dù rất lớn và từ lâu đã cố muốn đưa định dạng DOC làm chuẩn của web và tài liệu điện tử nhưng đâu có thành công ? HTML, XML và PDF mới là chuẩn chính thức, cũng là chuẩn de-factor.

Trên đây là một vài ví dụ dù chưa nhiều, nhưng vẫn tạm chứng minh rằng, chừng nào chúng ta tuân theo cái đúng là chuẩn quốc tế thì các sản phẩm tạo ra vẫn làm việc được với nhau và với các nhà sản xuất trên toàn thế giới.
bqviet vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-08-2009, 12:32 PM   #14
bqviet
PIC Bang chủ
 
Tham gia ngày: Jul 2007
Bài gửi: 43
:
Trích:
Nguyên văn bởi HaiAu2005 View Post
Để giải bài toán này tôi không yêu cầu phần thuật toán điều khiển > phần này để sinh viên làm nghiên cứu tự giải quyết bằng các thuật toán điều khiển khác nhau, mà chỉ yêu cầu phần giao tiếp dữ liệu vào ra. OK, tạm ghi nhận những trao đổi của Falleaf là R&D có thể làm được bằng việc sử dụng PIC và sẽ trao đổi chi tiết hơn về một số những yêu cầu cụ thể.

Tôi nghĩ việc này sẽ làm trọn gói (nghĩa là giao hàng giao tiền) hơn là việc trả lương theo tháng vì giải pháp giao tiếp dữ liệu cho bài toán điều khiển trên không phải là không có (e.g. tạm thời trong giai đoạn này thì cần một bảng giao diện của National Instruments và LabVIEW là đủ, thay cho cái RL2100 và Dynamic C, hoặc thậm chí vẫn có thể sử dụng cái RL2100 cùng với LabVIEW để chạy chương trình điều khiển và lưu được dữ liệu như mong muốn), mà là tôi cần một giải pháp khác sử dụng PIC (có thể đọc trao đổi ở link trên tôi viết trong một văn cảnh khác nên Falleaf có thể hiểu nhầm) để giúp sinh viên có thể giải quyết bài toán điều khiển theo các hướng khác nhau > đồng thời giải pháp này sẽ là giải pháp cho một anh bạn ở VN có nhu cầu phát triển hệ điều khiển cho phương tiện ngầm/tầu lặn sử dụng những thứ có ở VN.

Tất yếu khi thực hiện sẽ phải có một số những quy định cụ thể và kết quả công bố cần được thỏa thuận khi bắt đầu thực hiện dự án.

Hải Âu

Còn một hướng khác xin mạo muội đề xuất là đặt hàng từ công ty Vinashin Electric. Bên VE khó có thể cạnh tranh về giá với các bạn sinh viên, nhưng (1) đây là một doanh nghiệp, (2) thời gian sẽ ngắn hơn nhiều, ví dụ thiết kế từ đầu một I/O card phức tạp chỉ cỡ 2 tuần, dùng thiết kế có từ trước ? 2 ngảy; (3) sản phẩm tự chế tạo của VE đã có mặt trên nhiều tàu thủy, nhà máy xi măng ở Quảng Bình, cả trăm xe tăng T54 ... (4) phần nào VE không thiết kế chế tạo, vẫn còn bộ phận kinh doanh hàng nhập.
bqviet vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-08-2009, 07:26 PM   #15
HaiAu2005
Đệ tử 9 túi
 
Tham gia ngày: May 2006
Bài gửi: 150
:
Những ý kiến của bác bqviet rất hay. Như trao đổi của bác thì để đào tạo một kỹ sư lập trình nhúng và làm được những thứ liên quan đến việc phát triển thiết bị sử dụng mã nguồn mở mất khá nhiều thời gian. Tôi xin đặt thêm câu hỏi để chúng ta tiếp tục trao đổi thêm:

Vậy theo các bác (những người sử dụng nguồn nhân lực như bác bqviet chẳng hạn) thì các bác có kỳ vọng gì về các trường đại học và chương trình đào tạo cho các chuyên ngành mà các bác muốn tuyển dụng?

HA
HaiAu2005 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


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à 01:52 AM.


Đượ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