Thông báo

Collapse
No announcement yet.

Giao thức Modbus

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

  • Giao thức Modbus

    Modbus là giao thức do hãng Modicon phát triển. Theo mô hình ISO/OSI thì Modbus thực chất là một chuẩn giao thức và dịch vụ thuộc lớp ứng dụng, vì vậy có thể được thực hiện trên các cơ chế vận chuyển cấp thấp như TCP/IP, MAP (Manufactoring Message Protocol), và ngay cả qua đường truyền nối tiếp RS-232.
    Modbus định nghĩa một tập hợp rộng các dịch vụ phục vụ trao đổi dữ liệu quá trình, dữ liệu điều khiển và chẩn đoán. Tất cả các bộ điều khiển của Modicon đều sử dụng Modbus là ngôn ngữ chung. Modbus mô tả quá trình giao tiếp giữa một bộ điều khiển với các thiết bị khác thông qua cơ chế yêu cầu/đáp ứng. Vì lý do đơn giản nên Modbus có ảnh hưởng tương đối mạnh đối với các hệ PLC của các nhà sản xuất. Cụ thể , trong mỗi PLC người ta cũng có thể tìm thấy một tập hợp con các dịch vụ đã được đưa ra trong Modbus. Đặc biệt trong các hệ thống thu thập dữ liệu và điều khiển giám sát, Modbus hay được sử dụng trên các đường truyền RS-232 ghép nối giữa các thiết bị dữ liệu đầu cuối (PLC, PC,...) với thiết bị truyền dữ liệu (Modem).
    Càng biết nhiều càng thấy mình biết ít.

  • #2
    Cơ chế giao tiếp

    Cơ chế giao tiếp ở Modbus phụ thuộc vào hệ thống truyền thông cấp thấp. Cụ thể, có thể phân chia ra hai loại mạng là Modbus chuẩn và Modbus trên các mạng khác (ví dụ TCP/IP, Modbus Plus, MAP).

    a.Mạng Modbus chuẩn

    Các cổng Modbus chuẩn trên các bộ điều khiển của Modicon cũng như một số nhà sản xuất khác sử dụng giao diện nối tiếp RS-232. Các bộ điều khiển có thể được nối mạng trực tiếp hoặc qua modem. Các trạm Modbus giao tiếp với nhau qua cơ chế chủ/ tớ (Master/Slave), trong đó chỉ một thiết bị có thể chủ động gửi yêu cầu, còn lại các thiết bị tớ sẽ đáp ứng bằng dữ liệu trả lại hoặc thực hiện một hành động nhất định theo như yêu cầu. Các thiết bị chủ thông thường là các máy tính điều khiển trung tâm và các thiết bị lập trình, trong khi các thiết bị tớ có thể là PLC hoặc các bộ điều khiển số chuyên dụng khác.
    Một trạm chủ có thể gửi thông báo yêu cầu tới riêng một trạm tớ nhất định hoặc gửi thông báo đồng loạt tới tất cả các trạm tớ. Chỉ trong trường hợp nhận được yêu cầu riêng, các trạm tớ mới gửi thông báo đáp ứng trả lại trạm chủ. Trong một thông báo yêu cầu có chứa địa chỉ trạm nhận, mã hàm dịch vụ bên nhận cần thực hiện, dữ liệu đi kèm và thông tin kiểm lỗi.

    b.Modbus trên các mạng khác

    Với một số mạng như Modbus Plus và MAP sử dụng Modbus là giao thức cho lớp ứng dụng, các thiết bị có thể giao tiếp theo cơ chế riêng của mạng đó, mỗi bộ điều khiển có thể đóng vai trò là chủ hoặc tớ trong các lần giao dịch khác nhau.
    Nhìn nhận ở mức giao tiếp thông báo, giao thức Modbus vẫn tuân theo nguyên tắc chủ/ tớ mặc dù phương pháp giao tiếp mạng cấp thấp có thể là tay đôi. Khi một bộ điều khiển gửi một yêu cầu thông báo thì nó đóng vai trò là chủ và chờ đợi đáp ứng từ thiết bị tớ. Ngược lại, một bộ điều khiển sẽ đóng vai trò là tớ nếu nó nhận thông báo yêu cầu từ một trạm khác và phải gửi trả lại đáp ứng.
    c.Chu trình yêu cầu đáp ứng
    Giao thức Modbus định nghĩa khuôn dạng của thông báo yêu cầu cũng như của thông báo đáp ứng, như minh họa trên hình vẽ.
    Một thông báo yêu cầu gồm các phần sau :
    · Địa chỉ trạm nhận yêu cầu (0-247), trong đó 0 là địa chỉ gửi đồng loạt.
    · Mã hàm gọi chỉ thị hành động trạm tớ cần thực hiện theo yêu cầu. Ví dụ, mã hàm 03 yêu cầu trạm tớ đọc nội dung các thanh ghi lưu giữ và trả lại kết quả.
    · Dữ liệu chứa các thông tin bổ sung mà trạm tớ cần cho việc thực hiện hàm được gọi. Trong trường hợp đọc thanh ghi, dữ liệu này chỉ rõ thanh ghi đầu tiên và số lượng các thanh ghi cần đọc.
    · Thông tin kiểm lỗi giúp trạm tớ kiểm tra nội dung thông báo nhận được.


    Thông báo đáp ứng cũng bao gồm các thành phần giống như thông báo yêu cầu. Địa chỉ ở đây là địa chỉ của chính trạm tớ đã thực hiện yêu cầu và gửi lại đáp ứng. Trong trường hợp bình thường, mã hàm được giữ nguyên như trong thông báo yêu cầu và dữ liệu chứa kết quả thực hiện hành động, ví dụ nội dung hoặc trạng thái các thanh ghi. Nếu xảy ra lỗi, mã hàm quay lại được sửa để chỉ thị đáp ứng là một thông báo lỗi, còn dữ liệu mô tả chi tiết lỗi đã xảy ra. Phần kiểm lỗi giúp trạm chủ xác định độ chính xác của nôi dung thông báo nhận được.
    Càng biết nhiều càng thấy mình biết ít.

    Comment


    • #3
      Chế độ truyền

      a.Chế độ ASCII

      Khi các thiết bị trong một mạng Modbus chuẩn giao tiếp với chế độ ASCII, mỗi byte trong thông báo được gửi thành hai ký tự ASCII 7 bit, trong đó mỗi ký tự biểu diễn một chữ số Hex. Ưu điểm của chế độ truyền này là nó cho phép một khoảng thời gian trống tối đa một giây giữa hai ký tự mà không gây ra lỗi. Cấu trúc một ký tự khung gửi đi được thể hiện như sau :

      Mỗi ký tự khung bao gồm :
      · 1 bit khởi đầu (Start bit)
      · 7 bit biểu diễn một chữ số hex của byte cần gửi dưới dạng kí tự ASCII (0-9 và A-F), trong đó bit thấp nhất được gửi đi trước.
      · 1 bit parity chẵn/lẻ, nếu sử dụng parity
      · 1 bit kết thúc (Stop bit) nếu sử dụng parity hoặc 2 bit kết thúc nếu không sử dụng parity.
      Càng biết nhiều càng thấy mình biết ít.

      Comment


      • #4
        Chế độ truyền (tiếp)

        Khi các thiết bị trong một mạng Modbus chuẩn được đặt chế độ RTU (Remote Terminal Unit), mỗi byte trong thông báo được gửi thành một ký tự 8 bit. Ưu điểm chính của chế độ truyền này so với chế độ ASCII là hiệu suất cao hơn. Tuy nhiên , mỗi thông báo phải được truyền thành một dòng liên tục. Cấu trúc một kí tự khung gửi đi được thể hiện như sau :

        Mỗi ký tự khung bao gồm :
        · 1 bit khởi đầu (Start bit)
        · 8 bit của byte thông báo cần gửi, trong đó bit thấp nhất được gửi đi trước
        · 1 bit parity chẵn /lẻ, nếu sử dụng parity
        1 bit kết thúc (Stop bit) nếu sử dụng parity hoặc 2 bit kết thúc nếu không sử dụng parity
        Càng biết nhiều càng thấy mình biết ít.

        Comment


        • #5
          Về lý thuyết bác ATYLA đã trình bày khá cụ thể và chi tiết. Trên thực tế, với các công cụ và phần mềm free hiện nay (OPC, HMI soft), thì việc thiết kế và chế tạo một mạng Modbus RTU chuẩn (Các SLAVE = PLC hoặc VĐK) là khả thi đối với anh em SV năm cuối.

          Comment


          • #6
            ai có tài liệu tiếng việt hướng dẫn về modbus

            tôi muốn tìm hiểu về modbus nhưng tài liệu thì toàn là tiếng anh, ai có tài liệu tiếng việt chỉ giúp
            |

            Comment


            • #7
              Cấu trúc bức điện modbus

              * Khung bức điện với chế độ truyền ASCII
              Càng biết nhiều càng thấy mình biết ít.

              Comment


              • #8
                Cấu trúc bức điện

                * Khung RTU
                Càng biết nhiều càng thấy mình biết ít.

                Comment


                • #9
                  Ví dụ khung yêu cầu dữ liệu và khung trả lời

                  * Khung ASCII :
                  - Trong một bức điện gửi giao thức Modbus (chế độ truyền ASCII) , khung thông báo bắt đầu bằng kí tự ":", tiếp đến là địa chỉ thiết bị, mã hàm, mã kiểm lỗi LRC và kết thúc bởi hai kí tự CR và LF .
                  - Bức điện trả lời ngoài các thông tin giống như bức điện gửi sẽ kèm thêm vào đó các thông tin được yêu cầu.

                  * Khung RTU :
                  - Bức điện gửi khởi đầu bằng một khoảng trống yên lặng khoảng 4 lần thời gian truyền 1 kí tự, tiếp đến là địa chỉ, mã hàm, mã kiểm lỗi CRC và cũng kết thúc bởi 1 khoảng trống yên lặng khoảng 4 lần thời gian truyền 1 kí tự.
                  - Bức điện trả lời cũng có kết cấu tương tự như với khung ASCII
                  Càng biết nhiều càng thấy mình biết ít.

                  Comment


                  • #10
                    Nguyên văn bởi ATYLA
                    * Khung RTU :
                    - Bức điện gửi khởi đầu bằng một khoảng trống yên lặng khoảng 4 lần thời gian truyền 1 kí tự, tiếp đến là địa chỉ, mã hàm, mã kiểm lỗi CRC và cũng kết thúc bởi 1 khoảng trống yên lặng khoảng 4 lần thời gian truyền 1 kí tự.
                    - Bức điện trả lời cũng có kết cấu tương tự như với khung ASCII
                    Tôi muốn hỏi cụ thể cách tính "một khoảng trống yên lặng khoảng 4 lần thời gian truyền 1 kí tự" như thế nào?

                    Comment


                    • #11
                      Rtu

                      Nguyên văn bởi tuancdc
                      Tôi muốn hỏi cụ thể cách tính "một khoảng trống yên lặng khoảng 4 lần thời gian truyền 1 kí tự" như thế nào?
                      Thường thì thời gian này cỡ khoảng 10 ms, còn để tính toán chính xác người ta sẽ sử dụng tốc độ truyền thống (bits/s) và theo một công thức thích hợp ta sẽ tính được khoảng thời gian này.

                      Tôi sẽ xem lại và gửi công thức tính toán sau.
                      Càng biết nhiều càng thấy mình biết ít.

                      Comment


                      • #12
                        Tôi có một component phát triển sẵn của delphi sử dụng để viết chương trình giao tiếp từ máy tính với các hệ thống khác thông qua modbusM.Component này như một tệp đệm (giống như port.dll trong sách ngô diễn tập) dùng cho chúng ta thao tác dễ dàng với các thiết bị sử dụng chuẩn giao tiếp này trong đó nó có các thuộc tính và sự kiện sinh ra tương ứng (cách thức cài đặt nó chắc các bạn dùng delphi đã biết cách rồi chứ?).
                        Các bạn lập trình delphi có thể sử dụng ModbusM rất tốt và tôi thấy nó rất có ích cho các bạn khi tiếp xúc với chuẩn giao tiếp này.Anh em thử xem nhé!Hi vọng nó sẽ giúp các bạn hoàn thành tốt phần software trên máy tính.Còn phần firmware thì các bạn phải tự tìm hiểu thêm về chuẩn giao tiếp này như anh bạn ATYLA đang tutorial cho anh em cứ tiếp tục thế nhé!!!
                        Gạo cho vào giã bao đau đớn
                        Gạo giã xong rồi trắng tựa bông
                        Sống ở trên đời người cũng vậy
                        Gian nan rèn luyện mới thành công!
                        :cafe:

                        Comment


                        • #13
                          còn tôi thì dùng modscan32 để test, dùngOPC của automated làm server. Firmwave slave cho VDK 51 tôi cũng đã hoàn thiện xong. Anh em nào muốn viết, tôi sẽ chia sẻ chút kinh nghiệm !

                          Comment


                          • #14
                            Em cũng rất muốn biết thêm, anh chia sẻ kinh nghiệm, firmwave đi. Hihi...

                            Comment


                            • #15
                              Em nữa anh VÂN, hehe, dạo này em rảnh rỗi rồi, anh truyền thụ đi nhá. Em cũng khát khao và nhiều lần muốn nghiên cứu lắm rồi.

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X