1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Giao thuc MODBUS va ung dung

74 248 1

Đ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

Thông tin cơ bản

Định dạng
Số trang 74
Dung lượng 1,06 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Dưới đây là sơ đồ mô tả các giao thức khác nhau được sử dụng trong modbus để xây dựng một mạng truyền thông.. Hình 1: Mô hình các giao thức truyền thông có thế sử dụng trong Modbus Giao

Trang 1

Mở đầu

Ngày nay, việc xây dựng một mạng điều khiển trong các nhà máy, xí nghiệp, công xưởng… là rất cần thiết Nó không những mang lại hiệu quả kinh tế cao hơn mà một phần nào đó cũng nó khẳng định được sự tiến bộ trong khoa học công nghệ và khả

năng ứng dụng của khoa học công nghệ vào trong các ứng dụng khác nhau

Để thực thi một mạng điều khiển hay một mạng nói chung thì nhiệm vụ đầu tiên

là phải lựa chọn được một giao diện vật lý và giao thức mạng để cài đặt trên nền giao diện vật lý đó

Hiện nay chuẩn RS485 là chuẩn được sử dụng phổ biến trong công nghiệp Nó

có nhiều ưu điểm hơn các chuẩn cao hơn là đơn giản, dễ thực thi Do các yêu cầu này trong các nghành công nghiệp là không quá cao, vì vậy nó có thể đáp ứng được các yêu cầu về tốc độ cũng như về khoảng cách truyền

Còn đối với các chuẩn vật lý mà từ trước đến nay chúng ta thường sử dụng thì

ưu điểm của RS485 lại càng rõ rệt (Ví dụ chuẩn RS232) Chúng ta có thể nhận ra được

ưu điểm của nó so với chuẩn RS232 thông qua một số mặt sau đây:

Chuẩn RS485 có khả năng thực hiện một mạng liên kết điểm- điểm cũng như liên kết đa điểm Trong các hệ thống đa điểm nó có thể cho phép nhiều Slave cùng giao tiếp trên mạng( tối đa là 32 Slave), còn đối với chuẩn RS232 chỉ có thể thực hiện liên kết điểm điểm

Chuẩn RS485 có khả năng chống nhiễu tốt hơn RS232 bằng cách dùng một cặp dây xoắn đôi để khử nhiễu làm suy giảm tín hiệu trong quá trình truyền Nếu sử dụng chuẩn RS485 thì khoảng cách truyền lớn hơn so với chuẩn RS232 Tốc độ truyền tối đa của RS485 là 10Mbps, trong khi đó của RS232 chỉ là 100Kbps

Khoảng cách truyền của RS485 cũng lớn hơn khoảng cách truyền của RS232 Với RS485 là 1200m thì RS232 chỉ tối đa là 15m Với khoảng cách này thì chuẩn RS485 hoàn toàn có thể đáp ứng được về mặt khoảng cách và tốc độ truyền thông cần thiết trong công nghiệp

Trang 2

Hầu hết hiện nay tất cả các máy công cụ dùng trong công nghiệp có thể điều khiển

được như PLC, CNC…đều sử dụng cổng truyền thông RS485 thay cho RS232 nên nó tạo điều kiện cho chuẩn RS485 được sử dụng trong công nghiệp rộng rãi hơn

Về giao thức cài đặt cho mạng

Như đã nói ở trên Modbus chỉ có 3 lớp (Application, Datalink, lớp Physic) tương ứng với 3 lớp trong mô hình ứng dụng OSI Trên 3 lớp này nó sử dụng các giao thức hoàn toàn độc lập nhau Các lớp này cũng sử dụng các giao thức phù hợp với các lớp tương ứng với nó trong các mạng khác như mạng Ethernet, Wan…Vì vậy nó không gây tốn kém cho người sử dụng trong quá trình cài đặt và dễ dàng trong quá trình sử dụng cũng như nâng cấp

Với những lý do như trên mà giao thức truyền thông Modbus và chuẩn truyền thông công nghiệp RS485 được lựa chọn để thực thi cho mục đích của đề tài

Chương 1 Tổng quan về giao thức

truyền thông Modbus 1.1 Mô tả chung về giao thức Modbus

Giao thức truyền thông Modbus được cung cấp bởi Modicon Inc(AEG Schneider Automation International S.A.S) Nó là một giao thức đơn giản, bao gồm 3 lớp (lớp vật lý, lớp datalink, lớp ứng dụng) tương ứng với 3 lớp trong mô hình tham chiếu OSI Vị trí các lớp của nó trong mô hình tham chiếu OSI được mô tả như trong hình vẽ dưới đây:

Bảng 1: Các lớp của Modbus trong mô hình tham chiếu OSI

Mô hình tham chiếu OSI

thông Modbus Application 1 Application

Sesion 3 Empty Transport 4 Empty Network 5 Empty

Physical 7 Physical

Trang 3

của nó Hiện nay mạng truyền thông Modbus cho phép hàng triệu thiết bị giao tiếp với nhau Cấu trúc của modbus ngày càng được phát triển trong công nghiệp và ngày càng

đơn giản và dễ sử dụng hơn

Giao thức MODBUS là một giao thức request/response ( yêu cầu/trả lời ) cung cấp các dịch vụ thông qua các hàm của chúng Mã hàm của MODBUS là các thành phần của giao thức khối dữ liệu (PDUs) request/response, và ngày nay MODBUS đang

được phát triển bằng cách sử dụng các giao thức sau:

• Giao thức TCP/IP trên mạng Ethernet

• Giao thức truyền tin không đồng bộ bằng cách sử dụng các chuẩn truyền thông như: RS-232, RS-422, RS-485, sợi quang, radio )

• MODBUS PLUS – Một mạng truyền qua tốc độ cao

Dưới đây là sơ đồ mô tả các giao thức khác nhau được sử dụng trong modbus để xây dựng một mạng truyền thông

Hình 1: Mô hình các giao thức truyền thông có thế sử dụng trong Modbus

Giao thức MODBUS cho phép các thành phần có thể giao tiếp với nhau một cách dễ dàng với tất cả các kiểu cấu trúc mạng

Tất cả các kiểu thiết bị (PLC-Programmable Logic Controler, HMI, Control panel, Driver, Motion control, I/O device…) có thể sử dụng giao thức MODBUS để xây dựng mạng điều khiển từ xa

Một vài kiểu giao tiếp có thể đựơc xây dựng trên đường truyền nối tiếp, trong mạng Ethernet sử dụng giao thức TCP/IP Các Gateway cho phép giao tiếp giữa một vài kiểu của bus hoặc mạng sử dụng giao thức MODBUS Dưới đây là mô hình của một vài

Trang 4

kiểu giao tiếp sử dụng giao thức MODBUS

Hình 2: Các mô hình giao tiếp có thể sử dụng giao thức Modbus

1.2 Các lớp được định nghĩa trong giao thức truyền thông Modbus

Như giới thiệu ở trên, giao thức Modbus sử dụng 3 lớp để xây dựng một mạng hoàn chỉnh đó là: lớp vật lý (physic), lớp liên kết dữ liệu (datalink), lơp ứng dụng (application) Sau đây là phần mô tả chi tiết về các lớp này

1.2.1 Lớp Vật lý(Physical layer)

1.2.1.1 Giới thiệu chung

Một đường truyền nối tiếp thực hiện bằng giao thức MODBUS phải có một giao diện điện phù hợp với chuẩn EIA/TIA-232 hoặc EIA/TIA 485 ( cũng được gọi là chuẩn RS-232/RS-485) Các chuẩn này cho phép thực hiện liên kết điểm-điểm hoặc đa điểm, bằng cách thực hiện cấu hình 2 dây hoặc 4 dây

Trong một hệ thống MODBUS chỉ có một trạm truy cập là Master và có một hoặc nhiều hơn một Slave(tối đa có 32 Slaves) có thể kết nối với nhau trên mạng này bằng cách sử dụng chuẩn RS485

Trong một hệ thống MODBUS chuẩn, tất cả các thiết bị được nối với nhau bằng một Cable trung kế Cable trung kế này được tạo thành bởi 3 đường dây 2 trong 3 dây này (có cấu tạo như trong cấu hình 2-wire) có dạng như một cặp dây cân bằng, trên đó dữ liệu có thể được truyền theo 2 hướng, mà tần số mặc định là 9600bps

Mỗi thiết bị trên mạng có thể được kết nối theo các cách sau:

Trang 5

1.2.1.2 Các giao diện điện của Modbus

1.2.1.2.1 Mô tả chung về giao diện điện cho Modbus

Một đường truyền nối tiếp đa điểm được tạo bởi một cable trung kế, và các cable khác để liên kết Slave với bus Tại mỗi đầu kết cuối của đường trung kế (LT) phải được phối hợp trở kháng giữa hai đường dẫn cân bằng Và trên đường trung kế người ta sử dụng giao diện ITr(Trunk Interface) Hình sau sẽ minh họa một cấu hình bus nối tiếp

Đặc điểm của bus này như sau:

• Thiết bị được tích hợp vào trong bộ thu phát và được nối với cable trung kế bằng cách sử dụng một passive tap (như trong cách nối của slave 1 và master) Giữa passive tap và các slave người ta sử dụng giao diện có tên là IDv(Derivation interface)

• Thiết bị không được tích hợp vào trong bộ thu phát và được nối với cable trung

kế bằng cách sử dụng một active tap và một cable dẫn(như trong cách nối của slave 2) Giữa active tap và các slave người ta sử dụng giao diện có tên là AUI( Attachment Unit Interface)

• Thiết bị được nối trực tiếp vào cable trung kế sử dụng một daisy-chain( như trong cách nối của salve n)

Hình 3: Các phương pháp kết cuối thiết bị vào một mạng Modbus

Trang 6

1.2.1.2.2 Định nghĩa cho cấu hình Modbus 2 dây

Trong cấu hình 2 dây ( hình 4 ) sử dụng một đôi dây làm bus là: D0 và D1, trên

2 dây này có các điểm truy cập, các điểm truy cập là nơi nối các slave vào bus Tại đầu cuối của cặp dây này có các điện trở Pull Up và Pull Down đ−ợc đ−a vào để có thể thực hiện một cấu hình đa điểm, nhở có trạng thái trở kháng cao trên hai dây Ngoài hai dây trên còn có một dây dùng chung cho Master và Slave Hình vẽ mô tả cụ thể và bảng

định nghĩa các mạch khi sử dụng chuẩn RS-485 trong cấu hình 2 dây nh− sau:

Bảng 2: Các loại mạch sử dụng trong cấu hình 2 dây

Hình 4: Cấu hình Modbus 2 dây

Loại mạch

ITr IDv

Dùng cho loại thiết bị

Yêu cầu trên thiết

Trang 7

Tín hiệu logic trên hai dây được định nghĩa như sau:

• Nếu VD1>VD0 tương ứng với trạng thái 1[OFF]

• Nếu VD1<VD0 tương ứng với trạng thái 0[ON]

1.2.1.2.3 Định nghĩa cho cấu hình Modbus 4 dây

Trong Modbus các thiết bị cũng cho phép thực hiện cấu hình một Bus 4 dây, bao gồm 2 đôi dây Dữ liệu trên đôi dây Master chỉ được nhận bởi các Slave, và dữ liệu trên đôi dây Slave (RX1-RX0) chỉ được nhận bởi Master

Trong thực tế có một dây dùng chung để kết nối tất cả các thiết bị trên mạng với nhau Dây này thường được nối mass khi thực hiện mô hình trong thực tế

Khi các thiết bị được thực thi cho mỗi cặp dây cân bằng thì các bộ điều khiển,

bộ truyền nhận phải phù hợp với chuẩn RS-485

Hình vẽ dưới đây mô tả về cấu hình mạng 4 dây của Modbus và các mạch được

định nghĩa dùng cho cấu hình mạng này:

Yêu cầutrên thiết bị

Trang 8

Dây A của đường nhận Điện áp là Va’(Nếu Va’ > Vb’ cho trạng thái trên đường truyền là 0 - ON) Com

mon

Com

mon X C/C’ Tín hiệu nguồn nuôi dùng chung

1.2.1.2.4 Khả năng tương thích giữa cabling của cấu hình 2 dây và 4 dây

Trong cùng một mạng Modbus thì giao diện 2 dây và 4 dây có thể cùng được thực thi Khi đó hệ thống cabling 4 dây được mắc như sau:

Tín hiệu TX0 được nối với tín hiệu RX0, và chuyển chúng sang dây tín hiệu D0 Tín hiệu TX1 được nối với tín hiệu RX1, và chuyển chúng sang tín hiệu D1 Các điện trở đầu cuối Pull-up, Pull-down sẽ được sắp xếp lại để tương thích với các tín hiệu D0 và D1

Hình vẽ sau đây là một ví dụ về cách thực thi thiết bị được thiết kế giao diện 2 dây trong hệ thống cabling 4 dây Trong đó: Slave 1 được thực thi trên giao diện 4 dây, còn lại Slave 2 và Slave 3 được thực thi trên giao diện 2 dây

Trang 9

Trong sơ đồ này, với mỗi thiết bị đ−ợc chế tạo theo giao diện 4 dây thì:

• Dây TxD0 đ−ợc nối với dây RxD0và sau đó đ−ợc nối với dây D0 của trung kế

• Dây TxD1 đ−ợc nối với dây RxD1 và sau đó đ−ợc nối với dây D1 của trung kế Ng−ợc lại: Thiết bị đ−ợc thiết kế dùng cho giao diện 4 dây cũng có thể hoạt động đ−ợc trong cấu hình mạng 2 dây

Trong đó: Slave 1 là loại thiết bị giao diện 2 dây, còn Slave 2 và Slave 3 là loại thiết bị giao diện 4 dây, nh−ng chúng có thể hoạt động cùng trên một cấu hình mạng 2 dây nh− sơ đồ trên

Hình 7: Thiết bị đ−ợc thiết kế giao diện 4 dây có thể kết nối

trong cấu hình 2 dây

1.2.1.2.5 Định nghĩa giao diện RS-232 cho Modbus

Các thiết bị có thể thực hiện một giao diện RS-232 giữa DCE và DTE, cụ thể nh− sau:

Bảng 4: Giao diện RS232 trong Modbus

Chú thích:

Trang 10

• “X” là tín hiệu được yêu cầu nếu giao diện RS-232 được lựa chọn để thực thi

• Các tín hiệu trên các dây phải tương thích với chuẩn điện của RS-232

• Chân TxD của thiết bị này phải được nối với chân RxD của thiết bị khác

• Chân RTS của thiết bị này phải được nối với chân CTS của thiết bị khác

• Chân DTR của thiết bị này phải được nối với chân DSR của thiết bị khác

1.2.1.2.6 Thực thi một hệ thống đa điểm

Hệ thống đa điểm chỉ được thực thi khi dùng chuẩn RS-485 Khi thực thi một hệ thống đa điểm, thì yêu cầu chung cho cả hai loại giao diện 2 dây và 4 dây là:

• Số lượng thiết bị tối đa khi không có bộ phát lặp: đối với chuẩn RS-485 khi được thực thi trong Modbus thì số lượng các thiết bị có thể nhiều hơn 32 kể cả khi không có bộ phát lặp dùng để tái tạo lại tín hiệu trên đường truyền

• Cấu hình mạng: cấu hình của RS-485 Modbus không có bộ phát lặp có một cable trung kế, với các thiết bị được nối trực tiếp hay nối gián tiếp qua cable dẫn xuất Cable trung kế được gọi là Bus

• Độ dài của Cable:

o Độ dài của Cable trung kế phải được giới hạn Giá trị cực đại phụ thuộc vào tốc độ truyền, độ dài tối đa của nó có thể lên tới 1200m

o Độ dài của Cable dẫn xuất không bao giờ vượt quá 20m Nếu có nhiều

điểm truy cập sử dụng N Cable dẫn xuất thì độ dài tối đa của nó được xác

định bởi 40/N(m)

• Kết cuối đường truyền:

o Một sự dội lại trên một đường truyền là kết quả của một trở kháng không liên tục khi có một sóng đi qua Để giảm thiểu sự dội đến từ hai đầu của cable RS-485 thì nó phải được đặt một điện trở kết cuối đường truyền tại hai đầu cuối của bus

o Công việc này là quan trọng vì đường truyền được kết cuối tại cả hai đầu khi truyền hai hướng, nhưng nó không cho phép đặt hai LT trên một cặp dây D1-D0, và không được đặt một LT nào trên một cable dẫn xuất

o Mỗi LT phải được nối giữa hai dây dẫn của các đường cân bằng D1 và D0

o Điện trở LT phải có giá trị 150 Ohms (0.5W)

o Một tụ điện(10nF,10V) được mắc nối tiếp với một điện trở 120ohms(0.25W) là một lựa chọn tốt khi thực thi giao diện này

Trang 11

1.2.1.3.1 Các đầu nối cho cấu hình 2 dây

Trong cấu hình 2 dây thì các đầu nối D9 hoặc RJ45 có thể được sử dụng để kết nối thiết bị với bus

Hình 8: Các loại giao diện cơ khí cho cấu hình 2 dây

Nếu đầu nối D9 hoặc RJ45 được sử dụng cho thiết bị chuẩn Modbus, thì các chân ra của nó phải được kết nối cho các mạch đã được thực thi như bảng dưới đây:

Bảng 5: Cách kết nối các giao diện cơ khí với các mạch trên mạng trong cấu

hình 2 dây

2.2.1.3.1 Các đầu nối sử dụng cho cấu hình 4 dây

Trang 12

Các đầu nối D9 hoặc RJ45 cũng được sử dụng để liên kết các thiết bị với bus trong cấu hình 4 dây

Nếu các đầu nối kể trên được sử dụng để thực thi cho cấu hình 4 dây thì các chân của nó được định nghĩa như bảng dưới đây:

Hình 9: Các loại giao diện cơ khí cho cấu hình 4 dây

Bảng 6: Cách kết nối các giao diện cơ khí với các mạch trên mạng trong cấu

hình 4 dây

Trang 13

2.2.1 Nguyên tắc của giao thức Master/Slaves

Giao thức truyền nối tiếp được định nghĩa là: Một Master có thể trao đổi dữ liệu với nhiều Slave, nhưng nó phải tuân theo nguyên tắc sau đây:

• Chỉ có một master được nối với Bus tại cùng một thời điểm

• Có nhiều Slave có thể được nối với Bus( trong giao thức modbus thì số lượng này tối đa là 247 Slave

• Một quá trình giao tiếp của master với các slave luôn được bắt đầu bởi Master

• Các Slave không truyền dữ liệu khi không có yêu cầu từ Master

• Các Slave không giao tiếp với nhau

• Master chỉ có thể thực hiện được một quá trình giao tiếp tại một thời

điểm Có nghĩa là: Khi Master đang giao tiếp với một Slave thì không thể giao tiếp với Slave khác

Master đưa ra thông điệp request tới các Slaves theo 2 cách sau:

Unicast Mode:

• Master xác định địa chỉ của các Slave Sau đó Slave nhận thông điệp và xử lý yêu cầu, cuối cùng thì trả lời Master bằng thông điệp reply tới Master

• Trong mode này, một sự trao đổi gồm 2 thông điệp: Thông điệp request

được phát đi từ Master và thông điệp reply được hồi lại từ Slave

• Mỗi Slave phải có một địa chỉ trên mạng(được đánh số liên tiếp từ 1-247) Các Slave phải có địa chỉ khác nhau

Dưới đây là hình vẽ mô tả cách thức liên lạc giữa Master và Slave trong Unicast mode

Hình 10: Giao tiếp Master/Slave trong mode unicast

Trang 14

Broadcast mode:

Master gửi thông điệp request tới tất cả các Slave Trong mode này thì không có thông điệp reply từ các Slave gửi trở lại cho Master

Hình 11: Giao tiếp Master/Slave trong mode broadcast

2.2.2 Cấu trúc khung địa chỉ của modbus

Không gian địa chỉ của modbus có tất cả 256 địa chỉ khác nhau, và được định dạng như hình vẽ dưới đây:

Broadcast

Address

địa chỉ của các Slaves Dự trữ

Hình 12: Cấu trúc không gian địa chỉ của Modbus

Trong đó:

• Địa chỉ 0 dành riêng cho broadcast mode Nó được xem như địa chỉ của nơi truyền đi thông điệp mà ở đây là địa chỉ của Master Tất cả các Slave

đều phải nhận ra địa chỉ này

• Master không có địa chỉ cụ thể trong giao tiếp với các Slave Còn các Slave phải có một địa chỉ Địa chỉ này phải duy nhất trên hệ thống

2.2.3 Cấu trúc khung dữ liệu của Modbus

Giao thức Modbus định nghĩa một PDU(Protocol Data Unit) đơn giản và không phụ thuộc vào các lớp truyền thông phía dưới:

Trang 15

Khung dữ liệu của Modbus trên bus hoặc trên một mạng có thể được xây dựng thêm một vài trường vào trong PDU Khi Slave bắt đầu thực hiện một phiên giao dịch thì chúng xây dựng nên PDU của mình và sau đó thêm một vài trường cần thiết vào trong PDU để tạo thành một PDU thích hợp cho việc truyền thông PDU khi có các trường thêm vào được mô tả như hình dưới đây:

Hình 13: Cấu trúc khung địa chỉ của Modbus

Hình 14: Cấu trúc khung địa chỉ hoàn chỉnh của Modbus

ý nghĩa của các trường trong PDU như sau:

Address field: trường địa chỉ này chỉ dùng để chứa địa chỉ của các Slave Độ lớn của trường này nằm trong khoảng từ 0-247 Một Slave trên hệ thống được định địa chỉ có giá trị nằm trong khoảng từ 1-247 Master nhận ra địa chỉ này bằng cách phân tích nội dung của thông điệp reply mà Slave gửi cho nó

Data field: trường này chứa nội dung của thông điệp

Function field: Trường này báo cho Master và Slave biết loại của thông điệp mà nó nhận được trong quá trình giao tiếp Trường này có thể đứng sau trương Data để chứa tham số của 2 loại thông điệp là request hoặc reply

CRC field: Là kết quả của phép kiểm tra vòng, được tính toán dựa vào nội dung của thông điệp Có hai phương pháp tính để kiểm tra lỗi sẽ được bàn trong phần dưới phụ thuộc vào mode truyền mà ta sử dụng là RTU hay ASCII

2.2.4 Các sơ đồ trạng thái của Master và Slave

Lớp Datalink của Modbus có hai lớp con riêng biệt như sau:

Trang 16

Giao thức Master/Slaves

Mode truyền(Transmission mode)

Dưới đây mô tả sơ đồ trạng thái của Master và Slave Trạng thái của Master và Slave không phụ thuộc vào mode truyền mà chúng ta sử dụng(Hai mode truyền RTU

và ASCII sẽ được nói đến trong phần sau):

Giải thích:

Khi có một tác động(trigger) xẩy ra ở trạng thái A, và điều kiện thích hợp (quard conditionl) là đúng thì hệ thống chuyển sang trạng thái B sau đó một Action được thực hiện

Hình 15: Sự chuyển đổi trạng thái

2.2.4.1 Sơ đồ trạng thái của Master

Sơ đồ sau đây làm rõ quá trình hoạt động của Master thông qua các trạng thái khác nhau của nó

Hình 16: Sơ đồ trạng thái của Master

Giải thích:

Trạng thái “Idle” là trạng thái không đưa ra thông điệp request nào đây

là trạng thái ban đầu sau khi bật nguồn chỉ có thể được gửi thông điệp request

Trang 17

trạng thái “Idle” và không gửi thêm một thông điệp request nào nữa trong thời

điểm này

Khi một thông điệp Unicast được gửi tới một Slave Master nhảy tới trạng thái “ Waiting for reply” thời gian đợi Slave trả lời phụ thuộc vào từng ứng dụng

Khi một thông điệp reply đã được nhận Master kiểm tra thông điệp reply trước khi xử lý dữ liệu Quá trình kiểm tra có thể phát hiện ra lỗi ví dụ: có một thông điệp reply đến từ Slave không yêu cầu, hoặc có một lỗi trong khung đã nhận, thì thời gian “Waiting for reply”của Master tiếp tục được đặt Nếu có một lỗi trong khung thì quá trình được thực hiện lại

Nếu không có thông điệp reply nào được nhận thì thời gian “waiting for reply” sẽ kết thúc, và một lỗi được phát hiện ra Sau đó Master nhảy đến trạng thái “Idle” cho phép gửi lại thông điệp request Số lần gửi lại này phụ thuộc vào việc đặt trong Master

Khi một thông điệp request Broadcast được gửi lên bus nối tiếp, không

có trả lời quay lại của Slave

Tuy nhiên, thời gian trễ được Master đặt ra cho phép Slave xử lý thông

điệp yêu cầu trước khi gửi một thông điệp request tiếp theo Trễ này được gọi là trễ quay vòng Vì vậy Master nhảy vào trạng thái “Waiting turnaround delay” Trước khi quay lại trạng thái “Idle” và trước khi có thể gửi lại một thông điệp request khác

Trong mode Unicast thời gian “waiting for reply” phải được đặt đủ dài để Slave xử lý yêu cầu và gửi thông điệp reply Còn trong mode Broadcast thì trễ

“waiting turnaround delay” cũng phải được đặt đủ dài để Slave xử lý yêu cầu và nhận yêu cầu mới Vì vậy trễ “waiting turnaround delay” phải ngắn hơn thời gian “waiting for reply” Thường thì thời gian “waiting for reply” được đặt khoảng 1s đến vài giây tại tốc độ 9600bps, và trễ “waiting turnaround delay” là

từ 100ms đến 200ms

Khung lỗi bao gồm: kiểm tra tính chẵn lẻ cho từng ký tự, hoặc kiểm tra cho toàn bộ khung

2.2.4.2 Sơ đồ trạng thái của Slave

Sơ đồ trạng thái của Slave có thể được minh họa trong hình vẽ sau đây:

Trang 18

Hình 17: Sơ đồ trạng thái của Slave.

Khi yêu cầu của Master được Slave thực hiện xong thì Slave phải soạn thảo một thông điệp reply và gửi trở lại cho Master

Nếu Slave dò thấy một lỗi trong khung đã nhận thì nó gửi quay trở lại cho Master một thông báo

2.2.4.3 Giản đồ thời gian của truyền thông Master/Slave

Hình vẽ dưới đây chỉ ra giản đồ thời gian của 3 giai đoạn truyền thông Master/Slave

Trang 19

Hình 18: Giản đồ thời gian của giao tiếp Master/Slave

Thời gian tồn tại của các pha request , reply, và Broadcast phụ thuộc vào

đặc điểm truyền thông như: độ dài của khung truyền, và yêu cầu đặt ra của Master

Thời gian tồn tại của các pha Wait, và Treatment phụ thuộc vào thời gian

xử lý của các Slave

2.2.5 Hai mode truyền nối tiếp trong được định nghĩa trong giao thức Modbus

Có hai mode truyền khác nhau được định nghĩa là: RTU mode, và ASCII mode

Hai mode truyền thông này định nghĩa các bit trong nội dung trong các field của khung truyền để truyền đi trên đương dây Nó xác định thông tin được

đóng gói vào trong các trường của thông điệp được gửi đi, và chúng được mã hoá như thế nào

Mode truyền phải được sử dụng đồng nhất cho tất cả các Slave và Master

có mặt trên Bus

Các thiết bị trên Bus được đặt bởi người sử dụng theo đúng yêu cầu của mode truyền RTU hoặc ASCII Mode truyền được đặt mặc định là RTU mode Sau đây là phần giới thiệu về hai mode truyền này:

2.2.5.1 RTU mode

Trang 20

Khi các thiết bị truyền thông trên đường truyền nối tiếp Modbus sử dụng mode truyền RTU Mỗi byte 8 bit trong thông điệp chứa 2 từ 4 bit ưu điểm của mode này là mật độ của các ký tự này lớn hơn so với mode ASCII ở cùng một tốc độ Baud Mỗi thông điệp phải được truyền liên tục như một dòng của các ký tự

Trong các mode kiểm tra lỗi thì mode Even Parity(Chẵn lẻ, chẵn) được đặt mặc

định Các mode khác(odd parity, no parity) cũng được sử dụng Bit kiểm tra chẵn lẻ có thể không được sử dụng, khi đó phải có 2 bit stop để byte truyền có đủ 11bit

Định dạng một byte truyền trong mode RTU

Các ký tự được truyền đi theo mã của nó, mã này được truyền theo thứ tự từ trái qua phải, từ bit lsb đến bit msb Cụ thể như sau:

Các bit trong byte truyền như sau:

bit Start

bit Data(Bit LSB được truyền đi đầu tiên)

bit parity(bit kiểm tra chẵn lẻ)

1 bit Stop

Có kiểm tra chẵn lẻ:

Start D0 D1 D2 D3 D4 D5 D6 D7 Par Stop

Không có kiểm tra chẵn lẻ:

Start D0 D1 D2 D3 D4 D5 D6 D7 Stop Stop

Hình 19: Định dạng của một byte truyền trong mode RTU

Định dạng khung truyền trong mode RTU

Khung truyền trong mode RTU được minh hoạ như hình vẽ dưới đây:

Hình 20: Định dạng của một khung truyền trong mode RTU

ý nghĩa của các trường như sau:

Address field: trường này có độ dài 1 byte, chứa địa chỉ của Slave khi một Slave nhận được một thông điệp mà Master gửi cho thì phải kiểm tra nội

Trang 21

dung của trường này để xem có phải thông điệp gửi cho nó hay không Nếu địa chỉ trong trường này không có trên mạng thì một lỗi sẽ xuất hiện

Function code field: trường này cũng có độ dài 1 byte, nó cho biết loại công việc mà Master yêu cầu Slave thực hiện Khi nhận được một thông điệp thì Slave phải phân tích nội dung của trường này để biết được nhiệm vụ mà Master giao cho nó làm

Thông điệp cần gửi được phát sinh bởi thiết bị truyền và được đưa và trong một khung có điểm bắt đầu và kết thúc của khung Quy định này cho phép thiết bị nhận khi nhận được một thông điệp từ thiết bị truyền có thể nhận ra đâu là điểm bắt đầu và kết thúc của khung thông điệp

Trong mode RTU, các khung thông điệp được ngăn cách bởi một khoảng không

có xung có thời gian ít nhất là 3.5 ký tự và khoảng cách giữa các ký tự trong một khung lớn nhất là 1.5 ký tự Vì vậy các khung trong thông điệp được sắp xếp như sau:

Hình 21: Định dạng của các khung trên đường truyền

Trang 22

Duới đây là sơ đồ trạng thái của Master và Slave trong mode RTU

Hình 22: Sơ đồ trạng thái của Master/Slave trong mode RTU

2.2.5.2 Mode ASCII

Khi các thiết bị đ−ợc đặt để truyền thông trong mode ASCII thì mỗi byte 8 bit

đ−ợc truyền nh− 2 ký tự ASCII Mode truyền này đ−ợc sử dụng khi liên kết truyền thông và các thiết bị không cho phép truyền trong mode RTU Ví dụ byte 0x5B đ−ợc chia thành 2 byte là 0x35 đại diện cho ký tự ‘5’ và 0x42 đại diện cho ký tự ‘B’

Định dạng một byte truyền trong mode ASCII

Hệ mã hóa: Sử dụng hệ hexa, các ký tự ASCII đ−ợc sử dụng để truyền là 0-9 và A-F

Mỗi ký tự hexa chứa 4 bit của dữ liệu của data trong mỗi ký tự ASCII của thông

điệp gửi hoặc nhận

Các bit trong byte truyền:

- 1 bit start

- 7 bit dữ liệu, bit có trọng số lớn nhất đ−ợc truyền đầu tiên

- 1 bit cho kiểm tra chẵn lẻ

- 1 bit stop

Trang 23

Bit kiểm tra chẵn lẻ được mặc định là dùng kiểm tra chẵn lẻ loại chẵn lẻ chẵn Nhưng các mode khác cũng được yêu cầu Nếu không sử dụng bit kiểm tra chẵn lẻ thì

có hai bit stop được dùng để đủ 10 bit trong byte truyền

Các bit trong byte truyền được gửi trên đường truyền nối tiếp như thế nào:

Các bit trong byte truyền được truyền từ trái sang phải theo quy luật bit có trọng

số bé nhất được truyền đầu tiên sau đó đến bit có trọng số cao hơn và cuối cùng là bit

có trọng số lớn nhất

Nếu sử dụng bit kiểm tra chẵn lẻ thì định dạng byte truyền có dạng:

Start D0 D1 D2 D3 D4 D5 D6 Par Stop

Còn nếu sử dụng bit kiểm tra chẵn lẻ thì định dạng khung truyền có dạng:

Start D0 D1 D2 D3 D4 D5 D6 Stop Stop

Hình 23: Định dạng một byte truyền trong mode ASCII

Định dạng một khung truyền trong mode ASCII

Một thông điệp Modbus được sinh ra bởi thiết bị truyền, mỗi khung truyền phải

có điểm đầu và điểm kết thúc Nó cho phép thiết bị nhận biết được khi nào là bắt đầu của một khung và khi nào là kết thúc của một khung trong quá trình nó nhận các

khung dữ liệu mà Master gửi cho nó

Trường địa chỉ củakhung thông điệp chứa hai ký tự

Trong mode ASCII thì các khung được phân biệt bởi các ký tự đặc biệt Một khung phải được bắt đầu bằng một ký tự ‘:’ có mã ASCII là 0x3A Và được kết thúc bằng hai

ký tự CR và LF có mã ASCII lần lượt là: 0x0D và 0x0A Khi thiết bị nhận được một khung thì nó dò các ký tự này để phát hiện ra đâu là bắt đầu của khung và đâu là điểm kết thúc của khung

Giữa các ký tự trong mode ASCII có một khoảng thời gian trống Nếu thời gian này lớn hơn 1ms thì có một lỗi xẩy ra trong khung truyền Một vài mạng trong thực tế cần một khoảng thời gian timeout khoảng 4-5ms

Định dạng của khung truyền được mô tả như sau:

Trang 24

Hình 24: Định dạng một khung truyền trong mode ASCII

Ta thấy rằng trường data trong khung truyền của mode ASCII có độ dài là 252 byte Trong khi của mode RTU chỉ có 252 byte Vì vậy mode RTU trong thực tế được

sử dụng nhiều hơn

Dưới đây là sơ đồ trạng thái của cả Master và Slave trong mode truyền ASCII:

Hình 25: Trạng thái của Master/Slave trong mode truyền ASCII

Nếu trong quá trình nhận mà dò thấy sự kết thúc của khung Thì LRC được tính toán và kiểm tra hoàn thành Sau đó địa chỉ của Slave được phân tích để biết được là khung gửi cho thiết bị nào trên mạng Nếu không thì khung được loại bỏ Do vậy thời

Trang 25

công việc xử lý này phải được thực hiện sớm hơn để tránh thời gian đợi kết thúc khung quá dài

2.2.6 Các phương thức kiểm tra lỗi

Để dữ liệu truyền trên đường truyền của chuẩn Modbus được an toàn và tránh những sai sót thì Modbus sử dụng hai phương thức kiểm tra lỗi là:

• Kiểm tra chẵn lẻ(parity) được sử dụng để kiểm tra cho từng ký tự

• Kiểm tra khung(LRC hoặc CRC) được sử dụng cho toàn thông điệp được gửi đi

Cả hai phương pháp này được phát ra bởi Master hoặc Slave Nó được phát ra và ghép vào trong thông điệp trước khi truyền Master và Slave có thể kiểm tra kiểm tra mỗi ký tự hoặc toàn bộ thông điệp khi nhận được

Giả sử 8 bit dữ liệu chứa trong một khung của mode RTU là: 1100 0101

Trong byte dữ liệu này thì số lượng các bit 1 là 4 Nếu chẵn lẻ-chẵn được sử dụng thì bit chẵn lẻ của khung sẽ là 0 Còn nếu chẵn lẻ-lẻ được sử dụng thì bit chẵn lẻ sẽ được

2.2.6.2 Kiểm tra lỗi của toàn bộ khung

Loại kiểm tra lỗi này phụ thuộc vào mode mà chúng ta sử dụng là RTU hoặc ASCII

• Trong mode RTU thì kiểm tra lỗi của khung sử dụng phương pháp CRC( Cycle Redundancy Checking) Trường kiểm tra lỗi CRC sẽ kiểm tra toàn bộ thông điệp

Trang 26

Trường CRC trong thông điệp có độ lớn là 2 byte, chứa 16 bit giá trị nhị phân Giá trị của CRC được tính bởi thiết bị truyền Thiết bị nhận sẽ tính CRC khi đã nhận được thông điệp và so sánh với giá trị thực trong trường CRC của khung mà nó nhận được Nếu 2 giá trị này không bằng nhau thì sẽ

có lỗi trong khung truyền

Thuật toán của phương thức này như sau:

1 Chọn một thanh ghi 16 bit mà tất cả các bit đều có giá trị là 1 được gọi là thanh ghi CRC

2 Thực hiện phép XOR 8 bit đầu tiên của thông điệp với phần thấp của thanh ghi CRC, và đưa kết quả vào trong thanh ghi CRC

3 Dịch thanh ghi CRC sang bên phải 1 bit Bit 0 sẽ thay thế bit MSB

Và sau đó kiểm tra bit LSB

4 Nếu bit LSB là 0 thì quay lại bước 3 Nếu bit này là 1 thì thực hiện XOR với giá trị 0xA001

5 Lặp lại các bước 3 và 4 cho đến khi đủ 8 lần Khi thực hiện xong thì 8 bit trong byte dữ liệu đầu tiên coi như đã được xử lý

6 Lặp lại từ bước 2 đến bước 5 cho byte tiếp theo của thông điệp, và tiếp tục thực hiện cho tất cả các byte trong thông điệp

7 Cuối cùng thì nội dung của thanh ghi CRC chính là nội dung của trường CRC

8 Khi CRC được đưa vào trong thông điệp cần truyền đi thì cách sắp xếp của nó trong khung thông điệp như sau:

Lưu đồ thuật toán của phương pháp này như sau:

Hình 26: Vị trí của 2byte CRC trong khung truyền

Trang 27

Khởi tạo thanh ghi CRC bầng giá trị 0xFFFF

Thực hiện phép XOR thanh ghi CRC với byte dữ liệu

Hình 27: Sơ đồ thuật toán của thủ tục phát mã CRC

Trang 28

• Mode ASCII sử dụng phương pháp kiểm tra lỗi LRC( Longitudinal

Redundancy Checking) Trường này có 1 byte chứa 8 bit nhị phân Giá trị của LRC được tính bởi thiết bị truyền Thiết bị nhận sẽ tính LRC khi đã nhận

được thông điệp và so sánh với giá trị thực trong trường LRC trong khung dữ liệu mà nó nhận được Nếu 2 giá trị này không bằng nhau thì sẽ có lỗi trong khung truyền

2.3 Lớp ứng dụng(Application layer)

Tầng ứng dụng của MODBUS sử dụng một giao thức gói, có vị trí tương đương với tầng 7 của mô hình tham chiếu OSI Nó cung cấp một chuẩn giao tiếp client/server giữa các thiết bị đựơc được kết nối với nhiều kiểu các kiểu khác nhau trên bus hoặc trên mạng

2.3.1 Giới thiệu về giao thức Modbus

Giao thức Modbus định nghĩa một giao thức khối dữ liệu đơn Protocol Data Unit) không phụ thuộc vào các lớp truyền thông ở phía dưới Sơ đồ của giao thức Modbus trên các bus hoặc mạng riêng biệt có thể giới thiệu thêm một vài trường trên khối dữ liệu ứng dụng

