1. Trang chủ
  2. » Luận Văn - Báo Cáo

Thiết kế thiết bị gateway với chuẩn modbus RTU sử dụng STM32F103C8T6

58 7 0

Đ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

Tiêu đề Thiết Kế Thiết Bị Gateway Với Chuẩn Modbus RTU Sử Dụng STM32F103C8T6
Tác giả Ngô Văn Đức
Người hướng dẫn TS. Nguyễn Mạnh Tuấn
Trường học Trường Đại Học Bách Khoa Hà Nội
Chuyên ngành Kỹ thuật đo và tin học công nghiệp
Thể loại đồ án tốt nghiệp
Năm xuất bản 2021
Thành phố Hà Nội
Định dạng
Số trang 58
Dung lượng 4,63 MB

Cấu trúc

  • CHƯƠNG 1. ĐẶT VẤN ĐỀ (9)
  • CHƯƠNG 2. CHUẨN TRUYỀN THÔNG MODBUS (13)
    • 2.1 Chuẩn truyền thông Modbus trong công nghiệp (13)
    • 2.2 Giao thức Modbus RTU (16)
      • 2.2.1 Cấu trúc bảng tin (18)
      • 2.2.2 Bảo toàn dữ liệu (19)
    • 2.3 Kỹ thuật truyền dẫn (20)
      • 2.3.1 RS232 (20)
      • 2.3.2 RS422 (23)
      • 2.3.3 RS485 (23)
  • CHƯƠNG 3. THIẾT KẾ PHẦN CỨNG (27)
    • 3.1 Thiết kế thiết bị gateway (27)
    • 3.2 Lựa chọn linh kiện cho thiết bị (29)
    • 3.3 Thiết kế mạch nguyên lý (34)
  • CHƯƠNG 4. THIẾT KẾ PHẦN MỀM (40)
    • 4.1 Phần mềm cho vi điều khiển (40)
      • 4.1.1 Lưu đồ thuật toán của thiết bị gateway (40)
      • 4.1.2 Khối cảm biến (41)
      • 4.1.3 Khối nút nhấn (41)
      • 4.1.4 Khối LED (42)
      • 4.1.5 Khối truyền thông RTU (42)
    • 4.2 Cấu hình CubeMX (51)
    • 4.3 Thiết kế HMI (52)
  • CHƯƠNG 5. KẾT QUẢ ĐẠT ĐƯỢC (53)
    • 5.1 Thiết bị gateway (53)
    • 5.2 Màn hình HMI (55)
  • KẾT LUẬN (56)
  • Kết luận (57)
  • TÀI LIỆU THAM KHẢO (57)

Nội dung

Nội dung thực hiện:Tìm hiểu thiết bị gateway theo chuẩn truyền thông công nghiệp hiện có trên thị trường.Tìm hiểu chuẩn truyền thông Modbus trong công nghiệp.Thiết kế thiết bị gateway theo chuẩn Modbus RTU.Sử dụng thiết bị gateway đã thiết kế để truyền thông Modbus RTU trong thực tế:•Thiết kế đầu vào DI, DO và tín hiệu đo cho thiết bị gateway.•Thiết kế đường truyền vật lý RS485.•Thiết kế phần mềm cho vi điều khiển.•Thiết kế HMI Beijier iX T7E.Công cụ sử dụng:Phần mềm lập trình họ vi điều khiển STM32 Keil C uVision 5.Phần mềm thiết kế mạch in Altium.Phần mềm thiết kế HMI iXDeveloper2Kết quả của đồ án:Thiết kế được thiết bị gateway theo chuẩn Modbus RTU trên vi điều khiển STM32F103C8T6.Ứng dụng thiết bị đã thiết kế vào thực tế: Đo nhiệt độ độ ẩm của phòng, điều khiển các tín hiệu DI,DO và truyền thông Modbus RTU trên HMI Beijier iX T7E.

CHUẨN TRUYỀN THÔNG MODBUS

Chuẩn truyền thông Modbus trong công nghiệp

Modbus là một chuẩn truyền thông được phát triển vào cuối những năm 70, với sự ra đời của nó vào năm 1979 bởi công ty Modicon, hiện thuộc tập đoàn Schneider Electric’s Telemecanique Chuẩn này được thiết kế để sử dụng với các bộ điều khiển PLC.

Mỗi nhà sản xuất thiết bị đều sử dụng các giao thức truyền thông và ngôn ngữ lập trình riêng biệt, dẫn đến khó khăn trong việc tích hợp thiết bị từ nhiều hãng khác nhau vào một hệ thống thống nhất Để khắc phục vấn đề này, chuẩn truyền thông Modbus đã được phát triển, giúp cải thiện khả năng tương tác giữa các thiết bị.

Modbus là một giao thức truyền thông tiêu chuẩn, hoàn toàn miễn phí và mở, với các thông số và phương thức truyền nhận dữ liệu được công khai Nhờ khả năng kết nối và tích hợp với nhiều thiết bị khác nhau, Modbus đã trở thành lựa chọn phổ biến trong việc kết nối các thiết bị điện tử trong ngành công nghiệp.

Modbus is a communication protocol that operates at the application layer (Layer 7 of the OSI model or Layer 5 of the TCP/IP model) It employs a Client/Server or Master/Slave communication style between devices via a bus or network transmission.

Client/Server Ethernet II / 802.3 Modbus

EIA/TIA-485 Lớp vật lý Ethernet

Các thiết bị giao tiếp Modbus thông qua phương thức Tin nhắn (Yêu cầu/Trả lời - Request/Reply) Client gửi yêu cầu (Request) và Server thực hiện các chức năng tương ứng dựa vào Mã chức năng (Function Code), sau đó gửi lại phản hồi (Reply) chứa thông tin cần thiết.

Các mã chức năng của Modbus là thành phần của PDU của Tin nhắn trong quá trình Request/Reply của bên phát và bên thu.

Các loại Modbus thông dụng hiện nay:

 Modbus RTU (Serial): RS232, RS485,…

Mỗi loại Modbus đều có các đặc điểm khác nhau Tùy theo thiết bị và yêu cầu của người sử dụng mà lựa chọn loại Modbus.

Sau đây là đặc điểm của từng loại Modbus:

Dữ liệu được mã hóa theo hệ nhị phân, với một byte biểu diễn cho một byte dữ liệu gốc, là chuẩn giao tiếp lý tưởng cho RS232 và mạng RS485 đa điểm, với tốc độ từ 1200 đến 115200 baud/s, trong đó tốc độ phổ biến nhất là 9600, 38400 và 115200 baud/s Đây là chuẩn Modbus thông dụng nhất, tuy nhiên, do tin nhắn được mã hóa nhị phân, chúng không thể đọc được trong quá trình giám sát.

Modbus TCP/IP là giao thức Modbus hoạt động trên mô hình TCP/IP, trong đó Modbus thuộc lớp ứng dụng để xác định dữ liệu cần truyền, còn TCP đảm bảo việc truyền nhận dữ liệu chính xác đến đúng địa chỉ thông qua địa chỉ IP của thiết bị Với Modbus TCP/IP, dữ liệu được đóng gói trong gói tin TCP/IP, bao gồm dữ liệu và các header, và được truyền qua Ethernet.

Tất cả thông tin dữ liệu được chuyển đổi sang dạng Hexadecimal (hệ thập lục phân) và sử dụng bảng mã ASCII, dẫn đến việc mỗi byte dữ liệu gốc cần đến hai byte để biểu diễn, gấp đôi so với các giao thức Modbus RTU hoặc TCP/IP.

Trái ngược với Modbus RTU, người dùng khi sử dụng Modbus ASCII thì có thể đọc được nội dung tin nhắn trong quá trình giám sát.

Modbus ASCII chứa nhiều thông tin mã hóa lệnh hơn, dẫn đến tốc độ truyền dữ liệu chậm hơn so với Modbus RTU và Modbus TCP/IP Do đó, nó thường ít được sử dụng trong thực tế.

Modbus Gateway, hay còn gọi là Cổng giao tiếp Ethernet, là thiết bị chuyển đổi giữa Modbus RTU/ASCII và Modbus TCP/IP Thông thường, Modbus Gateway được trang bị một cổng RS232/RS485 cho Modbus RTU/ASCII và một cổng Ethernet cho Modbus TCP/IP.

Modbus TCP/IP nổi bật với nhiều ưu điểm so với Modbus RTU, bao gồm việc sử dụng cáp Ethernet giúp tiết kiệm chi phí hơn so với cáp RS232/RS485, khả năng truyền tín hiệu xa hơn và kết nối nhiều Client hơn Tuy nhiên, nhiều thiết bị chỉ hỗ trợ một trong hai loại Modbus, gây khó khăn trong việc kết hợp các thiết bị Để giải quyết vấn đề này, Modbus Gateway thường được sử dụng như một bộ phiên dịch, giúp kết nối các thiết bị vào hệ thống Modbus chung.

Mô tả chung về giao thức Modbus

Giao thức Modbus được định nghĩa là một đơn vị dữ liệu giao thức

(Protocol Data Unit – PDU) đơn giản nằm trong lớp ứng dụng trong mô hình tham chiếu OSI hay TCP/IP, độc lập với các lớp dưới

Việc sử dụng giao thức Modbus trên các đường truyền như RS232, RS485 hoặc Ethernet yêu cầu bổ sung một số trường dữ liệu, bao gồm "Địa chỉ" và "Kiểm tra lỗi", nhằm tạo thành đơn vị dữ liệu lớp ứng dụng (Application Data Unit - ADU).

Cấu trúc PDU và ADU của Modbus RTU được mô tả cụ thể như sau:

PDU bao gồm các vùng dữ liệu:

Trường mã chức năng trong Modbus PDU được mã hóa bằng một byte và có giá trị hợp lệ từ 1 đến 255, với phạm vi 128 đến 255 dành riêng cho phản hồi ngoại lệ Khi Client gửi thông điệp đến Server, mã chức năng này giúp Server xác định loại hành động cần thực hiện.

Trường dữ liệu trong thông điệp từ Client đến Server chứa thông tin bổ sung cần thiết để Server thực hiện hành động theo mã chức năng Thông tin này có thể bao gồm địa chỉ đăng ký, số lượng mục cần xử lý và số byte dữ liệu thực tế trong trường.

ADU được xây dựng theo giao thức Modbus và có thể khác nhau tùy thuộc vào loại Modbus sử dụng Thêm thông tin bổ sung vào ADU giúp Server thực hiện chính xác các hành động được xác định bởi mã chức năng.

Slave ID Fucntion Code Data CRC

Giao thức Modbus RTU

Giao thức Modbus RTU là một phương thức truyền thông nối tiếp, trong đó các cảm biến và cơ cấu chấp hành thường đóng vai trò là thiết bị Slave Các thiết bị như máy tính, PLC, vi điều khiển và thiết bị HMI có thể hoạt động như Master, nhưng đôi khi cũng có thể đảm nhận vai trò Slave trong mạng giao tiếp Modbus RTU.

Mã chức năng Dữ liệu yêu cầu

Thực hiện yêu cầu. Khởi tạo phản hồi

Mã chức năng Dữ liệu phản hồi

Nhận thông tin phản hồi

Thực hiện yêu cầu. Khởi tạo phản hồi Khởi tạo yêu cầu

Mã chức năng ngoại lệ Nhận thông tin phản hồi

Hình 2.5 Các thiết bị trong mạng Modbus RTU

Giao thức Modbus RTU được xây dựng dựa trên giao thức truyền thông nối tiếp UART, một chuẩn giao tiếp phổ biến trong vi điều khiển Giao thức UART quy định cấu trúc của gói tin, xác định cách gửi các bit của một byte Nội dung của các tin nhắn Modbus được tạo thành từ nhiều gói tin được ghép lại với nhau.

Bảng 2.2 Khung truyền một ký tự của giao thức UART

Một bảng tin UART chuẩn sử dụng trong các thiết bị Modbus RTU sẽ có cấu hình khung truyền như sau:

 Tám bit dữ liệu, trong đó bit có trọng số thấp nhất được gửi đi trước.

 Có thể sử dụng một bit kiểm tra chẵn lẻ (parity) hoặc không.

 Một bit stop nếu parity được sử dụng hoặc hai bit stop nếu không sử dụng parity.

Tuy nhiên cũng có môt số thiết bị hỗ trợ khung truyền 10 bit – 8N1: 1 start bit, 8 bit data, không sử dụng bit parity, 1 bit stop.

Trong mô hình OSI, Modbus RTU là một giao thức ở lớp ứng dụng

Lớp ứng dụng (Application Layer) cần có lớp vật lý (Physical Layer) bên dưới để kết nối với các thiết bị khác Giao thức này sử dụng đường truyền vật lý chuẩn RS232 và RS485.

Giao thức UART trong vi điều khiển sử dụng chuẩn TTL hoặc CMOS, do đó để kết nối vi điều khiển với thiết bị sử dụng giao thức Modbus RTU, cần thiết phải có mạch chuyển đổi từ TTL/CMOS sang RS232/RS485.

Giao thức Modbus RTU là một trong những giao thức phổ biến nhất, thường được sử dụng trên đường truyền vật lý RS-485 Dữ liệu được truyền theo byte với tốc độ baudrate có thể được cấu hình từ 1200 bps đến 115200 bps.

Modbus RTU hoạt động theo nguyên tắc master-slave, trong đó thiết bị master điều khiển một hoặc nhiều thiết bị slave Các thiết bị slave không thể tự động truyền dữ liệu mà phải chờ yêu cầu từ master Master có nhiệm vụ ghi hoặc đọc dữ liệu từ các thanh ghi của thiết bị slave, với mỗi thiết bị slave được gán một địa chỉ 8 bit duy nhất, không trùng lặp với các thiết bị slave khác.

Bảng tin Modbus được xây dựng dựa trên các bảng tin UART, trong đó các bảng tin Modbus phải được cách nhau bởi một khoảng thời gian tối thiểu gọi là "silent interval", tương đương ít nhất 3.5 thời gian của một bảng tin UART Để đảm bảo tính liên tục, các kí tự trong bảng tin Modbus phải được truyền đi liên tục Nếu xuất hiện một khoảng "silent interval" lớn hơn 1.5 kí tự, bảng tin đó sẽ bị coi là không hoàn thành và thiết bị nhận sẽ bỏ qua nó.

Hình 2.6 Bảng tin Modbus RTU

Bảng tin từ thiết bị Master được gọi là Query, trong khi bảng tin phản hồi từ Slave được gọi là Response Master có khả năng gửi bảng tin đến tất cả các Slave thông qua phương thức Broadcast, và khi nhận được bảng tin này, các Slave không cần phải phản hồi lại.

Bảng tin Query và Response sẽ có 4 trường: Device Address, Function Code, Data Bytes và Error Check.

Trường địa chỉ trong giao thức Modbus giúp Master xác định Slave nào đang được kết nối, với các địa chỉ Slave từ 1-247, đảm bảo không có địa chỉ nào trùng lặp Trường này nằm ở vị trí đầu tiên trong bảng tin Modbus và có kích thước 8 bit Khi Master gửi Query, địa chỉ Slave mà nó muốn làm việc sẽ được gửi trước tiên Địa chỉ trong trường Device Address của bảng tin Response cũng cần phải khớp với địa chỉ Slave để Master nhận biết phản hồi từ đúng Slave Nếu trường Device Address trong Query của Master có giá trị 0x00, thì đây là bảng tin Broadcast, cho phép tất cả các Slave nhận được thông tin này.

The Function Code, following the Device Address and consisting of 8 bits, specifies the action that the Master requests the Slave to perform, such as reading or writing one or more data points Data within Modbus devices is categorized into different types and stored in various Register Types In typical Response messages, the Slave is required to accurately respond with the Function Code sent by the Master.

Bảng 2.3 Các Function Code thông dụng

The Data field in the Query message contains supplementary information that the Slave uses to execute actions based on the Function Code In contrast, the Data field in the Response message includes the information requested by the Master.

 Error Check: Trường này dùng để kiểm tra lỗi khung truyền, nó chiếm

16 bit tương ứng 2 byte Modbus RTU sử dụng phương pháp CRC (Cyclical Redundancy Check).

Mạng Modbus áp dụng hai phương pháp bảo toàn dữ liệu: kiểm soát khung truyền và kiểm soát từng ký tự trong khung truyền Đối với chế độ RTU, có thể chọn kiểm tra bit chẵn/lẻ cho từng ký tự UART, trong khi toàn bộ khung truyền Modbus RTU được kiểm tra bằng mã CRC.

Khi cấu hình cho Master, cần chọn một khoảng thời gian timeout đủ lớn để đảm bảo mọi Slave có thể phản hồi trong điều kiện bình thường Nếu Slave phát hiện lỗi ở Query từ Master, nó sẽ không gửi phản hồi, khiến Master nhận biết lỗi và thực hiện các hành động cần thiết Ngoài ra, việc gửi thông báo tới một Slave không tồn tại cũng sẽ dẫn đến timeout.

Mã CRC được sử dụng trong chế độ RTU với độ dài 16 bit, sử dụng đa thức sinh G = 1010 0000 0000 0001 Trong quá trình truyền khung bảng tin, byte thấp của mã CRC sẽ được gửi trước, sau đó là byte cao.

Kỹ thuật truyền dẫn

RS232 là một trong những giao thức phổ biến nhất cho việc kết nối thiết bị ngoại vi với máy tính, nhờ vào khả năng tương thích và kết nối đơn giản giữa các nhà sản xuất khác nhau Mặc dù RS232 là tiêu chuẩn giao tiếp được sử dụng rộng rãi, nhưng nó có nhược điểm về tốc độ dữ liệu và chiều dài cáp Cụ thể, RS232 hỗ trợ tốc độ truyền tối đa 19200 bps và chiều dài cáp tối đa là 20 mét.

RS232 defines the signal connection between Data Terminal Equipment (DTE), such as computers, and Data Communication Equipment (DCE), which includes devices like modems.

Hình 2.7 Giao tiếp RS232 giữa các thiết bị

RS232 là một tiêu chuẩn tích hợp quan trọng, giúp đảm bảo không xảy ra xung đột giữa thiết bị đầu cuối dữ liệu (DTE) và thiết bị đầu cuối dữ liệu (DCE) Tiêu chuẩn này quy định các thông số kỹ thuật như mức điện áp, mức tín hiệu, pin và điều khiển dữ liệu giữa thiết bị chủ và các thiết bị ngoại vi của nó.

2.3.1.1 Đặc tính điện Đặc tính điện của RS232 định nghĩa thông số kỹ thuật liên quan đến mức điện áp, trở kháng đường dây và tốc độ thay đổi mức tín hiệu.

Sử dụng phương thức truyền không đối xứng giúp thể hiện các trạng thái logic 1/0 của tín hiệu số thông qua điện áp chênh lệch giữa dây dẫn và đất.

Phương thức truyền đối xứng sử dụng điện áp chênh lệch giữa hai dây dẫn, giúp triệt tiêu nhiễu giữa chúng Tuy nhiên, nhược điểm của phương thức này là nhiễu trên đường dây lớn hơn so với truyền đối xứng, do khả năng giảm thiểu nhiễu không hiệu quả bằng.

RS232 có mức điện áp vào/ra không tương thích với TTL, vì vậy cần sử dụng bộ chuyển đổi điện áp MAX232 để chuyển đổi mức logic TTL sang mức điện áp của RS232 và ngược lại.

Trong giao thức RS232, logic '1' được xác định trong khoảng điện áp -15V đến 3V, trong khi logic '0' nằm trong khoảng +3V đến +15V Điều này có nghĩa là điện áp thấp tương ứng với mức logic '1', còn điện áp cao tương ứng với mức logic '0'.

Trong giao thức RS232, logic '1' tương ứng với điện áp -12V, trong khi logic '0' là +12V Tất cả các điện áp này đều được so sánh với mức nối đất chung GND Đặc biệt, bất kỳ điện áp nào nằm trong khoảng từ -3V đến +3V sẽ được xem là trạng thái logic không xác định.

Logic ‘1’ (-15V đến 3V) được gọi là Mark, logic ‘0’ (3V đến 15V) được gọi là Space.

Tốc độ thay đổi mức tín hiệu, hay còn gọi là Slew Rate, là một đặc tính điện học quan trọng, trong đó Slew Rate tối đa của RS232 được giới hạn ở 30V/µs Tốc độ truyền tối đa (Maximum bit rate) đạt 20Kbps Những giới hạn này giúp giảm thiểu hiện tượng giao tiếp chéo (cross-talk) với các tín hiệu lân cận.

Line Impedance (trở kháng đường dây)

Trở kháng đường dây giữa thiết bị DTE và DCE được quy định trong khoảng 3Ω đến 7Ω, với chiều dài tối đa của dây cáp là 15m.

RS232 có hai loại chân chính là 9 chân và 25 chân, nhưng hiện nay, với sự phát triển của các dòng máy hiện đại, chân 25 ngày càng ít được sử dụng.

Đầu nối DE9, thường bị nhầm lẫn với DB9, là một loại đầu nối D-Sub có 9 chân Trong hệ thống này, thiết bị DTE thường sử dụng đầu nối đực, trong khi thiết bị DCE sử dụng đầu nối cái, mặc dù không phải lúc nào cũng đúng Để xác định loại thiết bị, bạn có thể đo điện áp giữa chân 3 và 5 của DE9 bằng Volt kế; nếu điện áp nằm trong khoảng -15V đến -3V, thiết bị là DTE, còn nếu điện áp xuất hiện ở chân 2, thiết bị là DCE.

Hình 2.8 Sơ đồ chân RS232

Chức năng từng chân được mô tả trong Bảng 2 4

Bảng 2.4 Chức năng chân của RS232

Châ n Chức năng Chiều thông tin

1 Data Carrier Detect (DCD) Từ DCE

2 Receive Data Line (RD) Từ DCE

3 Transmit Data Line (TD) Đến DCE

6 Data Set Ready (DSR) Từ DCE

7 Request To Send (RTS) Đến DCE

8 Clear To Send (CTS) Từ DCE

9 Ring Indicate (RI) Từ DCE

Chân 1: Data Carrier Detect (DCD): Phát tín hiệu mang dữ liệu.

Chân 2: Receive Data (RxD): Nhận dữ liệu.

Chân 3: Transmit Data (TxD): Truyền dữ liệu.

Chân 4: Data Terminal Ready (DTR): Đầu cuối dữ liệu sẵn sàng được kích hoạt bởi bộ phận khi muốn truyền dữ liệu.

Chân 6: Data Set Ready (DSR): Dữ liệu sẵn sàng, được kích hoạt bởi bộ truyền khi nó sẵn sàng nhận dữ liệu.

Chân 7: Request To Send (RTS): yêu cầu gửi, bộ truyền đặt đường này lên mức hoạt động khi sẵn sàng truyền dữ liệu.

Chân 8: Clear To Send (RTS): Xóa để gửi, bộ nhận đặt đường này lên mức hoạt động để thông báo cho bộ truyền là nó sẵn sàng nhận tín hiệu.

RS422 (EIA/TIA-422) is a communication standard that pertains to serial data transmission between a host (DTE - Data Terminal Equipment) and a peripheral device (DCE - Data Circuit-Terminating Equipment).

THIẾT KẾ PHẦN CỨNG

Thiết kế thiết bị gateway

Thiết bị gateway được thiết kế để truyền thông theo giao thức Modbus RTU, một chuẩn truyền thông công nghiệp Thiết bị này có ngõ ra chuyên dụng để thực hiện chức năng truyền thông Modbus RTU hiệu quả.

Khi truyền tín hiệu, việc đưa tín hiệu từ bên truyền và bên nhận về một chuẩn chung là cần thiết để xử lý dữ liệu nhanh chóng Thiết bị gateway được thiết kế với đầu vào tương thích với các tín hiệu trong công nghiệp, giúp ứng dụng hiệu quả trong môi trường công nghiệp.

Trong hệ thống điều khiển công nghiệp, các thiết bị điều khiển lấy dữ liệu từ các tín hiệu Input bao gồm: DI (Digital Input – đầu vào số), AI

Đầu vào tương tự (Analog Input) và điều khiển hệ thống thông qua các tín hiệu đầu ra, bao gồm đầu ra số (Digital Output - DO) và đầu ra tương tự (Analog Output - AO).

Các tín hiệu số (DI, DO) chỉ có hai trạng thái ON/OFF với logic 0 và 1, tương ứng với mức điện áp của thiết bị điều khiển Trong khi đó, tín hiệu tương tự (DO, AO) sử dụng với PLC có hai dạng chính là tín hiệu điện áp và dòng điện.

 Tín hiệu dòng điện: 0 ~ 20mA, 4 – 20mA,…

Do vậy cần thiết kế thiết bị gateway mà đầu vào của nó là các tín hiệu

DI, DO và tín hiệu đo lường, với sơ đồ kết nối như hình vẽ:

Sơ đồi khối của hệ thống:

Thiết bị gateway nhận đầu vào từ các tín hiệu DI, DO và tín hiệu đo lường Vi điều khiển sẽ đọc các tín hiệu DI cùng với tín hiệu đo lường, sau đó truyền dữ liệu qua giao thức Modbus RTU đến thiết bị điều khiển như HMI hoặc máy tính Khi thiết bị điều khiển cần thực hiện các yêu cầu điều khiển tín hiệu, quá trình này sẽ được thực hiện một cách hiệu quả.

DO, thiết bị điều khiển gửi yêu cầu về vi điều khiển thông qua giao thức Modbus

RTU, khi nhận được yêu cầu, vi điều khiển thực hiện điều khiển trạng thái của các tín hiệu DO.

DI: Mức logic 0 – 5V (mức logic tương thích với chuẩn TTL) đưa vào các cổng

GPIO Input của vi điều khiển.

DO: Mức logic 0 – 5V (mức logic tương thích với chuẩn TTL) đưa vào các cổng

GPIO Ouput của vi điều khiển.

Tín hiệu đo lường: Tín hiệu cảm biến được đưa đến các cổng của vi điều khiển

Tùy theo chuẩn giao tiếp của cảm biến mà sử dụng ngoại vi thích hợp trên vi điều khiển để giao tiếp với cảm biến.

 Nếu output của cảm biến là tín hiệu số thì vi điều khiển đọc trực tiếp các tín hiệu số này.

Khi cảm biến cung cấp tín hiệu tương tự (0 ~ 10V hoặc 4 – 20mA), tín hiệu này sẽ được kết nối với bộ chuyển đổi tương tự sang số (ADC) để chuyển đổi thành tín hiệu số mà vi điều khiển có thể đọc Nếu vi điều khiển đã tích hợp sẵn ADC, thì không cần sử dụng bộ chuyển đổi ADC bên ngoài Ngược lại, nếu vi điều khiển không có ADC tích hợp, sẽ cần một bộ chuyển đổi ADC bên ngoài.

Hiển thị: Có thể truyền lên HMI hoặc PC tùy theo thiết kế của hệ thống.

Nguồn cung cấp: Nguồn cung cấp riêng cho khối điều khiển (vi điều khiển) và nguồn cung cấp riêng cho HMI

Thiết kế đầu vào cho thiết bị gateway được thực hiện dựa trên mô hình thiết kế của thiết bị Trong phạm vi của đồ án, số lượng tín hiệu vào của thiết bị gateway đã được xác định cụ thể.

 Số tín hiệu đo lường: 2

Thiết kế ứng dụng dựa trên thiết bị gateway đã được phát triển, trong khuôn khổ đồ án này, chúng tôi sẽ thiết kế một ứng dụng thực tế sử dụng thiết bị gateway Đầu vào của thiết bị gateway bao gồm các yếu tố quan trọng cần được xác định rõ ràng để đảm bảo hiệu quả trong quá trình hoạt động.

 2 tín hiệu DI: 2 nút nhấn

 2 tín hiệu DO: 2 đèn báo

 2 tín hiệu đo lường: o Cảm biến nhiệt độ DHT22 o Cảm biến nhiệt độ DS18B20

Hoạt động của thiết bị như sau:

Khi nhấn nút, đèn hiển thị trên màn hình HMI sẽ chuyển trạng thái từ ON sang OFF và ngược lại, đồng thời giao tiếp với các tín hiệu DI.

Khi người dùng nhấn nút trên màn hình HMI, đèn báo sẽ chuyển trạng thái từ ON sang OFF hoặc ngược lại, thông qua giao tiếp với các tín hiệu DO.

Đọc và hiển thị giá trị đo từ hai cảm biến nhiệt độ và độ ẩm DHT22 và DS18B20 trên màn hình HMI, sử dụng giao tiếp tín hiệu đo lường để truyền tải thông tin chính xác.

Lựa chọn linh kiện cho thiết bị

Vi điều khiển cần được chọn lựa sao cho có đủ số chân GPIO để đáp ứng yêu cầu giao tiếp với số lượng tín hiệu thiết kế, bao gồm 2 tín hiệu đầu vào (DI), 3 tín hiệu đầu ra (DO) và 2 tín hiệu đo lường.

Trên thị trường hiện nay có nhiều loại vi điều khiển như Atmega328, 8051, PIC (chẳng hạn như PIC16F877) và STM32 (bao gồm các dòng STM32F1, STM32F4) Việc lựa chọn vi điều khiển phù hợp phụ thuộc vào ứng dụng thực tế của từng dự án.

Đồ án này lựa chọn sử dụng vi điều khiển STM32F103C8T6 của hãng ST, một dòng vi điều khiển cơ bản nhưng đáp ứng được các ứng dụng thông thường với giá cả hợp lý Việc lựa chọn dòng vi điều khiển này cũng giúp cho việc thay thế trở nên dễ dàng hơn do sự thông dụng của nó trên thị trường.

Một vài đặc điểm của STM32F103C8T6:

 Tần số clock: tối đa 72 MHz

 Bộ nhớ: o Flash: 64 hoặc 128 Kbyte o SRAM: 20 Kbyte

 Ngoại vi: Timer, SPI, IIC, USART, CAN, USB, ADC, DAC

STM32F103C8T6 có 5 cổng I/O và tối đa 80 chân I/O, nhưng trong thực tế, số lượng chân I/O có thể sử dụng không đạt được con số tối đa này Tuy nhiên, số chân I/O hiện có vẫn đủ để giao tiếp với các tín hiệu đầu vào (DI), đầu ra (DO) và các tín hiệu đo lường đã được thiết kế.

Truyền thông Modbus RTU: Tín hiệu đầu ra của vi điều khiển

STM32F103C8T6 sử dụng mức tín hiệu TTL, trong khi tín hiệu đầu vào của HMI/PC là RS485, dẫn đến sự không tương thích giữa hai chuẩn này Do đó, cần chuyển đổi tín hiệu TTL từ vi điều khiển sang tín hiệu RS485 Linh kiện IC MAX485 được chọn để thực hiện quá trình chuyển đổi này.

Một vài thông số của MAX485 được thể hiện trong Bảng 3 6

Bảng 3.6 Mức điện áp IC MAX485

Tín hiệu Mức điện áp

Control Input Voltage (,DE) -0.5V ~ Vcc+0.5V Driver Input Voltage (DI) -0.5V ~ Vcc+0.5V Receiver Output voltage (DO) -0.5V ~ Vcc+0.5V Output

HMI (Human-Machine Interface) có chức năng hiển thị dữ liệu, vẽ biểu đồ và điều khiển tín hiệu, đóng vai trò quan trọng trong công nghiệp để hiển thị thông tin tại chỗ Nhiều loại HMI hiện nay sử dụng chuẩn đầu vào RS485 (giao thức Modbus RTU) như Siemens, Mitsubishi, Weintek, Schneider và Beijier Trong dự án này, HMI được chọn là Beijier iX T7E, với nguồn cấp được cung cấp tại chỗ.

Hình 3.15 HMI Beijier iX T7E

Dữ liệu từ hệ thống hiển thị trên HMI có thể được truyền lên máy tính, cho phép sử dụng các phần mềm DCS/SCADA thông qua giao thức Modbus RTU.

DI: Tín hiệu DI được chọn là nút nhấn 2 chân.

Hình 3.16 Nút nhấn 2 chân

DO: Tín hiệu DO được chọn là LED SMD 0805.

Tín hiệu đo lường: Sử dụng cảm biến đo nhiệt độ DHT22 và DS18B20

Hình 3.18 Cảm biến nhiệt độ DHT22

Hình ảnh DS18B20 trong thực tế:

Hình 3.19 Cảm biến nhiệt độ DS18B20

1 HMI Beijier iX T7E yêu cầu nguồn cung cấp 24V, dòng điện 250mA, công suất 6.0W Nguồn được chọn để cung cấp cho HMI là nguồn 24V 2A.

Hình 3.20 Nguồn 24V 2A cấp cho HMI

2 Nguồn cung cấp cho thiết bị gateway:

Vi điều khiển và khối LED cần nguồn 3V3, trong khi IC MAX485, DHT22 và DS18B20 yêu cầu nguồn 5V Thiết kế nguồn cung cấp 12V sẽ được điều chỉnh qua khối ổn áp 5V để cung cấp điện cho MAX485, DHT22 và DS18B20 Nguồn 5V sau đó sẽ được ổn áp thành 3V3 để nuôi vi điều khiển và khối LED.

Phần nguồn cung cấp cho mạch được thể hiện theo sơ đồ sau đây

Hình 3.21 Sơ đồ khối nguồn cung cấp cho STM32F103C8T6

Bộ vi điều khiển STM32F103C8T6 yêu cầu nguồn đầu vào từ 2V đến 3V6 (VDD) Cụ thể, khi sử dụng ADC, VDD cần nằm trong khoảng từ 2V4 đến 3V6, còn khi không sử dụng ADC, VDD có thể nằm trong khoảng từ 2V đến 3V6 Trong thực tế, giá trị VDD thường là 3.5V với dòng IVDD là 150mA, dẫn đến công suất tiêu thụ khoảng 0.495W khi sử dụng nguồn 3.3V.

 Khối LED (DO): o Nguồn cung cấp: 3V3 o Dòng điện định mức LED SMD: 20mA o Vì 2 LED nên tổng công suất: 2 * 3.3V * 20mA = 0.132W

Khối nút nhấn (DI) là dòng cấp từ vi điều khiển, cung cấp nguồn cho các chân GPIO hoạt động Nút nhấn được kết nối với các chân GPIO này để thực hiện chức năng điều khiển.

 Các tín hiệu đo lường: o DHT22: Nguồn 5V, dòng điện 1.5mA, tổng công suất bằng 5V * 1.5mA = 0.0075W o DS18B20: Nguồn 5v, dòng điện 1.5mA, tổng công suất 5V * 1.5mA = 0.0075W

 MAX485 nguồn cung cấp 5V, với linh kiện chân dán SMD tổng công suất tiêu thụ là 471mW = 0.471W (datasheet của MAX485).

Khối 3V3 yêu cầu tổng công suất là 0.627W, được cung cấp bởi IC ổn áp 3.3V RT9193-33GB IC này có công suất cung cấp tối đa 400mW (0.4W) trong dạng SOT-23-5, với công suất đầu ra 3.3V đạt 300mA, tương đương 0.99W Công suất này đủ để cung cấp cho vi điều khiển và khối LED.

 Khối 5V tổng công suất yêu cầu cho các phần tử tiêu thụ chính:

Công suất tổng cộng được tính toán là 0.486W, được cung cấp bởi IC ổn áp 5V Chúng tôi đã chọn LM2596S với các thông số đầu ra như sau: điện áp 5V, dòng đỉnh 3A và công suất đầu ra tối đa 15W Với công suất 15W, IC này đủ khả năng cung cấp cho các phần tử tiêu thụ một cách hiệu quả.

Ổn áp 5V được chọn là LM2596S, với nguồn cung cấp 12V Để đạt công suất đầu ra 15W, dòng điện đầu vào tối thiểu cần là 1.25A, tính toán từ công thức 15W/12V Do đó, nguồn cung cấp cần đảm bảo tối thiểu 1.25A.

Hình 3.22 Nguồn tổ ong 12V 2A

Thiết kế mạch nguyên lý

Công cụ: Phần mềm thiết kế mạch in Altium.

Thiết kế nguyên lý cho vi điều khiển STM32F103C8T6 của ST được thực hiện dựa trên tài liệu chính thức của hãng, với một số tùy biến nhỏ để phù hợp với mục đích của đồ án.

Hình 3.23 Nguyên lý STM32F103C8T6

Chân BOOT0 được nối đất thông quả trở 10k Lý do như sau:

STM32F103C8 có 3 chế độ BOOT:

Hình 3.24 Chế độ BOOT của STM32F103C8 [ CITATION ST18 \l 1033 ]

 Chân BOOT = 0: Boot từ Flash Thực thi chương trình do người dùng viết code nạp vào.

 Chân BOOT0 = 1, BOOT1 = 0: Chạy chương trình từ bộ nhớ hệ thống: chương trình bootloader của hãng ST.

 Chân BOOT0 = 1, BOOT1 = 1: Chạy chương trình từ RAM.

Với thiết kế thông thường, nối chân BOOT0 qua điện trở 10k xuống GND để khi cấp nguồn chip sẽ chạy luôn chương trình người dùng nạp vào.

Phần tạo dao động cho mạch, sử dụng thạch anh nội 8MHz (tham khảo của ST).

Hình 3.25 Thạch anh tạo dao động cho vi điều khiển

Hai tụ 22pF được sử dụng để cải thiện độ ổn định tần số dao động trong mạch Đối với các ứng dụng yêu cầu tạo Timer chính xác ở mức micro giây, việc duy trì tần số dao động ổn định là rất quan trọng.

STM32F103C8 hỗ trợ giao tiếp với thạch anh ngoại, cho phép sử dụng thêm thạch anh ngoài 8MHz để phục vụ các mục đích khác Theo nguyên lý của ST, thạch anh ngoại 32.768kHz thường không cần thiết trong các ứng dụng thông thường Tuy nhiên, trong đồ án này, việc sử dụng Watchdog Timer yêu cầu có thạch anh ngoại, do đó mạch nguyên lý cho thạch anh ngoại được thiết kế như trong tài liệu tham khảo của ST.

Hình 3.26 Thạch anh ngoại cho STM32F103C8

STM32F103C8 không cần sử dụng thêm bất kỳ thêm mạch reset bên ngoài nào.

Mạch reset cho STM32F103C8 có thể hoạt động hiệu quả hơn khi kết hợp tụ 104 với điện trở 10k Nguồn 12V cung cấp cho thiết bị được điều chỉnh qua ổn áp LM2596S, với đầu ra là 5V Nguyên lý hoạt động của ổn áp LM2596S có thể tham khảo trong datasheet của sản phẩm.

Hình 3.28 Ổn áp 5V sử dụng LM2596S

Vì STM32F103C8 yêu cầu nguồn cung cấp 3.3V, mạch nguyên lý cho ổn áp 3.3V cung cấp cho vi điều khiển (tham khảo của ST):

Hình 3.29 Ổn áp 3.3V dùng RT9193-33GB

Cảm biến DHT22 và DS18B20 đều sử dụng giao thức 1-Wire, kết nối bus dữ liệu với nguồn cung cấp thông qua trở kéo 4.7k Nguồn cung cấp cho các cảm biến này là nguồn ngoài, không sử dụng nguồn ký sinh của bus nhằm đảm bảo độ tin cậy và tăng cường tính ổn định.

Hình 3.30 Nguyên lý cho cảm biến

Về phần nút nhấn, được nối thẳng với chân I/O của vi điều khiển và nối xuống đất chứ không qua điện trở kéo

Trên các chân I/O của STM32F103C8 đã được trang bị sẵn trở kéo, vì vậy không cần sử dụng trở kéo ngoài Việc tận dụng các trở kéo có sẵn này giúp đơn giản hóa mạch và giảm thiểu linh kiện cần thiết cho nút nhấn.

Hình 3.32 Trở kéo có sẵn trên STM32F103C8

Về phần LED cho mạch, trong đồ án chọn LED SMD 0805 có điện áp định mức của LED là 2.4V, dòng định mức 20mA (tra trong datasheet của LED SMD 0805):

LED được kết nối theo kiểu sinh dòng, giúp đảm bảo độ sáng ổn định cho LED Trong trường hợp mắc hạn dòng, dòng ra từ vi điều khiển sẽ thấp, không đủ cung cấp dòng định mức cần thiết cho LED.

Về giao thức cho Modbus RTU, sử dụng đường truyền vật lý RS485

Tín hiệu TTL từ vi điều khiển, với các mức cao và thấp, được chuyển đổi qua bộ MAX485 thành tín hiệu tương ứng trên đường bus A và B Việc này cần thiết vì mức điện áp của RS232/RS485 không tương thích với tín hiệu TTL.

Khi MCU cấp tín hiệu TTL thấp cho bộ chuyển đổi MAX48, điện áp tại đầu B sẽ cao hơn điện áp tại đầu A Ngược lại, khi tín hiệu TTL cao được cấp vào, điện áp tại đầu A sẽ vượt trội hơn điện áp tại đầu B.

Chân 2 và 3 của MAX485 được nối với nhau và nối với I/O của vi điều khiển Khi ở chế độ truyền, set mức logic cho chân I/O này ở mức cao và ngược lại set ở mức thấp ở chế độ nhận dữ liệu Modbus hoạt động theo bán song công (half – duplex) Các điện trở kéo R6, R7, R9 là không cần thiết, có thể nối trực tiếp với vi điều khiển Ở đây sử dụng trở kéo để đảm bảo trạng thái chân 1, 2, 3,

4 được xác định (mức cao) ngay cả khi vi điều khiển bị mất nguồn, hay ở trạng thái chờ (không có truyền/nhận dữ liệu).

Điện trở R10 và R13 là hai điện trở phân cực quan trọng, giúp duy trì sự chênh lệch điện áp khoảng 200mV giữa điểm A và B khi bus không hoạt động Điều này ngăn chặn hiện tượng nhảy mức tín hiệu, giúp bus luôn ở trạng thái cao khi nghỉ Nếu bus rơi vào mức thấp, nó có thể bị hiểu nhầm là đang chuẩn bị truyền hoặc nhận tín hiệu, gây ra sự cố trong quá trình truyền thông.

Sơ đồ nguyên lý của toàn bộ thiết bị được thể hiện ở Hình 3 35

Hình 3.35 Nguyên lý của thiết bị gateway

THIẾT KẾ PHẦN MỀM

Phần mềm cho vi điều khiển

4.1.1 Lưu đồ thuật toán của thiết bị gateway

Khởi tạo phần cứng Đọc cảm biến, trạng thái nút nhấn, trạng thái Led

Gửi request đến slave có địa chỉ là ID

Có dữ liệu từ slave Timeout

Trong đồ án này, chúng tôi đã chọn sử dụng hai loại cảm biến là DHT22 và DS18B20 để đo nhiệt độ và độ ẩm Cả hai cảm biến đều sử dụng giao thức giao tiếp 1-Wire, giúp đơn giản hóa việc kết nối và truyền dữ liệu.

