Thông báo

Collapse
No announcement yet.

CAN(Controller Area Network)

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

  • #46
    Nguyên văn bởi thaithutrang
    Nhưng:
    -RS485 đụng độ cũng ko sao. Ko gây nguy hại đến phần cứng. Ví dụ trên đường truyền, hai thiết bị cùng truyền tại một thời điểm. Về điểm này hai chuẩn mức đều như nhau.
    -Do có kiểu Push-pull,nên 485 sẽ ít nhiễu và được đánh giá cao hơn, khả năng kháng nhiễu cũng cao hơn(cũng như FSK và ASK),bằng chứng: khoảng cách truyền xa hơn.
    -Về điều khiển thì IC driver CAN ko có chân hướng. Phần cứng đơn giản hơn tý tẹo.
    Trong mang RS485 nếu có N điểm và, và có 2 đường output đồng thời thì chuyện gì sẽ xảy ra.
    Tương tự trong mạng CAN... Suy nghĩ về vấn đề này xem.

    Một vấn đề khác biệt nữa là vấn đề protocol. Vì CAN định nghĩa phương pháp CSMA-CD, cái này nên Receiver của nó phải tương thích với protocol. Còn trong mạng RS485 thường áp dụng các giao thức Control Flow kiểu khác như Master - Slave hoặc Token Ring...
    Last edited by qmk; 10-01-2006, 10:29.
    Vẫn biết mỗi lần xa là một lần về lại...

    Comment


    • #47
      Không thể so như FSK với ASK được. So vậy không chính xác. Vì trong sóng ngắn AM dùng truyền xa hơn FM.
      Như đã nói ở trên vấn đề ưu nhược điểm không chỉ xét phần cứng đơn giản hơn một tẹo hay không mà còn xét trên các khía cạnh protocol nữa. Nói chung là không cần so sánh nhiều. Giờ mà tranh luận lại xem Master-Slave, Token Ring với CSMA-CD cái nào tốt hơn... Cái này người ta tranh luận nhiều rồi.
      CAN được phát minh trong công nghiệp ô tô, mà mạng nội bộ một cái xe gì đến 1000m.
      Số node thêm vào của CAN hình như khá lớn. Nhưng lưu lượng mạng thì không lớn lắm.
      Còn RS485 dùng cho điều khiển quá trình. Cho nên vấn đề khoảng cách, tốc độ và nhiễu được quan tâm hơn. Nó còn dính đến lịch sử nữa.

      Giờ theo phương pháp trong appnote em dùng drivers RS485 để thử CAN được rồi. Không cần phải xin xỏ ai nữa (nhưng mà ai cho thì cứ lấy nhé).
      Vẫn biết mỗi lần xa là một lần về lại...

      Comment


      • #48
        Nguyên văn bởi qmk
        Trong mang RS485 nếu có N điểm và, và có 2 đường output đồng thời thì chuyện gì sẽ xảy ra.
        Tương tự trong mạng CAN... Suy nghĩ về vấn đề này xem.
        Vấn đề này cũng dễ hiểu thôi, CAN là "open colecter" và "open emitter" nên phần cứng xung đột ko một mảy may gì cả(Khi >=2 node cùng phát).
        Còn RS485 nếu xung đột(>=2 node cùng phát) thì sẽ làm cho mức tiêu thụ điện tăng cao, gây ít nhiều nhiễu cho thiết bị khác. Nhưng bản thân trong nó có Protect vấn đề này, nên sẽ ko bị hỏng phần cứng của chính nó.

        Có lẽ do phần Protocol như anh nói là nguyên nhân chủ yếu.

        Còn về điêu chế ASK và FSK(cùng 1 tần số) trên dây dẫn thì FSK đi xa hơn. Bởi FSK khi truyền thì luôn được điều chế(luôn push-pull) còn ASK thì khi truyền bit 0 sẽ kiểu thả nổi( gần tương đương với CAN khi truyền mức 0). Bởi vậy em so sánh có một ý nhỏ đó

        Comment


        • #49
          Nếu em có thời gian thì khỏi cần IC support can kiếm đâu cái CAN LIB nhúng trên con bất kỳ xem. Lúc đấy sẽ học được nhiều thứ hơn. Ví dụ như sinh số ngẫu nhiên chẳng hạn.
          Vẫn biết mỗi lần xa là một lần về lại...

          Comment


          • #50
            1.1.1 Một vài vấn đề căn bản về CAN trước khi đi vào ứng dụng thực tế

            1.1.1 Một vài vấn đề căn bản về CAN trước khi đi vào ứng dụng thực tế

            Dữ liệu được gửi đi trong những FRAME được bắt đầu bằng START bit (giống như RS232 data). Định dạng (dưới dạng rút gọn) như trong hình dưới: (data-link protocol)


            (image002.jpg)

            Trong protocol này, bít 1 và bít 0 được thay thế bằng “recessive” (xin mượn từ trong sinh học là “lặn”) và “dominate” (“trội”). (Tại sao có sự thay đổi này thì sẽ được thảo luận sau). Chúng ta sẽ mô tả định dạng CAN dưới dạng định dạng RS232:
            1. Start bit: cả hai (CAN và RS232) đều dùng 1 start bít.
            2. Data: RS232 dùng từ 5 đến 8 bít <> CAN dùng 0 đến 8 byte.
            3. Error: RS232 có thể dùng 1 parity bít <> CAN dùng chuỗi 15 bit CRC
            4. End: RS232 dùng 1 hoặc 2 bít <> CAN dùng 7 (hoặc cộng thêm hơn 3 bít nữa)
            Thêm vào đó:
            5. CAN có số data bít (byte) thay đổi được, được mô tả bằng 4 bít đánh đấu. Data byte theo sau các bít đánh dấu này.
            6. CAN có một IDENTIFIER (bộ nhận dạng) (gồm 11 bít) để cho biết data từ đâu đến.
            7. RTR, IDE và r0 luôn là zero trong data frame, ACK sẽ được giải thích sau.
            8. CAN dùng mã hoá RLL lên đến 5 bít, không bao gồm CRC. RS232 có quá ít bít nên không cần đến điều này. RLL được định nghĩa là: “sau 5 bít có cùng mức logic sẽ chèn vào một bít có mức logic ngược lại (ví dụ: chèn vào 1 bít 0 sau 5 bít 1).

            Bây giờ chúng ta xem xét đến khái niệm “trội - dominant” và “lặn - recessive”. Không như trong RS232 dữ liệu được truyền thông qua một đường dây và đất, CAN sử dụng ngõ ra kéo đẩy chạy trên cáp xoắn. Để gửi 1 bít “trội” cả hai transistor được mở để TX0 xuống 0 và TX1 lên 1. Để gửi một bít “lặn” cả 2 transistor được tắt để TX1 xuống 0 và TX0 lên 1.


            (image004.jpg)

            Có 2 lý do cho cách làm này. Thứ nhất là mạng CAN được Bosch phát triển từ Đức để dùng trong xe vận tải, và hiện nay đã được tiêu chuẩn hoá để sử dụng. Xe vận tải là kẻ thù của tín hiệu truyền thông và cặp cáp xoắn cân bằng sẽ giúp giảm thiểu vấn đề nhiễu. Thêm vào đó CAN không phải là nghi thức truyền thông điểm – điểm như RS232. Nó là một mạng CSMA-CR – “Carrier Sense, Multiple Access, with Collision Resolution”.

            Ngoài 2 nút ở đầu và cuối của cáp còn có (nhiều) những nút nằm dọc theo cáp.


            (image006.jpg)

            Với hệ thống đa nút, một mạng đa truy cập là cần thiết. Khi cả 2 nút không thể truyền dữ liệu cùng lúc thì mỗi nút phải hiểu điều đó (Carrier Sense). Trong trường hợp này, khi một RLL của 5 được dùng, 7 “stop” bít phát ra “no carrier” và việc truyền tin OK.
            Nếu 2 nút bắt đầu cùng lúc thì chuyện gì sẽ sảy ra ? Giả sử 1 nút có ID là 0x340 và nút kia là 0x30E bắt đầu phát đi cùng lúc.
            Khi bít ID thứ 3 được gửi, nút 0x340 gửi 1 bít “lặn” và nút 0x30E gửi một bít “trội”, bít trội sẽ lấn át bít “lặn”. Nút 0x30E không thể biết được chuyện gì đã xảy ra nhưng bộ thu của nút 0x340 sẽ nhận thấy bít trội và biết rằng có một nút khác cũng đang truyền. Do đó nó sẽ ngắt kết nối mạng và cho phép nút kia tiếp tục truyền.


            (image008.jpg)

            Chúng ta có thể nói một nút đang truyền dữ liệu, nhưng nút nào sẽ nhận nó ? Nó đã được nhận hay chưa ? Dữ liệu đã được gửi cả chưa ?
            Có một loại FRAME khác bên cạnh DATA FRAME. Một REMOTE frame giống như DATA frame, ngoại trừ:
            1. Không có data bít được truyền đi.
            2. Bít RTR được truyền lặn.
            3. Số ID của nút phải cung cấp data.


            (image010.jpg)

            Nếu nút 0x340 muốn data từ nút 0x304, nó gửi REMOTE frame với địa chỉ 0x304. Nút 0x304 đáp ứng lại bằng cách gửi DATA frame theo địa chỉ 0x304. Bất cứ một nút khác muốn có dữ liệu từ 0x304 cũng có thể nhận được nó.
            Dữ liệu đã được nhận chưa ? Theo hình ở đầu bài. 2 bít gần cuối là cho ACKnowledge. Nút gửi dữ liệu sẽ gửi cả 2 bít passive. Một nút nhận dữ liệu có thể nhận thấy điều này và biết rằng (ít nhất) có một nút đã nhận thông điệp.

            ------------------------------
            (thanks B.A đã edit dùm )
            Last edited by itek; 11-01-2006, 09:21.

            Comment


            • #51
              Hoan hô Itek viết rất hay !
              Các bạn Trang chưa có kiến thức cơ bản về mạng thì phải ??? bạn thường nhần lẫn giữa các phương pháp điều chế tín hiệu và giao thức.FSK hay ASK là phương pháp mã hóa tín hiệu !!!
              (Bạn nên đọc lại bài viết của bạn Itek)
              Và nên đọc lại sách cơ bản về mạng đi !!!
              Nếu là SV BK HN có quyển Data for comunication rất cơ bản về mạng (Là quyển đầu tiên tôi học về mạng-được thầy giới thiệt đó) ở trên thư viện trường.

              Comment


              • #52
                Nguyên văn bởi vutricongbka
                Hoan hô Itek viết rất hay !
                Các bạn Trang chưa có kiến thức cơ bản về mạng thì phải ??? bạn thường nhần lẫn giữa các phương pháp điều chế tín hiệu và giao thức.FSK hay ASK là phương pháp mã hóa tín hiệu !!!
                (Bạn nên đọc lại bài viết của bạn Itek)
                Và nên đọc lại sách cơ bản về mạng đi !!!
                Nếu là SV BK HN có quyển Data for comunication rất cơ bản về mạng (Là quyển đầu tiên tôi học về mạng-được thầy giới thiệt đó) ở trên thư viện trường.
                Lại thêm một vụ coi thường con gái, bạn đọc kỹ mà cố hiểu cái ý sâu sắc mình nói. Nhất là chỗ FSK và ASK, vì bạn chưa làm nên ko hiểu cái ý mình so sánh:
                FSK------485(luôn có khi truyền).
                ASK------CAN(1 có, 0 thả nổi).
                Còn kiến thức về mạng CN, mình ko biết thì ko nói, chứ ko nói bừa.

                Comment


                • #53
                  xin lỗi nhé !!! Đắc tội !!!hì hì !!!
                  BÀi viết chỉ có mục đích khuyên chị học về giao thức mạng thôi !!!
                  Em đã nói quá lời !!!
                  Last edited by vutricongbka; 10-01-2006, 21:30.

                  Comment


                  • #54
                    Nguyên văn bởi thaithutrang
                    Nhưng:
                    -RS485 đụng độ cũng ko sao. Ko gây nguy hại đến phần cứng. Ví dụ trên đường truyền, hai thiết bị cùng truyền tại một thời điểm. Về điểm này hai chuẩn mức đều như nhau.
                    -Do có kiểu Push-pull,nên 485 sẽ ít nhiễu và được đánh giá cao hơn, khả năng kháng nhiễu cũng cao hơn(cũng như FSK và ASK),bằng chứng: khoảng cách truyền xa hơn.
                    -Về điều khiển thì IC driver CAN ko có chân hướng. Phần cứng đơn giản hơn tý tẹo.
                    Theo anh thì hình như kô phải do 485 có kiểu Push - Pull mà nó ít nhiễu và chạy xa hơn đâu. Cái căn bản giúp nó chạy xa đó là truyền điện áp đối xứng qua 2 dây + cáp đôi dây xoắn đó chứ nhỉ? Phải kô em.
                    Còn một vấn đề nữa, cái 485 Driver chỉ kích thích một mức thôi, (tương ứng mức phát) còn khi nó ở chế độ thu thì nó thả nổi 2 dây truyền thông A-B đó chứ. Có phải kô nào?
                    AFH

                    Comment


                    • #55
                      Mở đầu một vụ tranh luận mới đây.

                      Ai cũng đúng nhưng ai mới đúng ???
                      Vẫn biết mỗi lần xa là một lần về lại...

                      Comment


                      • #56
                        Đại ca qmk lại thế rồi !!!
                        Em đâu dám thế hì hì !!! chẳng qua là đạo hạnh chưa đủ để hiểu hết được những điều sâu xa mà chị ấy nói thôi !
                        Anh qmk có mạch nạp cho mấy con PLD hoặc CPLD thì cho em với !!!
                        nhớ cho em cả phần mềm nữa đấy !!!

                        Comment


                        • #57
                          Hi hi...từng câu từng câu một, câu 2 dễ trình bày hơn trả lời trước.
                          Nguyên văn bởi AFH
                          Còn một vấn đề nữa, cái 485 Driver chỉ kích thích một mức thôi, (tương ứng mức phát) còn khi nó ở chế độ thu thì nó thả nổi 2 dây truyền thông A-B đó chứ. Có phải kô nào?
                          AFH
                          Hai dây A-B ko bao giờ người ta thả nổi cả, trừ amater.
                          Phần cứng người ta có trở định thiên(chân A nối với R lên Vcc,chân B nối với R xuống GND). R thường khoảng 1K. Bởi thế ngay cả trên bus ko ai truyền thì một mức nhất định được giữ (A>B), để bắt đầu truyền(có bit start(A<B),thì các node thu đều phát hiện được). Cái này ko phải tài liệu nào cũng nói.
                          Khi nó ở chế độ thu ý anh nói là một node nào đó à? trên bus thường có một thiết bị phát và N thiết bị thu nên đường dây thường có tải.Nếu ở các khe thời gian, sẽ có thời điểm tất cả đều ko phát(cuối frame) thường là ở các khoảng timer out, thì đường dây trở về mức vốn có và xác định của nó (A>B)
                          để chờ.
                          Chú ý: các khái niệm A>B,A<B đều theo kiểu trigơsmitt.

                          Comment


                          • #58
                            Nguyên văn bởi thaithutrang
                            Hi hi...từng câu từng câu một, câu 2 dễ trình bày hơn trả lời trước.

                            Hai dây A-B ko bao giờ người ta thả nổi cả, trừ amater.
                            Phần cứng người ta có trở định thiên(chân A nối với R lên Vcc,chân B nối với R xuống GND). R thường khoảng 1K. Bởi thế ngay cả trên bus ko ai truyền thì một mức nhất định được giữ (A>B), để bắt đầu truyền(có bit start(A<B),thì các node thu đều phát hiện được). Cái này ko phải tài liệu nào cũng nói.
                            Khi nó ở chế độ thu ý anh nói là một node nào đó à? trên bus thường có một thiết bị phát và N thiết bị thu nên đường dây thường có tải.Nếu ở các khe thời gian, sẽ có thời điểm tất cả đều ko phát(cuối frame) thường là ở các khoảng timer out, thì đường dây trở về mức vốn có và xác định của nó (A>B)
                            để chờ.
                            Chú ý: các khái niệm A>B,A<B đều theo kiểu trigơsmitt.
                            Oái, vậy thì cái 485 Driver nào cũng phải có trở định thiên à? Hồi trước giờ anh phải tự nối đó, đâu có thấy nó nằm sẵn trong 485 Driver đâu? Có phải mỗi một 485 Driver thì có một cặp trở định thiên như em nói kô nhỉ?
                            À, hồi xưa học anh có nhớ là được học mấy loại Trigơ Smith, giờ kô biết em nói đến loại nào? Tại anh bị mất sách điện tử số rồi. Khổ thân anh quá.
                            AFH

                            Comment


                            • #59
                              Nguyên văn bởi AFH
                              Theo anh thì hình như kô phải do 485 có kiểu Push - Pull mà nó ít nhiễu và chạy xa hơn đâu. Cái căn bản giúp nó chạy xa đó là truyền điện áp đối xứng qua 2 dây + cáp đôi dây xoắn đó chứ nhỉ? Phải kô em.AFH
                              Cái cơ bản áp đối xứng+ cáp đôi xoắn thì là cơ bản, ta ko nói.
                              Còn Push-pull - chuẩn hóa cách gọi:kháng nhiễu cao hơn,suy hao ít hơn-->truyền xa hơn so với chỉ Push hoặc chỉ Pull.

                              Hãy tưởng tượng, nếu truyền một tín hiệu bán sin và sin đầy đủ--> cái nào tốt hơn.

                              Comment


                              • #60
                                Nguyên văn bởi AFH
                                Oái, vậy thì cái 485 Driver nào cũng phải có trở định thiên à? Hồi trước giờ anh phải tự nối đó, đâu có thấy nó nằm sẵn trong 485 Driver đâu? Có phải mỗi một 485 Driver thì có một cặp trở định thiên như em nói kô nhỉ?
                                À, hồi xưa học anh có nhớ là được học mấy loại Trigơ Smith, giờ kô biết em nói đến loại nào? Tại anh bị mất sách điện tử số rồi. Khổ thân anh quá.
                                AFH
                                Tất nhiên phải tự nối ở ngoài, anh định chối quanh à?
                                Đừng bẫy em, ko phải mỗi 1 driver cần một cặp trở định thiên
                                Về Trigơ Smith 485 để kháng nhiễu và tăng độ tin cậy. Cái này anh xem ở datasheet các con driver như max485/ds75176 sẽ rõ chứ ko cần xem lại sách.
                                (Gợi ý: Vì khi A xấp xỉ bằng B và thăng giáng nhỏ ở đó sẽ gây ra sai mức)

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X