giản(PDU-Khối dữ liệu ứng dụng được xây dựng bởi client để bắt đầu một giao tiếp Function code dùng để báo cho server biết loại của yêu cầu cần thực hiện khi có thông

điệp gửi từ client Giá trị của trường này nằm trong khoảng từ 1 đến 255( trong đó từ

128 đến 255 là dùng cho mã ngoại lệ) Mã của hàm con cũng được thêm vào các mã hàm, dùng để định nghĩa loại yêu cầu phức tạp

Trường data chứa nội dung của thông điệp được gửi từ client đến server Nó mô tả nội dung của hàm được ghi trong trương function code Trường data có thể không tồn tại trong các request, khi đó server không làm bất cứ một yêu cầu nào cả

Nếu thông điệp mà client gửi cho server không có lỗi thì sau đó server gửi quay lại một thông điệp reply mà trường data của thông điệp này chứa nội dung của function

Hình 28: Khung dữ liệu của tầng ứng dụng

Trang 29

trường chứa một mã ngoại lệ(exception code) có thể được sử dụng để xác định hành

động tiếp theo được đưa vào

Ví dụ: client đọc một nhóm các đầu ra hoặc đầu vào rời rạc, hoặc nó có thể đọc hoặc ghi nội dung của các thanh ghi tại server

Khi một client gửi cho server một thông điệp request Nếu không có lỗi thì server gửi lại thông điệp reply cho client mà có trường data chứa nội dung mà client mong muốn cụ thể như sau:

Khi server dò thấy lỗi trong thông điệp request mà client gửi cho nó thì nó gửi lại cho server thông điệp reply chứa mã hàm ngoại lệ, và hàm ngoại lệ

Độ lớn của một khối dữ liệu ứng dụng có giá trị tối đa là 256 bytes Vì vậy cỡ của PDU trong truyền thông nối tiếp là:

256- Server Address(1 byte)-CRC(2 byte)=253 bytes

Do đó:

RS232/RS485 ADU=253 byte + Server address(1 byte) +

CRC(2 byte)=256 byte

TCP Modbus ADU= 253 byte + MBAP(7 byte)=260 byte

Modbus định nghĩa 3 PDU như sau:

Hình 29: Giao tiếp giữa Client/Server nếu không có lỗi

Hình 30: giao tiếp giữa Client/Server nếu xuất hiện lỗi

Trang 30

• Modbus request PDU, ký hiệu là: mb_req_pdu

• Modbus response PDU, ký hiện la: mb_rsp_pdu

• Modbus exception response pdu, ký hiệu là: mb_excep_rsp_pdu

Các hàm này được định nghĩa như sau:

• Hàm mb_req_pdu

mb_req_pdu(function_code, request_data) Trong đó:

function_code chứa 1 byte

request_data chứa n byte trường này phụ thuộc vào mã của hàm trong thông điệp và thường xuyên chứa các thông tin như: các biến tham chiếu, các biến đếm, địa chỉ offset của dữ liệu

• Hàm mb_rsp_pdu

mb_rsp_pdu(function_code, response_data) Trong đó:

function_code chứa 1 byte Nó là mã hàm của Modbus

response_data chứa n byte Nó cũng có nội dung như trong đối số request_data của hàm mb_req_pdu

được truyền trước tiên sau đó mới đến các byte có trọng số thấp hơn

Ví dụ: Một thanh ghi có độ lớn là 16 bit chứa giá trị 0x1234 thì byte 0x12 được truyền trước tiên, sau đó mới đến byte 0x34

2.3.3 Kiểu dữ liệu của Modbus

Modbus có 4 kiểu dữ liệu cơ sở được định nghĩa như dưới đây:

Kiểu dữ liệu Kiểu đối tượng Kiểu truy cập Giải thích

Bảng 7: Các kiểu dữ liệu được định nghĩa trong Modbus

Trang 31

2.3.4 Miêu tả các hàm phổ dụng của Modbus

2.3.4.1 Hàm 0x01 (Read decrete outputs – Hàm đọc các đầu ra rời rạc)

Hàm này được dùng để đọc từ 1 đến 0x07D0 trạng thái liên tiếp nhau của các của các đầu ra từ một thiết bị từ xa Giao thức khối dữ liệu trong thông điệp yêu cầu (Request PDU) chỉ rõ địa chỉ bắt đầu - là địa chỉ của đầu ra được yêu cầu đọc đầu tiên,

và số của đầu ra được đọc Trong PDU các đầu ra được định địa chỉ bắt đầu từ 0 Do vậy các đầu ra có chỉ số từ 1 đến 16 được định địa chỉ từ 0 đến 15

Một bit trong trường dữ liệu nhận được đại diện cho trạng thái của một đầu ra

đã được đọc Trạng thái của bit chính là trạng thái của đầu ra tương ứng với nó ( bit=1(ON), bit=0(OFF)) Trạng thái của bit có trọng số bé nhất trong byte dữ liệu đầu tiên là trạng thái của đầu ra đầu tiên được yêu cầu đọc

Nếu số lượng các đầu ra được trả về không là bội số cuả 8, thì các bit còn lại trong byte dữ liệu cuối cùng sẽ được chèn thêm các số 0 (có hướng từ bit có trọng số cao đến bit có trọng số thấp, cho đến bit cuối cùng của byte) Trường byte count cho biết chính xác số lượng các byte của dữ liệu đã được đọc Sau đây là cấu tạo của hàm 0x01 trong các thông điệp request, response, và error:

Trang 32

C¸c tham sè cña hµm Sè l−îng byte

sö dông Gi¸ trÞ

Byte chØ thÞ tr¹ng th¸i

Víi N* = Sè l−îng cña outputs/8 NÕu phÇn d− cña phÐp chia nµy kh¸c 0 th× N=N+1

Starting address Lo 13 Output status CD

Quantity of outputs Hi 00 Output status 6B

Quantity of outputs Lo 13 Output status 05

Tr¹ng th¸i cña c¸c ®Çu ra 27-20 ®−îc chØ ra trong gi¸ trÞ cña byte 0xCD, hoÆc

11001101 trong hÖ nhÞ ph©n §Ëu ra 27 lµ bit cã träng sè lín nhÊt (MSB) trong byte, vµ

®Çu ra 20 lµ bit cã träng sè nhá nhÊt(LSB) trong byte nµy

Víi ý t−ëng nµy c¸c bit trong byte ®−îc thÓ hiªn nh− sau: Bit cã träng sè lín nhÊt lµ bit bªn ngoµi cïng bªn tr¸i, vµ bit ngoµi cïng bªn ph¶i lµ bit LSB V× vËy c¸c

Trang 33

diện cho các đầu ra từ bit 35 đến bit 28 từ trái sang phải Như vậy các bit đựơc truyền nối tiếp, chúng được truyền từ bit LSB đến bit MSB, có nghĩa từ bit 20 đến bit 35

Trong byte dữ liệu cuối cùng, trạng thái của các đầu ra 38 đến 36 được thể hiện trong byte có giá trị 0x05 trong hệ Hex và có giá trị 0000 0101 Đầu ra 38 có trạng thái tương ứng với bit thứ 6 trong byte tính từ trái sang phải, và đầu ra 36 tương ứng với bit LSB của byte này 5 bit còn lại của byte này là các bit 0 được chèn thêm vào

Giải thuật dùng cho hàm này được mô tả như dưới đây:

Hình 31: Sơ đồ thuật toán cho hàm 0x01

Giải thích:

Khi server nhận được thông điệp mb_req_pdu, nó kiểm tra xem hàm này có

được hỗ trợ hay không bằng cách kiểm tra mã hàm mà nó nhận được sau khi đã phân tích Nếu nó không hỗ trợ hàm này thì gửi lại cho client một thông điệp

Trang 34

mb_exception_rsp có mã ngoại lệ 0x1 để báo cho client biết có một ngoại lệ trong thông điệp request mà nó nhận được

Nếu nó hỗ trợ hàm này thì nó kiểm tra số lượng các đầu ra mà server muốn đọc xem có nằm trong khoảng 0x01-0x7D0 Nếu giá trị này nằm ngoài khoảng nói trên thì

nó gửi lại cho client một thông điệp mb_exception_rsp có mã ngoại lệ 0x3 để báo cho client biết số đầu ra mà client muốn đọc không đúng theo quy định Còn nếu giá trị này phù hợp theo quy định thì nó kiểm tra địa chỉ bắt đầu của đầu ra mà client muốn đọc

đầu tiên và tổng của địa chỉ này và số lượng của các đầu ra cần đọc Nếu không phù hợp thì nó gửi cho client một thông điệp mb_exception_rsp có mã ngoại lai 0x02 để báo cho client biết không có đầu ra có địa chỉ này Còn nếu các giá trị trên đều phù hợp thì nó bắt đầu xử lý yêu cầu của client Nếu quá trình đọc các đầu ra có lỗi thì nó gửi lại cho client một thông điệp mb_exception_rsp có mã ngoại lệ 0x04 Nếu không có lỗi thì nó gửi cho client thông điệp mb_rsp_pdu Và quá trình thực hiện hàm kết thúc

2.3.4.2 Hàm 0x02 - Đọc các đầu vào rời rạc

Hàm này được dùng để đọc từ 1 đến 2000 trạng thái liên tiếp nhau của các của các đầu vào rời rạc từ một thiết bị từ xa do client yêu cầu server thực hiện Giao thức khối dữ liệu trong thông điệp yêu cầu (Request PDU) chỉ rõ địa chỉ bắt đầu - là địa chỉ của đầu vào được yêu cầu đọc đầu tiên, và số lượng của đầu vào được đọc Trong PDU các đầu vào được định địa chỉ bắt đầu từ 0 Do vậy các đầu ra có chỉ số từ 1 đến 16

được định địa chỉ từ 0 đến 15

Một bit trong trường dữ liệu của thông điệp trả lời được gửi từ client quay trở lại cho server được đại diện cho trạng thái của một đầu vào đã được đọc Trạng thái của bit chính là trạng thái của đầu ra tương ứng với nó ( bit=1(ON), bit=0(OFF)) Trạng thái của bit có trọng số bé nhất trong byte dữ liệu đầu tiên là trạng thái của đầu vào đầu tiên được yêu cầu đọc

Nếu số lượng các đầu vào được trả về không là bội số cuả 8, thì các bit còn lại trong byte dữ liệu cuối cùng sẽ được chèn thêm các số 0 (có hướng từ bit có trọng số cao đến bit có trọng số thấp, cho đến bit cuối cùng của byte) Trường byte count cho biết chính xác số lượng các byte của dữ liệu đã được đọc Sau đây là cấu tạo của hàm 0x02 trong các thông điệp request, response, và error:

Thông điệp Request:

Số lượng Byte

Trang 35

M· cña hµm 1 0x02

§Þa chØ ®Çu tiªn cña c¸c

Víi N* = Sè l−îng cña inputs/8 NÕu phÇn d− kh¸c 0 th× N=N+1

Trang 36

2.3.4.3 Hàm 0x03 - Đọc các thanh ghi lưu trữ

Hàm này dùng để đọc nội dung của một khối liên tiếp của các thanh ghi vào từ một thiết bị từ xa Trong PDU các thanh ghi được đánh địa chỉ bắt đầu từ 0 vì vậy các thanh ghi có chỉ số từ 1 đến 16 sẽ được định địa chỉ từ 0 đến 15

Dữ liệu trong thanh ghi trong thông điệp request được đóng gói trong 2 byte với mỗi thanh ghi thì byte đầu tiên chứa 4 bits cao, còn byte thứ 2 chứa 4 bit thấp Sau đây

là cấu tạo của hàm 0x03 trong các thông điệp request, response, và error:

Thông điệp Request:

Các tham số của hàm Số lượng Byte

sử dụng Giá trị

Địa chỉ đầu tiên của các

đầu vào muốn đọc 2 0x0000 - 0xFFFF

Số lượng các đầu ra

Hình 32: Sơ đồ thuật toán cho hàm 0x02

Trang 37

Gi¸ trÞ cña thanh ghi 2 x N* N hoÆc N+1

Víi N* = Sè l−îng cña c¸c thanh ghi

Ngày đăng: 25/12/2017, 12:32

TỪ KHÓA LIÊN QUAN

w