Sơ đồ thuật toán đọc cảm biến:

Giá trị từ cảm biến được vi điều khiển đọc và ghi vào vùng thanh ghi Holding của Modbus Master sẽ truy cập vào thanh ghi này để lấy giá trị đo được từ cảm biến.

Lưu đồ thuật toán đọc nút nhấn:

Bắt đầu Đọc giá trị nhiệt độ, độ ẩm từ cảm biến

Ghi vào thanh ghi Holding

Thay đổi trạng thái thanh ghi Discrete Input

Khi nhấn nút, thiết bị phát hiện sự thay đổi thông qua việc đọc trạng thái đầu vào trên chân GPIO Khi có sự thay đổi trên chân I/O, thiết bị sẽ cập nhật trạng thái của vùng thanh ghi Discrete Input, chuyển từ mức 0 sang 1 hoặc ngược lại.

Lưu đồ thuật toán cho khối LED:

Giá trị trên vùng thanh ghi Coil thay đổi khi Master thay đổi trạng thái

Vi điều khiển sử dụng thanh ghi Coil để kiểm tra trạng thái ON/OFF Khi thanh ghi Coil thay đổi, nó sẽ điều khiển trạng thái của LED Nếu giá trị thanh ghi Coil bằng 0, LED sẽ tắt, trong khi nếu giá trị thanh ghi Coil bằng 1, LED sẽ bật.

Khối truyền thông mô tả quá trình request – respond giữa master – slave, quá trình tạo CRC, và quá trình đọc/ghi các vùng thanh ghi.

Trong phần lý thuyết Modbus đã trình bày về PDU và ADU Giao thức

Modbus định nghĩa 3 loại PDU:

 Modbus Request PDU, mb_red_pdu

 Modbus Responde PDU, mb_rsp_pdu

 Modbus Exception Response PDU, mb_excep_rsp_pdu

Thanh ghi Coil thay đổi trạng thái Y

The ON/OFF LED mb_red_pdu and mb_rsp_pdu are defined as mb_red_pdu, mb_rsp_pdu {function_code, request_data}, where function_code is a 1-byte Modbus function code and request_data consists of n bytes of data Additionally, mb_excep_rsp_pdu is defined as {exception_function_code, request_data}, with exception_function_code being a 1-byte Modbus function code plus 0x80, and exception_code as a 1-byte Modbus exception code For more details, refer to the source.

Chờ yêu cầu từ master

Kiểm tra giá trị dữ liệu ExceptionCode = 3

Trong các khối so sánh, nếu kiểm tra hợp lệ, tiến hành bước tiếp theo; ngược lại, nếu kiểm tra không hợp lệ, sẽ trả về một ngoại lệ tương ứng với mã ExceptionCode từ 1 đến 6 Khi xảy ra ExceptionCode, cần gửi thông báo về cho master và chờ yêu cầu tiếp theo.

Mã CRC được tạo theo nguyên tắc như sau [ CITATION mod06 \l 1033 ]:

1 Load vào thanh ghi 16 bit giá trị 0xFFFF (mọi bit đều bằng 1) Gọi đây là thanh ghi CRC.

2 XOR tám bit LSB (byte thấp) của thanh ghi CRC với byte dữ liệu đầu tiên của khung truyền, kết quả thu được đặt vào thanh ghi CRC.

3 Thực hiện phép dịch thanh ghi CRC sang phải 1 bit Kiểm tra bit LSB vừa được dịch ra.

4 Nếu bit LSB bằng 1, thực hiện phép XOR bit của thanh ghi CRC với đa thức sinh của Modbus RTU CRC-16: (CRC-16 chuẩn ANSI) giá trị tương ứng là của nó là 0x8005, giá trị đảo (reversed) của nó là 0xA001 Thực hiện phép XOR của thanh ghi CRC với 0xA001.

Nếu bit LSB bằng 0, lặp lại thực hiện bước 3

5 Giá trị CRC được tính xong khi đã hoàn thành đủ 8 lần dịch (vì thanh ghi CRC 16 bit), ở mỗi lần dịch thực hiện phép kiểm tra ở bước 3 và bước 4.

6 Ở các byte tiếp theo của khung truyền, thực hiện lặp lại các bước từ bước

7 Nội dung cuối cùng của thanh ghi CRC chính là giá trị CRC.

8 Khi CRC được đặt vào message, các byte thấp và byte cao của nó phải được đảo lại.

Lưu đồ thuật toán cho phần tạo CRC:

 N = số bit mang thông tin

 POLY: đa thức sinh của CRC-16 Modbus = 0x8005

 Trong CRC 16, byte được truyền đầu tiên là byte LSB

4.1.5.3 Đọc Coil, Discrete Input, Holding Register, Input Register

ExceptionCode = 01 Function Code hợp lệ?

ExceptionCode = 03 Số lượng thanh ghi đọc hợp lệ?

ExceptionCode = 02 Địa chỉ có hợp lệ?

Gửi mb_exception_rsp Kết thúc

In subroutine blocks, if the returned result is valid, the subsequent steps will be executed; otherwise, an ExceptionCode will be returned, the master will be notified with the exception code, and the process will conclude.

Về cách thức thì thuật toán đọc các vùng thanh ghi tương tự như nhau, chỉ khác nhau về địa chỉ thanh ghi và dải địa chỉ thanh ghi.

4.1.5.4 Ghi vào một thanh ghi Coil

ExceptionCode = 01 Function Code hợp lệ?

ExceptionCode = 02 Địa chỉ output == OK?

Gửi mb_exception_rsp Kết thúc

4.1.5.5 Ghi vào một thanh ghi Holding

ExceptionCode = 01 Function Code hợp lệ?

ExceptionCode = 02 Địa chỉ thanh ghi == OK?

Gửi mb_exception_rsp Kết thúc

4.1.5.6 Ghi nhiều thanh ghi Coil

Trong đó N = số thanh ghi Coil cần ghi /8 (do giá trị Coil chỉ là một bit ON/OFF), nếu phần dư khác 0 thì N = N +1.

ExceptionCode = 01 Function Code hợp lệ?

Số lượng thanh ghi hợp lệ và Byte Count = N?

ExceptionCode = 02 Địa chỉ có hợp lệ?

Gửi mb_exception_rsp Kết thúc

4.1.5.7 Ghi nhiều thanh ghi Holding

ExceptionCode = 01 Function Code hợp lệ?

Số lượng thanh ghi hợp lệ và Byte

ExceptionCode = 02 Địa chỉ có hợp lệ?

Gửi mb_exception_rsp Kết thúc

Cấu hình CubeMX

Khung truyền của Modbus RTU được xây dựng dựa trên giao thức truyền thông nối tiếp UART, sử dụng UART không đồng bộ cho STM32F103C8 Để thực hiện truyền half-duplex, cần thêm một chân I/O Tốc độ truyền phổ biến trong công nghiệp cho Modbus là 9600 baud, vì vậy cấu hình UART nên được thiết lập ở tốc độ 9600 bit/s.

Hình 4.36 Cấu hình UART cho vi điều khiển

Khung truyền của Modbus không có các bit start và stop như UART để xác định thời điểm bắt đầu và kết thúc dữ liệu, mà thay vào đó, nó được quy định theo một cấu trúc cụ thể để nhận diện thông tin truyền tải.

Hình 4.37 Khung truyền Modbus RTU

Giao thức Modbus quy định thời gian tối thiểu trước mỗi khung truyền là 3.5 character và thời gian kết thúc tối thiểu 3.5 character.

Thời gian truyền một character được tính như sau:

Baudrate = 9600 bit/s => Thời gian truyền 1 bit: s

Khung truyền UART: 1 bit start – 8 bit data – 1 bit parity – 1 stop bit, tổng

11 bit Nghĩa là một character là 11 bit chứ không phải 8 bit, do đó thời gian truyền một character bằng s Do đó thời gian của 3.5 character bằng

Sử dụng Timer của vi điều khiển để tạo ra khoảng thời gian 4010us, Timer sẽ đếm từ 0 và đặt lại khi đạt giá trị này Thời gian giữa các lần truyền byte ngắn hơn nhiều so với thời gian 3.5 ký tự Khi có ngắt truyền hoặc nhận UART, Timer sẽ bắt đầu đếm Nếu ngắt tiếp theo không phải là ngắt của Timer, dữ liệu vẫn chưa được truyền xong và chưa phải là byte cuối cùng Ngắt của UART có mức ưu tiên cao hơn, đảm bảo rằng trong trường hợp ngắt UART và Timer xảy ra đồng thời, vi điều khiển không hiểu nhầm tín hiệu kết thúc khung truyền.

Timer cho Modbus hoạt động với chu kỳ 50us, tương ứng với tần số 20kHz Để đếm đến 4010us, counter period sẽ là 80,2 Vi điều khiển được cấu hình với tần số clock là 72MHz, và để đạt được tần số 20kHz, cần thực hiện các phép tính phù hợp.

Cấu hình Timer cho CubeMX như sau:

Hình 4.38 Cấu hình Timer cho vi điều khiển

Để tạo Timer với chu kỳ 1us, ta có thể áp dụng cách tính tương tự Trong quá trình đọc dữ liệu từ cảm biến DHT22 và DS18B20, có thể xảy ra tình trạng treo do tràn bộ nhớ do code chưa được tối ưu Giải pháp hiệu quả là sử dụng Watchdog Timer để reset vi điều khiển sau 1.5 giây, thời gian này được xác định dựa trên kinh nghiệm thực tiễn Việc này giúp tránh tình trạng tràn bộ nhớ, vì khi xảy ra tràn bộ nhớ, dữ liệu không thể đọc được và yêu cầu từ master sẽ không nhận được phản hồi từ slave, dẫn đến lỗi timeout trong giao thức Modbus RTU.

Hình 4.39 Cấu hình Watchdog Timer (IDWG)

Để tính thời gian reset của vi điều khiển STM32F103 với tần số clock 40kHz sử dụng thạch anh ngoại cấp cho Watchdog Timer, ta cần chọn giá trị prescale trong các giá trị 4, 8, 16, 32, 64, 128, hoặc 256 Giá trị prescale càng lớn thì thời gian càng dài Nếu chọn prescale là 256, thời gian sẽ là 1.5 giây, sau đó vi điều khiển sẽ tự reset.

Thiết kế HMI

- Công cụ sử dụng: Phần mềm thiết kế HMI iXDeveloper2 cho Beijier iX T7E.

Yêu cầu thiết kế HMI: Thiết kế HMI với những yêu cầu như sau:

 Hiển thị số liệu đo được từ tín hiệu đo lường (cảm biến nhiệt độ DHT22 và cảm biến nhiệt độ DS18B20).

 Thể hiện được đặc tính đặc tính đồ thị của tín hiệu đo lường.

 Thể hiện trạng thái của các tín hiệu DI, DO bằng màu

Dựa trên những yêu cầu đặt ra, HMI được thiết kế có giao diện như sau:

Hình 4.40 Giao diện HMI Beijier iX T7E

 Hiển thị giá trị đo của cảm biến nhiệt độ độ ẩm DHT22 và cảm biến nhiệt độ DS18B20.

 Vẽ đặc tính đồ thị của hai tín hiệu đo lường là cảm biến DHT22 và DS18B20.

 Thể hiện trạng thái của nút nhấn và đèn báo.

KẾT QUẢ ĐẠT ĐƯỢC

Thiết bị gateway

Thiết bị gateway được thiết kế sử dụng công cụ Altium ở lớp top (mặt trước) được thể hiện trong Hình 5 41

Hình 5.41 Top Layer của PCB

Lớp bottom (mặt sau) của PCB được thể hiện trong Hình 5 42

Hình 5.42 Bottom Layer của PCB

Hình ảnh thực tế của PCB lớp top layer:

Hình 5.43 PCB trong thực tế - Top Layer

Hình ảnh thực tế PCB lớp bottom layer:

Hình 5.44 PCB trong thực tế - Bottom Layer

Màn hình HMI

Trong điều kiện bình thường trong phòng, giá trị nhiệt độ của hai cảm biến đều ghi nhận khoảng 25 °C Việc đọc giá trị nhiệt độ và vẽ đồ thị nhiệt độ từ hai cảm biến này cho thấy sự ổn định của môi trường.

Trong điều kiện bình thường trong phòng, giá trị nhiệt độ được ghi nhận từ hai cảm biến khi có nguồn nhiệt như máy sấy tác động Đồ thị nhiệt độ thể hiện sự thay đổi nhiệt độ xung quanh các cảm biến, cho thấy rõ sự ảnh hưởng của nguồn nhiệt đến các giá trị đo được.

Hình 5.46 Giá trị nhiệt độ ở điều kiện tiếp xúc

Ngày đăng: 17/06/2022, 21:16

HÌNH ẢNH LIÊN QUAN

Bảng tin từ thiết bị Master gọi là Query, còn bảng tin Slave phản hồi được  gọi là Response - Thiết kế thiết bị gateway với chuẩn modbus RTU sử dụng STM32F103C8T6
Bảng tin từ thiết bị Master gọi là Query, còn bảng tin Slave phản hồi được gọi là Response (Trang 18)
Hình ảnh DS18B20 trong thực tế: - Thiết kế thiết bị gateway với chuẩn modbus RTU sử dụng STM32F103C8T6
nh ảnh DS18B20 trong thực tế: (Trang 31)
Sơ đồ nguyên lý của toàn bộ thiết bị được thể hiện ở Hình  3 .35 - Thiết kế thiết bị gateway với chuẩn modbus RTU sử dụng STM32F103C8T6
Sơ đồ nguy ên lý của toàn bộ thiết bị được thể hiện ở Hình 3 .35 (Trang 39)
Sơ đồ thuật toán đọc cảm biến: - Thiết kế thiết bị gateway với chuẩn modbus RTU sử dụng STM32F103C8T6
Sơ đồ thu ật toán đọc cảm biến: (Trang 41)
Hình ảnh thực tế của PCB lớp top layer: - Thiết kế thiết bị gateway với chuẩn modbus RTU sử dụng STM32F103C8T6
nh ảnh thực tế của PCB lớp top layer: (Trang 54)
Hình ảnh thực tế PCB lớp bottom layer: - Thiết kế thiết bị gateway với chuẩn modbus RTU sử dụng STM32F103C8T6
nh ảnh thực tế PCB lớp bottom layer: (Trang 55)

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w