đề tài: tìm hiểu giao thức modbusascii

12 362 0
đề tài: tìm hiểu giao thức modbusascii

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC CÔNG NGHIỆP TP.HCM KHOA CÔNG NGHỆ ĐIỆN TỬ TIỂU LUẬN MÔN MẠNG TRUYỀN THÔNG CÔNG NGHIỆP ĐỀ TÀI: TÌM HIỂU GIAO THỨC MODBUS/ASCII GVHD : Th.S TRẦN VĂN TRINH SVTH : BÙI XUÂN VINH - 077166541 I. Giới thiệu đề tài. 1. Định nghĩa Modbus : Modbus là một giao thức do hãng Modicon (sau này thuộc AEG và Schnelder automation) phát triển. theo mô hình ISO/OSI(International Organization for Standardization/Open Systems Interconnection Reference Model: Tổ chức tiêu chuẩn hóa quốc tế/Mô hình tham chiếu kết nối các hệ thống mở thì Modbus thực chất là một giao thức và dịch vụ thuộc lớp ứng dụng. Có thể vận chuyển cấp thấp như TCP/MAP (Manufacturing Message Protocol), Modbus Plus và đườ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à dữ liệu chuẩn đoán. Mudbus 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í dụ: Trong mỗi ứng dụng PLC người ta cũng có thể tìm thấy một tập hợp con các dịch vụ đã đưa ra trong Modbus. Đặt biệt trong các hệ thống thu thập dữ liệu và điều khiển giám sát(Scada). 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ị đầu cuối (PLC, PC) với thiết bị truyền dữ liệu (Modem). Hình ảnh minh họa. 2. Cơ chế giao tiếp: Modbus phụ thuộc vào hệ thống truyền thông cấp thấp. Được chia làm hai loại là mạng Modbus chuẩn và Mudbus trên các mạng khác(vi dụ: TCP/IP, Modbus Plus, MAP). 2.1. Mạng Modbus chuẩn: - Các trạm Modbus giao tiếp với nhau qua cơ chế chủ/tớ(Master/Slave), trong đó chỉ một số thiết bị chủ có thể gửi yêu cầu, còn các thiết bị tớ sẽ đáp ứng yêu cầu trả lại hoặc thực hiện một hành động nhất định theo yêu cầu. Các thiết bị chủ là các máy tính điều khiển trung tâm và các thiết bị lập trình, các thiết bị tớ là PLC và các bộ điều khiển số chuyên dụng khác. 2.2. Modbus trên các mạng khác: 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 đó. Ví dụ: giao tiếp tay đôi(Peer to peer), mỗi bộ điều khiển có thể đóng vai tro là chủ hoặc tớ trong các lần giao dịch khác nhau.(mỗi trạm có thể cùng một lúc có quan hệ logic với nhiều đối tác, vì vậy nó có thể đồng thời đóng vai trò là chủ hoặc tớ trong các giao dichj khác nhau.) 2.3. Chu trình yêu cầu - đáp ứng: Một thông báo yêu cầu bao gồm các phần sau: • Địa chỉ trạm nhận yêu cầu (0-247)., trong đó 0 là dịa chỉ gửi đồng loạt. • Mã hàm gọi chỉ thị hành động trạm tớ 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 dữ và trả lại kết quả. • Dữ liệu chứa các thông tin bổ sung nà trạm tớ cần cho việc thực hiện hàm được gọi. • Thông tin kiểm lợi giúp trạm tớ kiểm tra độ toàn vẹn của nội dung thông báo nhận được. • 3. Chế đọ truyền - Chế độ ASCII 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. 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 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 4. Cấu trúc bức điện Khung ASCII 5. Các đối tượng của Modbus ASCII  Modbus được sử dụng trên các đường truyền thông dây dẫn, cũng có các mở rộng cho các chuẩn truyền thông không dây và các mạng TCP/IP. Khởi đầu Địa chỉ Mã hàm Dữ liệu Mã LCR Kết thúc 1 Ký tự 2 Ký tự 2 Ký tự N Ký tự 2 Ký tự 2 Ký tự  Sử dụng trong mạng công nghiệp, trong công ty, nhà máy…. Ví dụ: Các hệ PLC trong nhà máy sản xuất (trong mỗi PLC người ta có thể tìm thấy một tập hợp con các dịch vụ đã đưa ra trong Modbus) - Đặc biệt trong trong các hệ thống SCADA. Modbus được sử dung trên các đường truyền RS-232 ghép nối giữa các thiết bị đầu cuối (PLC, PC) với các thiết bị truyền dữ liệu.  Kết nối các thiết bị MODBUS Một trong những cách đơn giản nhất để đưa thiết bị hiện trường vào một hệ thống điều khiển quá trình, PLC hay máy tính công nghiệp là kết nối I/O analog số thành hệ thống I/O phân tán mang tính năng truyền thông MODBUS. Thí dụ, NCS (hệ thống kết nối mạng) của Moore Industries cho phép người sử dụng kết nối các tín hiệu analog và số từ xa (sau đó được kết nối với chủ MODBUS bằng cáp đôi xoắn). Đa hệ thống NCS có thể được lắp đặt trong nhiều vị trí toàn nhà máy, tất cả được kết nối bằng MODBUS (hình 4). - Một trong những cách đơn giản nhất để đưa thiết bị hiện trường vào một hệ thống điều khiển quá trình, PLC hay máy tính công nghiệp là kết nối I/O analog số thành hệ thống I/O phân tán mang tính năng truyền thông MODBUS. Thí dụ, NCS (hệ thống kết nối mạng) của Moore Industries cho phép người sử dụng kết nối các tín hiệu analog và số từ xa (sau đó được kết nối với chủ MODBUS bằng cáp đôi xoắn). Đa hệ thống NCS có thể được lắp đặt trong nhiều vị trí toàn nhà máy, tất cả được kết nối bằng MODBUS. - Giải pháp này hoạt động trên cả máy thế hệ mới và hiện nay. Trong nhiều nhà máy hiện nay, các công cụ đo hiện trường đều kết nối với DCS hay PLC qua “home run wiring”, tại đây, mỗi thiết bị được kết nối với từng cặp dây xoắn mang tín hiệu analog. Với NCS, một trong những cặp dây xoắn có thể được sử dụng cho tín hiệu MODBUS. Điều này thật sự hữu ích nếu nhà máy muốn bổ sung thêm công cụ hiện trường nhưng không muốn nối thêm dây (chi phí lắp đặt 100 đôla cho mỗi foot). Một hệ thống I/O phân tán có thể cung cấp tất cả các I/O hiện có., hoặc nó có thể được sử dụng chỉ để gửi dữ liệu từ tất cả các dụng cụ hiện trường thế hệ mới. - Trong một số trường hợp, hệ thống điều khiển không có khả năng xử lí một tín hiệu MODBUS. Có thể là do hệ thống điều khiển thừa kế quen với việc xử lí I/O analog 4- 20mA và I/O số nối trực tiếp, lập trình hệ thống thế hệ cũ để cung cấp dữ liệu MODBUS sẽ trở nên khó khăn. Thông thường, người sử dụng mong muốn bổ sung tín hiệu từ xa mới vào hệ thống của họ mà không phải nối dây hay mua card giao diện MODBUS đắt đỏ đòi hỏi tái lập trình sâu hơn. Trong trường hợp đó, giải pháp peer – to –peer là hoàn hảo nhất. Thí dụ, CCS (hệ thống tập trung cáp) và NCS của Moore Industries đều có tính năng truyền thông peer – to – peer. - NCS và CCS đều tương tự một module I/O, nhưng có một bộ phận thu thập thông tin bên trong và có thể được thiết lập trong cấu hình peer-to-peer và peer-to-host. - Với hệ thống NCS peer-to-peer (hình 5), hai bộ tập trung được sử dụng: một trong hiện trường và một trong phòng điều khiển. Công cụ hiện trường kết nối với NCS - thiết bị kết nối với phòng điều khiển NCS bằng một kết nối cặp dây xoắn đơn. Đầu ra từ phòng điều khiển NCS được nối với panel I/O analog hiện có của hệ thống điều khiển. Bằng cách này, tín hiệu analog từ bộ truyền hiện trường thế hệ mới có thể được quan sát theo trạng thái analog gốc thông qua card I/O analog hiện tại của nhà máy. Điều này làm cho việc lập trình và đưa tín hiệu mới vào hoạt động trở nên bớt khó khăn hơn việc lập trình card giao diện số mới. Giải pháp peer-to-peer có thể cung cấp truyền thông hai chiều trong dó cả hai chiều của hệ thống có thể có cả đầu vào và đầu ra. Hình 5: Kết nối peer-to-peer Trong một số trường hợp, hệ thống điều khiển không thể xử lí tín hiệu MODBUS, giải pháp peer- to-peer với hai hệ thống NCS sẽ thay thế tất cả nối dây home run với 1 cáp MODBUS đơn. Đầu ra analog từ phòng điều khiển NCS được nối trực tiếp với card I/O của hệ thống host.  - Ưu điểm & ứng dụng: - Với MODBUS ASCII, mọi thông điệp được mã hóa bằng hexadecimal, sử dụng đặc tính ASCII 4 bit. Đối với mỗi một byte thông tin, cần có 2 byte truyền thông. - Vì vậy thích hợp khi modem điện thoại hay kết nối sử dụng sóng radio do ASC II sử dụng các tính năng phân định thông điệp,. Do tính năng phân định này, mọi rắc rối trong phương tiện truyền dẫn sẽ không làm thiết bị nhận dịch sai thông tin. Điều này quan trọng khi đề cập đến các modem chậm, điện thoại di động…. - Điểm mạnh của Modbus là tính mở, đơn giản và yêu cầu phần cứng ít nhất -Điều tốt của chuẩn Modbus là sự linh hoạt, và sự dễ thực hiện của nó. Không chỉ các thiết bị thông minh như các microcontroller, PLC có thể truyền thông với Modbus, mà còn các sensor thông minh trang bị Modbus interface gửi dữ lệu của chúng đến các hệ thống chủ. - Một ưu điểm khác của MODBUS là nó có thể chạy hầu như trên tất cả các phương tiện truyền thông, trong đó có cổng kết nối dây xoắn, không dây, sợi quang, Ethernet, modem điện thoại, điện thoại di động và vi song. • Nhược điểm - MODBUS ASC II chậm nhất trong số 3 loại protocol. 6. Các chế độ truyền thông nối tiếp Modbus : Modbus/ASCII và Modbus/RTU Các kết nối Modbus serial có thể dùng hai chế độ truyền cơ bản, ASCII hay RTU, remote terminal unit. Chế độ truyền theo truyền thông serial định nghĩa cách các Modbus message được mã. Với Modbus/ASCII, các message ở định dạng ASCII có thể đọc. Định dạng Modbus/RTU dùng mã nhị phân làm thông điệp không thể đọc khi đang giám sát, nhưng giảm kích thước mỗi thông điệp mà cho phép nhiều data trao đổi trong cùng một thời gian. Tất cả node trên một phân đoạn mạng Modbus phải có cùng mode truyền serial. Một thiết bị được cấu hình dùng Modbus/ASCII không thể hiểu các message theo Modbus/RTU và ngược lại. Khi dùng Modbus/ASCII, tất cả message được mã theo các giá trị hexadecimal, được biểu diễn theo các ký tự ASCII khả đọc. Chỉ các ký tự 0 9 và A F được dùng để mã. Với mọi byte của thông tin, hai truyền thông byte được cần, vì mọi truyền thông byte có thể chỉ định nghĩa 4 bit theo hệ hexadecimal. Với Modbus/RTU data được trao đổi theo định dạng nhị phân, trong đó mỗi byte của thông tin được mã theo truyền thông một byte. Các thông điệp Modbus trên các kết nối serial không được gửi theo một định dạng phẳng. Chúng được frame cho các receiver một cách dễ dàng để dò bắt đầu và kết thúc message. Khi dùng Modbus/ASCII, các ký tự được dùng để bắt đầu và kết thúc frame. Dấu colon ':' được dùng để báo hiệu bắt đầu của message và mỗi message được kết thúc bằng một kết hợp CR/LF. Modbus/RTU mặt khác dùng các khe thời gian lặng trên đường truyền thông để frame. Mỗi message phải được tuần tự theo một khe thời gian có độ dài tối thiểu 3.5 ký tự. Nếu một receiver dò một khe tối thiểu 1.5 ký tự, nó cho rằng một message mới đang đến và bộ đệm nhận được làm sạch. Thuận lợi chính của Modbus/ASCII là, nó cho phép các khe giữa các byte của một message có độ dài tối đa 1 giây. Với Modbus/RTU nó cần nhận mỗi message như một stream liên tục. Các thuộc tính của Modbus/ASCII và Modbus/RTU Modbus/ASCII Modbus/RTU Ký tự ASCII 0 9 and A F Binary 0 255 Error check LRC Longitudinal Redundancy Check CRC Cyclic Redundancy Check Frame start character ':' 3.5 chars silence Frame end characters CR/LF 3.5 chars silence Các Gap trong message 1 sec 1.5 times char length Start bit 1 1 Data bits 7 8 Parity even/odd none even/odd none Stop bits 1 2 1 2 7. Địch chỉ Modbus Thông tin đầu tiên trong mỗi Modbus message là địa chỉ của receiver. Parameter này chứa một byte thông tin. Trong Modbus/ASCII nó được mã thành hai ký tự hexadecimal, trong Modbus/RTU một byte được dùng. Các địa chỉ hợp lệ trong dải 0 247. Các giá trị 1 247 được gán cho các thiết bị Modbus cụ thể và 0 được dùng như địa chỉ broadcast. Các Message được gửi sau sẽ được nhận bởi tất cả slave. Một slave luôn đáp ứng với một Modbus message. Khi đáp ứng nó dùng cùng địa chỉ như master trong request đó. Theo cách này master có thể thấy device thực sự đáp ứng với request. Bên trong một Modbus device, các holding register, các input và các output được gán một số giữa 1 và 10000. Một sẽ mong đợi, rằng cùng địa chỉ được dùng trong các Modbus message để đọc hay đặt các giá trị. Rủi thay đây không phải là trường hợp này. Trong các Modbus message các địa chỉ được dùng với giá trị giữa 0 và 9999. Nếu bạn muốn đọc giá trị của output (coil) 18 ví dụ, bạn phải chỉ định giá trị 17 trong Modbus query message. Nhiều bối rói hơn, là cho input và các holding register một offset phải được trừ từ địa chỉ device để lấy địa chỉ thích hợp để đặt vào Modbus message structure. Điều này dẫn đến các lỗi phổ biến và nên được quan tâm khi thiết kế ứng dụng với Modbus. Bảng sau trình bày các dải địa chỉ cho các coil, các input và các holding register và cách địa chỉ trong Modbus message được tính ho trước địa chỉ thực của item trong slave device. Device and Modbus address ranges Device address Modbus address Description 1 10000 * address - 1 Coils (outputs) 10001 20000 * address - 10001 Inputs 40001 50000 * address - 40001 Holding registers * Các giá trị cực đại là phụ thuộc thiết bị 8. Các mã chức năng Modbus Tham số thứ hai trong mỗi Modbus message là mã chức năng. Cái này định nghĩa kiểu message và kiểu hành động được đòi hỏi bởi slave. Tham số này chứa một byte thông tin. Trong Modbus/ASCII điều này được mà với hai ký tự hexadecimal, trong Modbus/RTU một byte được dùng. Các mã chức năng hợp lệ trong khoảng 1 255. Không phải tất cả Modbus device nhận biết cùng tập mã chức năng. Các mã chung nhất được thảo luận ở đây. Bình thường, khi một Modbus slave trả với đáp ứng, nó dùng cùng mã chức năng trong request. Tuy nhiên, khi một error được dò, bit cao nhất của mã chức năng được bật lên. Theo cách đó master có thể thấy khác biệt giữa đáp ứng thành công và thất bại. Các mã chức năng Modbus phổ biến Mã Mô tả 01 Đọc trạng thái coil 02 đọc trạng thái input 03 Đọc các holding register 04 Đọc các input register 05 Tác động một coil 06 Đặt lại một register 07 Đọc trạng thái ngoại lệ 15 Tác động nhiều coil 16 Đặt lại nhiều register 17 Báo cáo slave ID Chức năng 01: Đọc trạng thái coil Trong ngôn ngữ Modbus, một coil là một giá trị output rời rạc. Chức năng Modbus 01 có thể được dùng để đọc trạng thái của một output. Chỉ có thể truy vấn một device ở một thời điểm. Địa chỉ Broadcast được hỗ trợ chức năng Modbus này. Chức năng này có thể được dùng để request trạng thái của các coil khác nhau một lúc. Điều này được làm bởi định nghĩa một dải output trong trường data của message. Cấu trúc truy cấn chức năng 01 Byte Giá trị Mô tả 1 1 247 Địa chỉ thiết bị Slave 2 1 Mã chức năng 3 0 255 Địa chỉ bắt đầu, byte cao 4 0 255 Địa chỉ bắt đầu, byte thấp 5 0 255 Số các coil, byte cao 6 0 255 Số các coil, byte thấp 7( 8) LRC/CRC Giá trị kiểm tra Error Khi nhận một Modbus query message có chức năng 01, slave thu thập các giá trị output cần thiết và dựng một answer message. Chiều dài của message này phụ thuộc vào số các value mà phải được trả về. Nhìn chung, khi giá trị N được yêu cầu, một số ((N+7) mod 8) byte là cần thiết để lưu các giá trị này. Số thực sự các databyte trong datablock được đặt trong byte đầu tiên của data field. Do đó cấu trícchung của answer cho Modbus function 01 query là: Cấu trúc trả lời Function 01 Byte Giá trị Mô tả 1 1 247 Địa chỉ Slave device 2 1 Function code 3 0 255 Số các data byte N 4 N+3 0 255 Bit pattern của các giá trị coil N+4( N+5) LRC/CRC Giá trị kiểm tra Error Function 02: Đọc trạng thái input Đọc các giá trị input với Modbus được làm theo cùng cách như đọc trạng thái các coil. Khác biệt duy nhất là cho các input Modbus function 02 được dùng. Broadcast addressing mode không được hỗ trợ. Bạn có thể chỉ query giá trị các input chỉ trên một device ở một lúc. Giống với các coil, địa chỉ của input đầu tiên, và số các input để đọc phải được đặt trong data field của query message. Các Input trên các device bắt đầu đánh số từ 10001. Giá trị địa chỉ này tương đương địa chỉ 0 trong Modbus message. Cấu trúc query Function 02 Byte Value Mô tả 1 1 247 Địa chỉ thiết bị Slave 2 2 Function code 3 0 255 Địa chỉ bắt đầu, byte cao 4 0 255 Địa chỉ bắt đầu, byte thấp 5 0 255 Số các input, byte cao 6 0 255 Số các input, byte thấp 7( 8) LRC/CRC Error check value Sau khi nhận một query message có Modbus function 02, slave đặt các giá trị input được yêu cầu trong một message structure và gửi message này trở lại Modbus master. Chiều dài của message phụ thuộc vào số các giá trị input trả về. Điều này làm cho chiều dài của output message thay đổi. Số các databyte trong data field mà chứa các giá trị input được chuyển như byte đầu tiên trong data field. Mỗi message trả lời Modbus có cấu trúc chung sau. . CÔNG NGHIỆP ĐỀ TÀI: TÌM HIỂU GIAO THỨC MODBUS/ASCII GVHD : Th.S TRẦN VĂN TRINH SVTH : BÙI XUÂN VINH - 077166541 I. Giới thiệu đề tài. 1. Định nghĩa Modbus : Modbus là một giao thức do hãng. mạng khác: 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 đó. Ví dụ: giao tiếp tay đôi(Peer to peer), mỗi bộ điều khiển. tiêu chuẩn hóa quốc tế/Mô hình tham chiếu kết nối các hệ thống mở thì Modbus thực chất là một giao thức và dịch vụ thuộc lớp ứng dụng. Có thể vận chuyển cấp thấp như TCP/MAP (Manufacturing Message

Ngày đăng: 18/11/2014, 15:16

Mục lục

  • Modbus là một giao thức do hãng Modicon (sau này thuộc AEG và Schnelder automation) phát triển. theo mô hình ISO/OSI(International Organization for Standardization/Open Systems Interconnection Reference Model: Tổ chức tiêu chuẩn hóa quốc tế/Mô hình tham chiếu kết nối các hệ thống mở thì Modbus thực chất là một giao thức và dịch vụ thuộc lớp ứng dụng. Có thể vận chuyển cấp thấp như TCP/MAP (Manufacturing Message Protocol), Modbus Plus và đường truyền nối tiếp RS-232.

    • 6. Các chế độ truyền thông nối tiếp Modbus : Modbus/ASCII và Modbus/RTU

    • 7. Địch chỉ Modbus

    • 8. Các mã chức năng Modbus

      • Chức năng 01: Đọc trạng thái coil

      • Function 02: Đọc trạng thái input

      • Function 03: Đọc các holding register

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan