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

Xây dựng mạng truyền thông công nghiệp modbus rtu bằng ngôn ngữ python trên máy tính nhúng linux

100 12 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

Định dạng
Số trang 100
Dung lượng 11,33 MB

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

Nội dung

TÓM TẮT LUẬN VĂN XÂY DỰNG MẠNG TRUYỀN THÔNG CÔNG NGHIỆP MODBUS RTU BẰNG NGÔN NGỮ PYTHON TRÊN MÁY TÍNH NHÚNG LINUX Học viên: Phạm Ngọc Cường Chuyên ngành: Kỹ thuật điều khiển và tự động

Trang 1

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA

PHẠM NGỌC CƯỜNG

XÂY DỰNG MẠNG TRUYỀN THÔNG CÔNG NGHIỆP

MODBUS RTU BẰNG NGÔN NGỮ PYTHON

TRÊN MÁY TÍNH NHÚNG LINUX

LUẬN VĂN THẠC SĨ

KỸ THUẬT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HÓA

Đà Nẵng – Năm 2017

Trang 2

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA

PHẠM NGỌC CƯỜNG

XÂY DỰNG MẠNG TRUYỀN THÔNG CÔNG NGHIỆP

MODBUS RTU BẰNG NGÔN NGỮ PYTHON

TRÊN MÁY TÍNH NHÚNG LINUX

Chuyên ngành: Kỹ thuật điều khiển và tự động hóa

Trang 3

LỜI CAM ĐOAN

Tôi cam đoan đây là công trình nghiên cứu của tôi

Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được ai công bố trong bất kỳ công trình nào khác

Đà Nẵng, ngày 25 tháng 12 năm 2017

Tác giả luận án

PHẠM NGỌC CƯỜNG

Trang 4

TÓM TẮT LUẬN VĂN

XÂY DỰNG MẠNG TRUYỀN THÔNG CÔNG NGHIỆP MODBUS RTU BẰNG NGÔN NGỮ PYTHON TRÊN MÁY TÍNH NHÚNG LINUX

Học viên: Phạm Ngọc Cường Chuyên ngành: Kỹ thuật điều khiển và tự động hóa

Mã số: 60.52.50 Khóa: K33.TĐH(PFIEV) Trường Đại học Bách khoa - ĐHĐN

Tóm tắt - Hiện nay, máy tính nhúng công nghiệp đang được dùng để làm các thiết bị đầu cuối trong các mạng cục bộ công nghiệp Tuy nhiên khi sử dụng máy tính trong mạng THCN cần có phần cứng ngoài: các module/card xử lý dữ liệu ngoài như Modbus, Profibus…hoặc phần mềm từ đối tác thứ 3, đó là driver để điều khiển và các phần mềm, mã nguồn để thực hiện các giao thức Đề tài này tìm hiểu mạng Modbus RTU và các ngăn xếp của nó được tìm hiểu từ đó xây dựng bằng ngôn ngữ Python trên nền tảng máy tính Banana Pro nhúng hệ điều hành Linux Dựa theo cách thức hoạt động tiêu chuẩn của mạng công nghiệp Modbus RTU, đề tài này nghiên cứu thuật toán để xây dựng các lớp hướng đối tượng nhằm truyền nhận dữ liệu và xử lý dữ liệu truyền thông nối tiếp Theo đó, các thuật toán giúp tạo khung truyền, nhận khung truyền, sinh ra giá trị kiểm thử CRC, các mã ngoại lệ, sẽ được xây dựng chính xác và viết bằng ngôn ngữ Python Đề tài này góp phần làm giảm giá thành khi tích hợp mạng Modbus trong hệ thống công nghiệp và nâng cao khả năng điều khiển ngoại vi của máy tính nhúng

Từ khóa – Modbus RTU, Python, máy tính nhúng,, CRC, Linux

IMPLEMENTING MODBUS RTU INDUSTRIAL NETWORK

BY USING PYTHON PROGRAMMING LANGUAGE

ON LINUX EMBEDDED COMPUTER Abstract – Nowaday, industrial computers are used for terminal devices in industrial network

However, when we integrate it into system, we need external modules as Modbus, Profibus or third party software which are drivers to control and implement protocols The thesis is to study Modbus RTU and its stacks to creating Modbus RTU industrial network by using Python programming language on embedded Linux computer- Banana Pro According to standard principle of this network, the thesis provides algorithm, objects oriented stack and serial communication processing After that, frame building, frame receiving, CRC, exception codes and so on will be built exactly

by using Python The thesis brings the lower cost when integrating Modbus in industrial network and also enhance the peripheral control capability of embedded computer

Keywords – Modbus RTU, Python, Embedded computer, CRC, Linux

Trang 5

MỤC LỤC

LỜI CAM ĐOAN i

TÓM TẮT LUẬN VĂN ii

MỤC LỤC iii

DANH MỤC CÁC BẢNG v

DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ vi

MỞ ĐẦU 1

1 Tính cấp thiết của đề tài 1

2 Mục tiêu nghiên cứu 2

3 Đối tượng và Phạm vi nghiên cứu 2

4 Phương pháp nghiên cứu 2

5 Ý nghĩa khoa học và thực tiễn 3

6 Cấu trúc luận văn 3

CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ GIAO THỨC MẠNG MODBUS RTU 5

1.1 GIỚI THIỆU MẠNG MODBUS 5

1.2 CẤU TRÚC ĐOẠN TIN GIAO THỨC MODBUS 9

CHƯƠNG 2: GIỚI THIỆU TỔNG QUAN VỀ PYTHON VÀ MÁY TÍNH NHÚNG LINUX 19

2.1 NGÔN NGỮ PYTHON 19

2.2 MÁY TÍNH NHÚNG CÔNG NGHIỆP 24

CHƯƠNG 3: XÂY DỰNG CÁC LỚP DỮ LIỆU VÀ THUẬT TOÁN 32

3.1 SƠ ĐỒ CHUNG 32

3.1.1 Lớp dữ liệu của Slave 32

3.1.2 Lớp dữ liệu của Master 35

3.2 XÂY DỰNG THUẬT TOÁN 36

3.2.1 Lớp Utilities 37

3.2.2 Lớp physical 42

3.2.3 Lớp transaction 43

3.2.4 Lớp Factory 49

3.2.5 Lớp bit_read_message.py & bit_write_message.py & register_read_message.py & register_write_message.py 53

3.2.6 Lớp dành riêng cho kho dữ liệu (Server mode) 62

Trang 6

CHƯƠNG 4: KẾT QUẢ MÔ PHỎNG 67

4.1 KHỞI TẠO HỆ THỐNG ẢO 67

4.2 KẾT QUẢ MÔ PHỎNG KHI KẾT NỐI 2 MÁY ẢO 68

4.2.1 Kết quả kiểm tra mã chức năng Write Coil (FC=05) 68

4.2.2 Kết quả kiểm tra mã chức năng Write Coils (FC=15) 69

4.2.3 Kết quả kiểm tra mã chức năng Read Coils Status (FC=01) 70

4.2.4 Kết quả kiểm tra mã chức năng Read Coils Status (FC=01) 71

4.2.5 Kết quả kiểm tra mã chức năng Write Holding Registers (FC=16) 72

4.2.6 Kết quả kiểm tra mã chức năng Read Holding Registers (FC=3) 74

4.2.7 Kết quả kiểm tra mã chức năng Write Holding Registers (FC=16)(kiểm tra lần thứ 2 cho 1 thanh ghi duy nhất) 75

4.2.8 Kết quả kiểm tra mã chức năng Read Holding Registers (FC=3) (kiểm tra lần thứ 2 cho 1 thanh ghi duy nhất) 76

4.2.9 Kết quả kiểm tra mã chức năng Read Discrete Inputs (FC=02) 77

4.2.10 Kết quả kiểm tra mã chức năng Read Inputs Register (FC=04) 78

4.2.11 Kết quả kiểm tra Mã Ngoại lệ nếu có vấn đề trên khung truyền hoặc kho dữ liệu 79

4.3 KẾT QUẢ MÔ PHỎNG KHI KẾT NỐI MÁY TÍNH NHÚNG VÀ MÁY TÍNH NGOÀI 82

4.3.1 Phương pháp thực hiện 82

4.3.2 Mô phỏng quá trình ghi cuộn dây (FC=5 và FC=15) 83

4.3.3 Mô phỏng quá trình ghi thanh ghi (FC=16) 85

4.3.4 Mô phỏng quá trình đọc thanh ghi (FC=3) 85

4.3.5 Mô phỏng quá trình đọc đầu vào số (FC=2) 86

4.3.6 Mô phỏng quá trình đọc thanh ghi analog (FC=4) 87

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI 89

Các điểm đã làm được 89

Các điểm hạn chế 89

Hướng phát triển đề tài 89

DANH MỤC ĐỀ TÀI THAM KHẢO 90

QUYẾT ĐỊNH GIAO ĐỀ TÀI LUẬN VĂN 91

Trang 7

DANH MỤC CÁC BẢNG

Bảng 1.1 Kiểu dữ liệu và cách tiếp cận trong Modbus 11 Bảng 1.2 Cấu trúc đoạn tin yêu cầu mã hàm 01 13 Bảng 1.3 Cấu trúc đoạn tin trả lời mã hàm 01 13 Bảng 1.4 Cấu trúc đoạn tin yêu cầu mã hàm 02 13 Bảng 1.5 Cấu trúc đoạn tin trả lời mã hàm 02 14 Bảng 1.6 Cấu trúc đoạn tin yêu cầu mã hàm 05 14 Bảng 1.7 Cấu trúc đoạn tin trả lời mã hàm 05 15 Bảng 1.8 Cấu trúc đoạn tin yêu cầu mã hàm 15 15 Bảng 1.9 Cấu trúc đoạn tin trả lời mã hàm 15 15 Bảng 1.10 Cấu trúc đoạn tin yêu cầu mã hàm 03 16 Bảng 1.11 Cấu trúc đoạn tin trả lời mã hàm 03 16 Bảng 1.12 Cấu trúc đoạn tin yêu cầu mã hàm 06 17 Bảng 1.13 Cấu trúc đoạn tin trả lời mã hàm 06 17 Bảng 1.14 Cấu trúc đoạn tin yêu cầu mã hàm 16 18 Bảng 1.15 Cấu trúc đoạn tin trả lời mã hàm 16 18 Bảng 2.1 Bảng so sánh ngôn ngữ Python và ngôn ngữ C 22 Bảng 2.2 Bảng so sánh ngôn ngữ Python và Java 23 Bảng 2.3 So sánh vi điều khiển và máy tính nhúng 29 Bảng 2.4 Cấu hình máy tính nhúng banana Pro 30 Bảng 3.1 Mã hàm của 4 lớp dữ liệu bit_read_message.py &

bit_write_message.py & register_read_message.py

& register_write_message.py

54

Trang 8

DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ

Hình 1.1 Giao thức Modbus và mô hình OSI 7

Hình 1.5 Mã hàm cung cấp bởi giao thức Modbus 11

Hình 2.1 Mặt dưới máy tính nhúng Banana Pro 31 Hình 2.2 Mặt trên máy tính nhúng Banana Pro 31 Hình 3.1 Mô hình các lớp dữ liệu của Slave (Server) 33 Hình 3.2 Mô hình các lớp dữ liệu của Master (Client) 35 Hình 3.3 Thuật toán cho hàm pack_bitstring 38 Hình 3.4 Thuật toán cho hàm unpack_bitstring 39

Hình 3.6 Thuật toán tạo mã CRC từ dữ liệu 42

Hình 3.12 Sơ đồ dữ liệu trong việc phân tích mã chức

năng trong lớp Factory

50

Hình 3.13 Thuật toán cho quá trình nhận dạng chức năng

(Client)

51

Trang 9

Hình 3.14 Thuật toán cho quá trình nhận dạng chức năng

Hình 4.3 Kết quả trên giao diện RSim (FC=05 và

FC=15)

85

Hình 4.4 Kết quả trên giao diện RSim (FC=16) 86 Hình 4.5 Cài đặt giá trị cho đầu vào số của slave 87 Hình 4.6 Cài đặt giá trị cho đầu vào số của slave 88

Trang 10

MỞ ĐẦU

1 Tính cấp thiết của đề tài

Hiện nay, PLC và máy tính nhúng công nghiệp đang được dùng để làm các thiết bị đầu cuối trong các mạng cục bộ công nghiệp Cả hai loại PLC và máy tính nhúng công nghiệp đều có ưu điểm và nhược điểm riêng Xét riêng về máy tính nhúng công nghiệp, khả năng mở rộng ngoại vi, lưu trữ dữ liệu là cực kì rộng lớn Máy tính nhúng có các khả năng chịu va đập, nhiệt độ môi trường, tốc độ xử lý cao Tuy nhiên khi sử dụng máy tính trong mạng THCN cần có một trong những yếu tố sau:

Phần cứng ngoài: các module/card xử lý dữ liệu ngoài như Modbus, Profibus…Các module/card có giá thành từ 200-1000$ tùy theo chức năng và số cổng

Phần mềm từ đối tác thứ 3: nếu không dùng phần cứng ngoài có thể dùng ngoại vi trực tiếp của máy tính nhúng nhưng cần driver để điều khiển và các phần mềm, mã nguồn để thực hiện các giao thức Cần phải mua bản quyền để sử dụng Có những phần mềm không hỗ trợ nguồn mở để phát triển các ứng dụng riêng

Thông qua đề tài "Xây dựng mạng truyền thông công nghiệp Modbus RTU bằng ngôn ngữ Python trên máy tính nhúng Linux", mạng Modbus RTU và các ngăn xếp của nó được tìm hiểu và xây dựng bằng ngôn ngữ Python trên nền tảng máy tính Banana Pro nhúng hệ điều hành Linux Dựa theo cách thức hoạt động tiêu chuẩn của mạng công nghiệp Modbus RTU, đề tài này nghiên cứu thuật toán để xây dựng các lớp hướng đối tượng nhằm truyền nhận dữ liệu và xử lý dữ liệu truyền thông nối tiếp Theo đó, các thuật toán giúp tạo khung truyền, nhận khung truyền, sinh ra giá trị kiểm thử, các mã ngoại lệ, sẽ được xây dựng chính xác và viết bằng ngôn ngữ Python

Thông qua máy tính nhúng Linux, người lập trình ngoài việc sử dụng mã nguồn Modbus được xây dựng để truyền nhận dữ liệu còn lập nhiều chức năng điều khiển mới cho module này như đóng cắt thiết bị, đọc giá trị cảm biến, giao tiếp người –

Trang 11

máy (HMI), mà các module Modbus thông thường không làm được Đề tài này hướng tới mục tiêu chính là tạo ra mã nguồn mở chỉ có chức năng truyền thông tin giữa các nút mạng theo chuẩn modbus Ngoài ra không có chức năng xử lý khác như PID, mạng neuron…

2 Mục tiêu nghiên cứu

Tìm hiểu cấu tạo các lớp ngăn xếp của mạng Modbus RTU Sau đó tìm hiểu các hình thức trao đổi dữ liệu và xử lý dữ liệu giữa các lớp ngăn xếp

Tìm hiểu ngôn ngữ Python hướng đối tượng và cách thức xử lý dữ liệu lớp vật lý của giao thức truyền thông nối tiếp

Tìm hiểu các cổng ngoại vi của máy tính nhúng Banana Pro được sử dụng cho mạng Modbus

Xây dựng các lớp ngăn xếp dùng ngôn ngữ Python hướng đối tượng sau khi đã tìm hiểu về cách thức hoạt động của các lớp ngăn xếp này

Mô phỏng đánh giá hoạt động trên các chương trình Server/Client thông qua cổng truyền thông ảo

3 Đối tượng và Phạm vi nghiên cứu

Mạng Modbus có 3 phương thức giao tiếp là RTU, ASCII và TCP/IP, trong đề tài này đối tượng nghiên cứu là mạng Modbus RTU

Phạm vi nghiên cứu là tích hợp mạng Modbus bằng ngôn ngữ Python trên máy tính Banana Pro nhúng hệ điều hành Linux Như vậy đề tài giới hạn phạm vi ở việc lập trình dùng ngôn ngữ Python, máy tính Banana Pro và hệ điều hành Linux

4 Phương pháp nghiên cứu

Tìm hiểu các tài liệu sách vở có liên quan đến mạng Modbus, cấu tạo, chức năng và cách thức hoạt động của chúng Từ đó kết hợp với ngôn ngữ Python hướng đối tượng để xây dựng phần mềm

Trang 12

Tìm hiểu cấu trúc phần cứng của máy tính Banana Pro, các thông số kĩ thuật và cách sử dụng nó thông qua sổ tay từ nhà sản xuất LeMaker

Từ các kiến thức trên, đưa ra các lưu đồ thuật toán để xử lý dữ liệu nhằm truyền và nhận khung truyền dữ liệu theo tiêu chuẩn của Modbus RTU

Mô phỏng phương thức truyền đạt dữ liệu thông qua các cổng truyền thông nối tiếp

ảo có sẵn trên hệ điều hành Linux Xây dựng hai chương trình có cơ chế Server/Client để thực hiện mô phỏng này

Chạy mạng Modbus thực tế bằng cách gán cổng truyền thông thực, thông qua module PL2303 trao đổi dữ liệu với một thiết bị Modbus khác, đó là một máy tính

hệ điều hành Windows có cài sẵn phần mềm mô phỏng Modbus

5 Ý nghĩa khoa học và thực tiễn

Tích hợp được mạng Modbus RTU trên máy tính nhúng đem lại cho lập trình hệ thống mở rộng tính năng hơn so với các module Modbus thông thường vì máy tính nhúng hiện nay có hỗ trợ nhiều ngoại vi giúp giao tiếp với cảm biến (nhiệt, quang, gia tốc, ), các thiết bị đóng cắt, các thiết bị truyền thông mạng công nghiệp, thậm chí là giao tiếp với các màn hình HMI (Human Machine Interface: Giao tiếp người-máy) cũng như bản thân có thể làm thành thiết bị HMI

Máy tính nhúng có giá thành rẻ hơn nhiều so với các module mạng công nghiệp đang sử dụng, có khả năng làm trong môi trường công nghiệp, không cần thiết bị làm mát, dễ dàng lắp đặt vì có kích thước nhỏ, không cồng kềnh

6 Cấu trúc luận văn

Chương 1: Giới thiệu tổng quan về giao thức mạng Modbus RTU

Chương này giới thiệu khái niệm mạng Modbus và cấu trúc đoạn tin mạng Mod bus RTU

Chương 2: Giới thiệu tổng quan về python và máy tính nhúng Linux

Chương này so sánh ngôn ngữ Python với các ngôn ngữ lập trình nhúng hiện có, đồng thời so sánh máy tính nhúng và các vi điều khiển thông thường

Trang 13

Chương 3: Xây dựng các lớp dữ liệu và thuật toán

Chương này mô tả cấu tạo của các lớp, thuật toán để xử lý khung truyền/nhận dữ liệu

Chương 4: Kết quả mô phỏng

Chương này đưa ra kết quả mô phỏng bằng hai phương pháp, đó là kết nối 2 máy

ảo với nhau và kết nối máy tính nhúng và một máy tính khác có cài phần mềm mô phỏng Modbus

Trang 14

CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ GIAO THỨC MẠNG MODBUS RTU

Chương 1 sẽ giới thiệu tổng quan về mạng truyền thông công nghiệp nói chung và mạng truyền thông công nghiệp Modbus nói riêng Đối với mạng Modbus, chương này đề cập đến lịch sử phát triển mạng Modbus, các hình thức vật lý truyền tín hiệu,

mô hình OSI 7 lớp, phân loại Modbus hiện có Ngoài ra để hiểu rõ mạng Modbus cần phân tích cấu trúc khung truyền của mạng Modbus, bao gồm phần địa chỉ, phần chức năng, phần dữ liệu và phần kiểm tra mã lỗi Cuối cùng chương 1 cung cấp các

mã chức năng, khung truyền gởi đi và khung truyền nhận lại

1.1 GIỚI THIỆU MẠNG MODBUS

Giao thức truyền thông là những quy định trong việc truyền thông tin giữa các thiết

bị trong một hệ thống công nghiệp Trong công nghiệp, thì các bộ phận trong hệ thống được cấu trúc theo sơ đồ phân cấp Điều này có nghĩa là các thiết bị trong một

hệ thống công nghiệp có mối liên quan với nhau Các thiết bị cơ cấu chấp hành: như motor, cảm biến…nằm ở cấp thấp nhất (được gọi là cấp trường), nó chịu sự điều khiển của các thiết bị ở cấp trên nó – cấp điều khiển Các thiết bị ở cấp điều khiển như: PLC, PC… thì chịu sự điều khiển và giám sát ở cấp cao hơn…Và cứ thế, một

hệ thống trong công nghiệp thông thường có 5 cấp [3]

Điều cần quan tâm ở đây, là việc liên lạc và truyền tín hiệu giữa các thiết bị trong các cấp được thực hiện nhờ các đường dây bus tín hiệu (bao gồm 4 loại bus: bus trường, bus hệ thống, mạng xí nghiệp và mạng công ty) Để tín hiệu truyền được trên các bus thì cần có những tiêu chuẩn để truyền Tiêu chuẩn này phải đảm bảo cả thiết bị ở cấp trên và cấp dưới đều hỗ trợ Tiêu chuẩn này được gọi là giao thức truyền thông

Ứng với mỗi đường dây bus cho việc kết nối giữa 2 cấp thì có một giao thức truyền thông riêng Đối với bus trường: thông thường người ta sử dụng các giao thức: profibus, modbus…

Modbus bắt nguồn trong cuối những năm 70 thế kỷ trước Năm 1979 khi nhà sản

Trang 15

xuất PLC Modicon giờ là tập đoàn Schneider Electric's Telemecanique phát hành giao diện truyền thông Modbus cho mạng multidrop dựa trên kiến trúc master/client Truyền thông giữa các Modbus node dựa trên các thông điệp Modbus ban đầu chạy trên RS232, nhưng gần đây Modbus dùng RS485 vì nó cho phép khoảng cách lớn, tốc độ cao và khả năng của một mạng đa điểm thực sự Trong thời gian ngắn hàng trăm nhà sản xuất công nghiệp thực hiện tích hợp Modbus trong thiết bị của họ và Modbus trở thành chuẩn cho các mạng truyền thông công nghiệp

Modbus là một giao thức mạng truyền dữ liệu theo kiểu nối tiếp Nó hỗ trợ cả 2 chuẩn truyền RS232 và RS485 Việc truyền dữ liệu được thực hiện theo cơ chế 1 Master/ nhiều Slave Modbus thường được dùng để truyền các tín hiệu từ các thiết

bị đo, thiết bị điều khiển trở về bộ điều khiển chính hay hệ thống thu thập dữ liệu Mosbus thường dùng để kết nối máy tính giám sát với một thiết bị điều khiển (RTU: remote terminal unit) trong hệ thống Scada (hệ thống điều khiển và thu thập

dữ liệu)

Sơ đồ hình 1.1 trình bày sự tham chiếu giao thức Modbus lên mô hình chuẩn OSI Theo đó thì giao thức Modbus nằm ở lớp thứ 7, thứ 2, và thứ 1 của mô hình OSI Lớp thứ 7 này (lớp ứng dụng) giúp hỗ trợ phương thức truyền thông Server/Client giữa các thiết bị kết nối trên bus hoặc trên mạng không dây Lớp thứ 2 và lớp thứ 1 quy định hình thức truyền dữ liệu theo kiểu nối tiếp và chuẩn truyền vật lý là EIA/TIA – 485 (hoặc EIA/TIA – 232)

Trang 16

Hình 1.1: Giao thức Modbus và mô hình OSI

Có 2 tiêu chuẩn phổ biến trong việc truyền dữ liệu nối tiếp: đó là chuẩn RS232 và chuẩn RS485 [3]

Đối với chuẩn RS232, việc truyền dữ liệu được thực hiện nhờ 3 dây TxD, RxD và đất Tín hiệu được truyền đi bằng cách: tín hiệu được so sánh với đất để phát hiện

sự sai lệch Điều này khiến cho dữ liệu khó có thể khôi phục lại ở trạm phát Một điều nữa là chuẩn truyền RS232 chỉ được sử dụng để truyền tín hiệu giữa 2 trạm được kết nối trực tiếp, việc mở rộng số lượng trạm sử dụng chuẩn truyền RS232 là không khả thi [3]

Hình 1.2 trình bày sơ đồ kết nối dây giữa 2 thiết bị có cổng COM dùng chuẩn truyền RS232

Hình 1.2: Cách kết nối cổng RS232

Trang 17

Một số đặc điểm của chuẩn truyền RS232 là: khoảng cách truyền tối đa là 15m, tốc

độ truyền là 20Kbps, hỗ trợ kết nối điểm – điểm trên một mạng

Đối với chuẩn RS485, việc truyền dữ liệu được thực hiện trên 2 dây A,B Chuẩn này truyền tín hiệu theo phương pháp lấy vi sai cân bằng Có nghĩa là tín hiệu truyền đi nhờ cả 2 dây Và dữ liệu nhận được được căn cứ theo sự sai lệch giữa 2 tín hiệu này [3]

Hình 1.3: Tín hiệu 2 dây của RS485

Hình 1.3 trình bày rõ hơn về cách truyền dữ liệu theo chuẩn truyền RS485

Giả sử khi A = 0, B = 1 thì dữ liệu được nhận biết đó là data = 1, và khi A = 1, B =

0 thì dữ liệu được nhận biết là data = 0 Nhờ việc so sánh như trên, nên khi có nhiễu xảy ra, thì cả 2 tín hiệu A, B điều bị suy giảm như nhau, thế nên độ chênh lệch điện

áp giữa chúng là không đổi, vì vậy ở thiết bị nhận vẫn có thể nhận được tín hiệu một cách chính xác

+ Khi sự chênh lệch điện áp giữa A và B nằm trong khoảng -1,6V đến -6V thì dữ liệu được nhận tương ứng với mức 1

+ Khi sự chênh lệch điện áp giữa A và B nằm trong khoảng +1,5 đến +6V thì dữ liệu được nhận tương ứng với mức 0

Ưu điểm của chuẩn truyền RS485 là giảm đi sự sai lệch dữ liệu ở thiết bị nhận, và việc truyền thông tin đi được xa hơn Ngoài ra, ta còn có thể kết nối được nhiều

Trang 18

thiết bị trên cùng một mạng, (chuẩn truyền RS485 sử dụng cách kết nối đa điểm) sử dụng chuẩn truyền RS485 này

Một số đặc tính của chuẩn truyền RS485: Khoảng cách truyền lên đến 1200m, tốc

độ truyền có thể lên đến 10Mbps, số lượng thiết bị tối đa có thể kết nối là 32 thiết bị phát và 32 thiết bị thu

Giao thức Modbus được sử dụng rộng rãi nhờ tính đơn giản, linh hoạt và đáng tin cậy của nó Nó có thể truyền dữ liệu rời rạc hoặc tương tự Thế nhưng giao thức Modbus bị giới hạn bởi cách thức giao tiếp theo chuẩn RS485 Tốc độ truyền của chuẩn này trong khoảng 0.010Mbps đến 0.115Mbps Trong khi ngày nay, các mạng

hỗ trợ tốc độ truyền trong khoảng từ 5Mbps đến 16Mbps, thậm chí đối với các mạng Ethernet nó còn cung cấp tốc độ truyền lên đến 100Mbps, 1Gbps và 10Gbps

Căn cứ vào cách thức truyền dữ liệu trong mạng, thì mạng Modbus được chia làm 3 loại: Modbus RTU, Modbus ASCII [3] và Modbus TCP/IP

Modbus RTU: dữ liệu được truyền trên bus nối tiếp Dữ liệu được truyền theo định dạng mã hexadecimal Modbus RTU thường được sử dụng trong việc truyền thông thông thường

Modbus ASCII: dữ liệu được truyền trên bus nối tiếp Dữ liệu truyền được định dạng dưới dạng mã ASCII Modbus ASCII có ưu điểm là có thể dễ dàng để người dùng hiểu được dữ liệu đang truyền Thông thường thì giao thức Modbus ASCII được sử dụng trong việc kiểm tra và giới thiệu cho giao thức mạng Modbus

Modbus TCP/IP: Dữ liệu có thể được truyền trên mạng LAN hoặc mạng ở trên một khu vực rộng Dữ liệu được định dạng theo mã hexadecimal

1.2 CẤU TRÚC ĐOẠN TIN GIAO THỨC MODBUS

Hình dưới đây trình bày cấu trúc của một đoạn tin truyền trong giao thức

mạng Modbus [1, 2, 3, 5]

Trang 19

Hình 1.4: Cấu trúc đoạn tin mạng Modbus

Byte 1: Địa chỉ

Có độ dài 1 byte Byte này cung cấp địa chỉ của Slave mà Master sẽ tác động đến Trong cả đoạn tin yêu cầu gửi từ Master và đoạn tin đáp ứng nhận từ Slave thì byte này có giá trị giống nhau Mỗi một Slave trong mạng có một địa chỉ Modbus riêng (địa chỉ được chọn trong khoảng từ 1 đến 247)

Bằng cách này, sau 1 byte đầu tiên mỗi một Slave sẽ biết được nó có nhận đoạn tin hay không

Trang 20

Hình 1.5: Mã hàm cung cấp bởi giao thức Modbus [7]

Đầu vào rời rạc Bit đơn Ghi – Đọc

Bảng 1.1: Kiểu dữ liệu và cách tiếp cận trong Modbus

Trang 21

Khối CRC (Cyclic Redundancy Check)

Chức năng: giúp Slave kiểm tra được có lỗi xuất hiện trong khung dữ liệu khi Master truyền xuống hay không

Mạng Modbus thực hiện việc kiểm tra lỗi theo 2 hình thức:

Kiểm tra số lượng bit1, bit0 trong mỗi khung truyền, nhờ mã kiểm tra chẵn lẻ (Parity bit)

Kiểm tra nội dung của toàn bộ khung truyền xem có chính xác hay không Khi Master gửi khối dữ liệu xuống, nó sẽ dựa vào khung dữ liệu để tính mã CRC, sau đó Master gửi khung dữ liệu đó xuống, kèm theo cả mã CRC vừa tính được Khi Slave nhận được khối tin truyền, nó cũng sẽ dựa vào khối dữ liệu nhận được, tính toán độc lập lại mã CRC, sau đó nó kiểm tra CRC vừa tính được với CRC mà Master gửi xuống Nếu 2 mã CRC giống nhau, thì không có lỗi xảy ra Nếu 2 mã CRC khác nhau, tức là dữ liệu nhận được là không đúng, thì Slave sẽ báo lỗi lên cho Master

Sự truyền nhận qua lai giữa master và slave thể hiện như hình 1.6

Hình 1.6 Cơ chế truyền nhận của modbus Sau đây là các mã hàm thông dụng của Modbus được thể hiện theo đoạn tin yêu cầu

và đoạn tin trả lời [1, 2, 5]

Địa chỉ của slave 1 byte

Function code 1 byte Có giá trị 01 (hex)

Địa chỉ ngõ ra bắt 2 byte

Trang 22

Bảng 1.2: Cấu trúc đoạn tin yêu cầu mã hàm 01

Cấu trúc đoạn thoại trả lời:

Địa chỉ của slave 1 byte

Số lượng byte dữ

liệu theo sau (N)

1 byte Byte này chỉ số lượng byte có

nhiệm vụ lưu giá trị của các cuộn dây mà Master yêu cầu

Địa chỉ của slave 1 byte

Function code 1 byte Có giá trị 02 (hex) Địa chỉ ngõ vào bắt

Trang 23

Cấu trúc của đoạn thoại trả lời:

Địa chỉ của slave 1 byte

Số lượng byte dữ

liệu theo sau (N)

1 byte Byte này chỉ số lượng byte có

nhiệm vụ lưu giá trị của các cuộn dây mà Master yêu cầu

Chức năng: giúp master ghi giá trị lên từng cuộn dây có trên Slave

Cấu trúc của đoạn thoại yêu cầu:

Địa chỉ của slave 1 byte

Function code 1 byte Có giá trị 05 (hex) Địa chỉ của ngõ ra

Bảng 1.6: Cấu trúc đoạn tin yêu cầu mã hàm 05

Cấu trúc của đoạn thoại đáp ứng

Địa chỉ của slave 1 byte

Function code 1 byte Có giá trị 05 (hex) Địa chỉ của ngõ ra

muốn ghi

2 byte

Dữ liệu sau khi ghi 2 byte FF00: ứng với giá trị 1

0000: ứng với giá trị 0

Trang 24

Chức năng: giúp master ghi giá trị 0/1 lên nhiều cuộn dây đơn

Cấu trúc đoạn thoại yêu cầu:

Địa chỉ của slave 1 byte

Function code 1 byte Có giá trị 0F (hex) Địa chỉ đầu tiên của

N byte N = số ngõ ra muốn ghi/8

Mã kiểm soát lỗi

CRC của khung dữ

liệu Master

2 byte

Bảng 1.8: Cấu trúc đoạn tin yêu cầu mã hàm 15

Cấu trúc đoạn thoại đáp ứng:

Địa chỉ của slave 1 byte

Function code 1 byte Có giá trị 0F (hex) Địa chỉ của ngõ ra

đầu tiên muốn ghi

Trang 25

Mã hàm 03 (0x03) – hàm tác động lên thanh ghi

Chức năng: giúp master đọc được trạng thái của các thanh ghi trong vùng Holding register của các thiết bị Slave

Cấu trúc đoạn thoại yêu cầu:

Địa chỉ của slave 1 byte

Function code 1 byte Có giá trị 03 (hex) Địa chỉ đầu tiên của

Bảng 1.10: Cấu trúc đoạn tin yêu cầu mã hàm 03

Cấu trúc đoạn thoại đáp ứng:

Địa chỉ của slave 1 byte

Function code 1 byte Có giá trị 03 (hex)

Số lượng byte dữ

liệu theo sau (2xN)

1 byte

Các byte nội dung

của các thanh ghi mà

master yêu cầu

2xN byte N = số thanh ghi mà

Bảng 1.11: Cấu trúc đoạn tin trả lời mã hàm 03

Mã hàm 06 (0x06) – hàm tác động lên thanh ghi

Chức năng: giúp master ghi dữ liệu xuống một thanh ghi

Cấu trúc khung yêu cầu:

Trang 26

Độ dài Chú thích Địa chỉ của slave 1 byte

Function code 1 byte Có giá trị 06 (hex) Địa chỉ của thanh

ghi mà master muốn

ghi dữ liệu

2 byte

Giá trị master ghi

xuống cho thanh ghi

Địa chỉ của slave 1 byte

Function code 1 byte Có giá trị 06 (hex) Địa chỉ của thanh

ghi được master ghi

dữ liệu

2 byte

Giá trị của thanh ghi

sau khi được ghi

Bảng 1.13: Cấu trúc đoạn tin trả lời mã hàm 06

Mã hàm 16 (0x10) – hàm tác động lên thanh ghi

Chức năng: giúp master ghi dữ liệu đến nhiều thanh ghi trong một lúc Cấu trúc khung yêu cầu:

Địa chỉ của slave 1 byte

Function code 1 byte Có giá trị 10 (hex) Địa chỉ của thanh

ghi đầu tiên mà

master muốn ghi dữ

liệu

2 byte

Số lượng thanh ghi

muốn ghi dữ liệu

2 byte

Trang 27

Số lượng byte dữ

liệu theo sau (2xN)

1 byte

Các byte dữ liệu mà

master muốn ghi

xuống cho Slave

2xN byte N = số lượng thanh ghi

mà master muốn ghi

Mã kiểm soát lỗi

CRC của khung dữ

liệu Master

2 byte

Bảng 1.14: Cấu trúc đoạn tin yêu cầu mã hàm 16

Cấu trúc khung dữ liệu đáp ứng:

Địa chỉ của slave 1 byte Function code 1 byte Có giá trị 10 (hex) Địa chỉ của thanh

ghi đầu tiên được master ghi dữ liệu

2 byte

Bảng 1.15: Cấu trúc đoạn tin trả lời mã hàm 16

Như vậy chương 1 đã đưa ra cách nhìn tổng quan về mạng cục bộ công nghiệp nói chung cũng như mạng Modbus RTU nói riêng Đồng thời phân tích đầy đủ các mã chức năng, chuỗi truyền nhận dữ liệu theo từng mã giúp hiểu rõ hơn nguyên lý hoạt động của mạng Modbus RTU Từ đó xây dựng nên các mô hình xử lý dữ liệu ở chương 3

Trang 28

CHƯƠNG 2: GIỚI THIỆU TỔNG QUAN VỀ PYTHON VÀ MÁY TÍNH NHÚNG LINUX

Chương 2 sẽ giới thiệu tổng quan về ngôn ngữ Python, lịch sử phát triển, so sánh ưu điểm của python và các ngôn ngữ lập trình nhúng hiện có là Java và C Từ đó rút ra

lý do tại sao lại chọn ngôn ngữ Python Chương này còn giới thiệu tổng quan về máy tính nhúng và ưu điểm của máy tính nhúng Ngoài ra chương 2 còn so sánh giữa máy tính nhúng và vi điều khiển để thấy rõ được thế mạnh của máy tính nhúng Cuối chương giới thiệu về máy Banana Pro là dòng máy tính nhúng được sử dụng trong mô phỏng của luận văn, các đặc điểm, và các cổng ngoại vi của nó

Theo đánh giá của Eric S Raymond, Python là ngôn ngữ có hình thức rất sáng sủa, cấu trúc rõ ràng, thuận tiện cho người mới học lập trình Cấu trúc của Python còn cho phép người sử dụng viết mã lệnh với số lần gõ phím tối thiểu, như nhận định của chính Guido van Rossum trong một bài phỏng vấn ông

Ban đầu, Python được phát triển để chạy trên nền Unix Nhưng rồi theo thời gian,

nó đã "bành trướng" sang mọi hệ điều hành từ MS-DOS đến Mac OS, OS/2, Windows, Linux và các hệ điều hành khác thuộc họ Unix Mặc dù sự phát triển của Python có sự đóng góp của rất nhiều cá nhân, nhưng Guido van Rossum hiện nay vẫn là tác giả chủ yếu của Python Ông giữ vai trò chủ chốt trong việc quyết định hướng phát triển của Python

Trang 29

Sự phát triển Python đến nay có thể chia làm các giai đoạn:

 Python 1: bao gồm các bản phát hành 1.x Giai đoạn này, kéo dài từ đầu đến cuối thập niên 1990 Từ năm 1990 đến 1995, Guido làm việc tại CWI (Centrum voor Wiskunde en Informatica - Trung tâm Toán-Tin học tại Amsterdam, Hà Lan) Vì vậy, các phiên bản Python đầu tiên đều do CWI phát hành Phiên bản cuối cùng phát hành tại CWI là 1.2

 Vào năm 1995, Guido chuyển sang CNRI (Corporation for National Research Initiatives) ở Reston, Virginia Tại đây, ông phát hành một số phiên bản khác Python 1.6 là phiên bản cuối cùng phát hành tại CNRI

 Sau bản phát hành 1.6, Guido rời bỏ CNRI để làm việc với các lập trình viên chuyên viết phần mềm thương mại Tại đây, ông có ý tưởng sử dụng Python với các phần mềm tuân theo chuẩn GPL Sau đó, CNRI và FSF (Free Software Foundation - Tổ chức phần mềm tự do) đã cùng nhau hợp tác để làm bản quyền Python phù hợp với GPL Cùng năm đó, Guido được nhận Giải thưởng FSF vì Sự phát triển Phần mềm tự do (Award for the Advancement of Free Software)

 Phiên bản 1.6.1 ra đời sau đó là phiên bản đầu tiên tuân theo bản quyền GPL Tuy nhiên, bản này hoàn toàn giống bản 1.6, trừ một số sửa lỗi cần thiết

 Python 2: vào năm 2000, Guido và nhóm phát triển Python dời đến BeOpen.com và thành lập BeOpen PythonLabs team Phiên bản Python 2.0 được phát hành tại đây Sau khi phát hành Python 2.0, Guido và các thành viên PythonLabs gia nhập Digital Creations

 Python 2.1 ra đời kế thừa từ Python 1.6.1 và Python 2.0 Bản quyền của phiên bản này được đổi thành Python Software Foundation License Từ thời điểm này trở đi, Python thuộc sở hữu của Python Software Foundation (PSF), một tổ chức phi lợi nhuận được thành lập theo mẫu Apache Software Foundation

Trang 30

 Python 3, còn gọi là Python 3000 hoặc Py3K: Dòng 3.x sẽ không hoàn toàn tương thích với dòng 2.x, tuy vậy có công cụ hỗ trợ chuyển đổi từ các phiên bản 2.x sang 3.x Nguyên tắc chủ đạo để phát triển Python 3.x là "bỏ cách làm việc

cũ nhằm hạn chế trùng lặp về mặt chức năng của Python" Trong PEP (Python Enhancement Proposal) có mô tả chi tiết các thay đổi trong Python

Ngày nay C, Java đang chiếm ưu thế trong việc lập trình các hệ thống nhúng Vì vậy luận văn sẽ đưa ra sự so sánh giữa ngôn ngữ Python và ngôn ngữ C, Java đồng thời đưa ra ưu điểm để chọn ngôn ngữ Python trong đề tài này

Lập trình Python đưa ra sự an toàn về

đóng gói thông tin

C không có tính năng này

Lập trình Python chậm hơn C nhưng lại

có cấu trúc và cú pháp ngắn gọn dễ hiêu

Việc này giúp người lập trình thu gọn nội

dung script hơn C

Lập trình C nhanh hơn nhưng cấu trúc và

cú pháp dài dòng hơn

Python có ngăn xếp chứa thư viện kế thừa

nhiều hơn C và thậm chí có những thư

viên tương thích với C

C không có nhiều ngăn xếp như viện

Lập trình Python phải chú ý thụt vào đầu

dòng

C không cần chú ý điểm này

Python không cần khai báo biến C cần khai báo biến

Python không cho phép chèn in-line C cho phép chèn in-line

Python không dùng con trỏ nhưng dùng C dùng con trỏ

Trang 31

Trong vòng lặp for, biến tự tăng mặc định C không có mặc định này

Hiệu suất quản lí bộ nhớ của Python yếu

hơn C trong việc xử lý đồ họa

C quản lý bộ nhớ mạnh hơn Python trong việc quản lý đồ họa, xử lý ảnh

Hỗ trợ xuất lỗi file IO Không hỗ trợ xuất lỗi file IO

Python hỗ trợ dọn dẹp vùng nhớ rác tốt C không hỗ trợ chức năng này

Python hỗ trợ các kiểu dữ liệu tùy ý Đây

là một trong những ưu điểm của Python

C hỗ trợ kiểu dữ liệu nguyên 8 bit, 16 bit,

32 bit, 64 bits, số âm, số dương

Python chỉ hỗ trợ string và Boolean C hỗ trở kiểu string, boolean, character,

Thời gian học cho người mới bắt dầu

nhanh hơn so với C

C tốn thời gian học hơn Python

Bảng 2.1: Bảng so sánh ngôn ngữ Python và ngôn ngữ C

Trang 32

Lập trình Python chậm hơn Java nhưng

lại có cấu trúc và cú pháp ngắn gọn dễ

hiêu Việc này giúp người lập trình thu

gọn nội dung script hơn Java

Lập trình Java nhanh hơn nhưng cấu trúc

và cú pháp dài dòng hơn

Thời gian học cho người mới bắt dầu

nhanh hơn nhiều lần so với Java

C tốn thời gian học hơn nhiều lần so với Python

Tốc độ của Python chậm hơn Java Java có thể tạo các platform riêng trên

mọi loại máy, kể cả máy áo Tốc độ nhanh hơn Python ở máy thực nhưng chậm hơn nhiều so với Python ở máy ảo Làm việc với file IO nhanh hơn Java Java có cú pháp dài dòng khi làm việc

với file IO

Python hướng đối tượng tốt như Java Java và Python hướng đối tượng tốt như

nhau

Python được sử dụng để tạo ra các ứng

dụng mẫu Java và Python có thể tái sử

dụng mã nguồn của nhau

Java ứng dụng để thiết kế các ứng dụng khó hơn Java và Python có thể tái sử dụng mã nguồn của nhau

Bảng 2.2: Bảng so sánh ngôn ngữ Python và Java

Như vậy mỗi ngôn ngữ Lập trình có một thế mạnh khác nhau, tuy nhiên đề tài này chọn ngôn ngữ Python vì độ linh động, cấu trúc cú pháp dễ dàng khiến cript gọn gàng hơn Thời gian sử dụng Python trong việc lập trình mạng truyền thông công nghiệp khá nhanh Đồng thời Python hỗ trợ lập trình hương đối tượng tốt, giúp dễ dàng xây dựng các lớp trong mạng truyền thông công nghiệp Modbus RTU

Trong tài liệu tham khảo [5] và [6], các tác giả đã nêu ra hướng tạo nên các lớp để thiết kế giao thức Modbus bằng ngôn ngữ Tuy nhiên vẫn còn hạn chế ở các mã nguồn này Đối với tài liệu [5], phân lớp còn quá sơ sài về phần phân lớp, cụ thể nó chỉ chứa 1 lớp minimalmodbus.py Trong lớp minimalmodbus.py làm tất cả các công việc nên việc hiểu và sử dụng hàm gây khó khăn Ngoài ra thì việc phân lớp như vậy khiến dữ liệu không được phân biệt rõ ràng ở các thành phần của khung

Trang 33

truyền giao thức Modbus Tài liệu [6] đã khắc phục vấn đề này bằng cách chia nhỏ thành nhiều lớp khác nhau Tuy nhiên ở tài liệu [6] về mặt quản lý dữ liệu nhận vào còn tốn nhiều thời gian xử lý Do đó luận văn sẽ đưa ra các thuật toán đồng thời xây dựng lại 1 số hàm trong các lớp ở tài liệu [6] để cải thiện vấn đề truyền nhận và xử

lý dữ liệu của khung truyền

2.2 MÁY TÍNH NHÚNG CÔNG NGHIỆP

Có thể khẳng định mọi người đều biết máy tính là gì Song rất nhiều người không thể phân biệt được sự khác nhau giữa một máy tính đa dụng với một máy tính nhúng

Máy tính đa dụng như PC văn phòng điển hình được sử dụng để chạy hàng loạt chương trình và ứng dụng Thí dụ, rất nhiều người trong chúng ta đã từng sử dụng phần mềm xử lí văn bản word, các chương trình bảng tính, các tiện ích của email hay hàng nghìn trò chơi máy tính có trên thị trường Trong khi đó, máy tính nhúng được thiết kế để thực hiện một ứng dụng cụ thể như giám sát cửa an ninh, báo cáo tình trạng của cảm biến cho một hệ thống điều khiển hay quản lí đèn giao thông tại chỗ giao nhau đông người qua lại

Có hai ưu điểm khi sử dụng máy tính nhúng Đầu tiên là giảm thiểu được chi phí Thứ hai là chúng dễ dàng triển khai Trên thực tế, cả hai ưu điểm đó đều liên quan đến kích thước của máy tính nhúng Kích thước giảm đi cũng giúp triển khai các máy tính nhúng một số lượng lớn các địa điểm từ xa một cách dễ dàng hơn

Một ví dụ đơn giản khác là ứng dụng cửa ra vào Nếu lối vào là một cánh cửa nằm bên trong một tòa nhà có điều hòa, máy tính nhúng chỉ cần hoạt động tin cậy trong một dải nhiệt độ hẹp và độ ẩm tương đối thấp Ngược lại, nếu lối vào nằm ở ngoài trời, có thể cần phải sử dụng một máy tính nhúng đảm bảo hoạt động tin cậy trong nhiệt độ cực lạnh (ví dụ, thấp -35 ° C), và nhiệt độ cực nóng (ví dụ như cao +70 ° C)

Trang 34

Đối với các ứng dụng nhúng liên quan đến điều kiện môi trường khắc nghiệt, nên sử dụng máy tính nhúng đáp ứng các tiêu chuẩn sau đây:

Truy cập luôn sẵn sàng: Một thiết kế vững chắc và khả năng quản lí từ xa là một điều bắt buộc nhằm giảm thiểu chi phí bảo dưỡng và đảm bảo máy tính nhúng hoạt động một cách tin cậy

Truyền thông tin cậy: Đối với các ứng dụng đòi hỏi một kiến trúc hệ thống phân tán, phải đảm bảo sử dụng máy tính nhúng đem đến lựa chọn các giao diện và hỗ trợ các giao thức truyền thông bảo mật

Phù hợp với môi trường khắc nghiệt: Rất nhiều các ứng dụng công nghiệp cần đến

hệ số hình dạng tiêu chuẩn DIN-rail và hỗ trợ nhiệt độ hoạt động rộng Đối với các bus và thiết bị lắp đặt trên máy với các bộ phận chuyển động, cần phải xem xết đến khả năng chống rung

Lựa chọn mở rộng linh hoạt: Máy tính nhúng với nhiều khe mở rộng, nhiều lựa chọn bộ nhớ và cổng giao tiếp đem lại cho nhà tích hợp hệ thống nhiều lựa chọn hơn khi thiết kế một hệ thống mới và khi tái sử dụng thiết bị hiện có cho các ứng dụng khác

Quản lí hiệu quả: Có khả năng lắp đặt máy tính nhúng nhanh chóng và dễ dàng là điều cần thiết khi giải quyết vấn về của các hệ thống lớn Ngoài ra, khả năng quản lí

từ xa giúp nâng cao độ tin cậy của hệ thống và giúp dễ dàng cấu hình cũng như cập nhật vi chương trình và phần mềm

Phân tích các điểm vượt trội của máy tính nhúng

Hướng đến sự linh hoạt cao hơn

Mặc dù các máy tính nhúng không đòi hỏi một màn hình, bàn phím và chuột nhưng chúng vẫn cần đến các phương tiện giao tiếp với các thiết bị khác trong hệ thống Ở mức tối thiểu thì máy tính cũng cần có một hoặc 2 cổng serial để kết nối với các thiết bị ngoài Tuy nhiên, đối với máy tính nhúng là một thành phần tồn tại độc lập

Trang 35

trong một hệ thống điều khiển hiện đại, nó cũng cần có khả năng kết nối với nhiều loại giao thức khác:

Serial (SCI): RS232,RS-422, và RS485 là những giao thức serial tiêu chuẩn cho các ứng dụng công nghiệp

Bus Serial đa năng (USB): Mặc dù RS232/422/485 vẫn là tiêu chuẩn cho các ứng dụng công nghiệp, tuy nhiên USB đang bắt đầu xâm nhập thị trường

Kết nối mạng: Ethernet giờ đây đang phổ biến ở môi trường văn phòng và nhà ở, đang được sử dụng ngày càng nhiều hơn trong các hệ thống công nghiệp Ngoài ra, một số ứng dụng công nghiệp sử dụng giao thức CAN (Control Area Network)

IO rời rạc: Các hệ thống điều khiển diện rộng ứng dụng rộng rãi công nghệ General Purpose Input/Output (GPIO)

Chuyển từ Analog sang Digital/Digital sang Analog (ADC/DAC): Khả năng chuyển đổi tín hiệu analog sang tín hiệu số và ngược lại là một yêu cầu đối với nhiều ứng dụng công nghiệp

Giao thức truyền thông không dây: Các ứng dụng công nghiệp trong hệ thống khó kết nối dây có thể phù hợp với việc sử dụng kết nối không dây để truyền dữ liệu qua mạng

Máy tính nhúng cho môi trường khắc nghiệt

Trái ngược với môi trường văn phòng an toàn, nhiệt độ ổn định, các ứng dụng trong môi trường khắc nghiệt cần đến thiết bị có thiết kế cứng vững Máy tính nhúng cần đến một vỏ bọc kim loại chắc chắn và nhỏ gọn, sử dụng ít cáp (nếu có), và không sử dụng các bộ phận chuyển động như ổ cứng và quạt làm mát Đặc biệt, ổ cứng thường bị xước hoặc hỏng làm cho việc sử dụng bộ nhớ flash trở thành một lựa chọn lí tưởng Bên cạnh đó, khả năng chống rung và sốc có thể nâng cao độ ổn định của hệ thống được sử dụng trên xe bus, tàu hỏa, xe tải và các vật thể chuyển động

Thiết kế dải nhiệt độ rộng

Trang 36

Thiết kế nhiệt độ hoạt động rộng là một nhân tố quan trọng đối với các ứng dụng trong một trường khắc nghiệt, ngoài trời, do nhiệt độ có thể dao động từ thấp -35°C đến cao +70°C Vì lí do này, nên chọn các máy tính nhúng được làm từ các cấu kiện chất lượng cao sinh ra ít nhiệt và thời gian máy hoạt động giữa hai lần bị hư hỏng dài Nếu có băn khoăn về tính năng của máy tính để hoạt động tin cậy trong môi trường nhiệt độ nóng và lạnh, nên yêu cầu nhà sản xuất cung cấp tài liệu xác minh

và các chứng nhận liên quan

Bảo vệ cách ly

Thiết bị điện tử có thể được hưởng lợi từ việc sử dụng công nghệ cách li quang học

để bảo vệ vòng tiếp đất và các tác nhân gây nhiễu điện khác Công cụ cách li này hoạt động bằng cách chuyển đổi tín hiệu điện sang ánh sáng, tín hiệu mà được truyền qua một khe hở nhỏ trong các thiết bị điện tử Khi tín hiệu sánh sáng đến mặt bên kia của khe hở, nó được chuyển đổi trở lại thành tín hiệu điện Khe hở được tạo

ra trong mạch điện tử thường được đặt giữa bộ truyền và bộ nhận

Một vấn đề thường xẩy ra với nhiều ứng dụng RS485 là dòng điện vòng tiếp đất chạy qua dây ngầm khi mức điện áp dây nguội khác nhau giữa các thiết bị được kết nối Để loại bỏ vấn đề này, một số sản phẩm RS485 cần có mức bảo vệ cách li quang tới 2 KV

Nếu mạng RS485 bao phủ một khoảng cách tương đối lớn, bảo vệ cách giữ cho các

bộ phận giao tiếp của thiết bị RS485 được khô ráo nên tìm những sản phẩm cung cấp bảo vệ cách li quang ít nhất là 2 KV

Thân thiện với người sử dụng

Đối với vấn đề thời gian tung ra thị trường, máy tính nhúng cần nhiều hơn như chỉ

là một hộp ổ cứng cần cài đặt và cấu hình mở rộng Tìm những tính năng quan trọng sau đây khi quyết định mua loại máy tính nhúng nào cho ứng dụng công nghiệp của bạn

Trang 37

Hệ điều hành sẵn sàng hoạt động: Hầu hết các nhà tích hợp hệ thống và những người sử dụng máy tính nhúng khác đều tìm những máy tính với hệ điều hành, drivers, các hệ thống file và các ứng dụng thông thường như Open VPN hay IPsec VPN được cài sẵn

Chuyển đổi giao thức: máy tính nhúng phải thường kết nối được với nhiều thiết bị không thường xuyên sử dụng cùng giao thức truyền thông Vì lí do này, bạn nên tìm các nhà cung cấp cung cấp phần mềm chuyển đổi giao thức tiện lợi để làm thuận tiện nhiệm vụ truyền dữ liệu qua lại giữa các thiết bị khác nhau

Truy cập từ xa: Người quản lí của nhiều hệ thống hiện nay vẫn còn phải đối mặt với thách thức của việc cần phải gửi kỹ sư tại hiện trường tới quản lí máy tính nhúng của mình Một cách đơn giản để biến thách thức này thành memorable dream là sử dụng máy tính nhúng có thể truy cập từ xa qua Ethernet hay mạng tế bào Ngoài ra, các công cụ quản lí thiết bị online hiệu quả có thể tiết kiệm hàng giờ của kỹ sư Như vậy phần này đã giải thích sự khác nhau cơ bản giữa máy tính đa dụng và máy tính nhúng, và nhấn mạnh đặc điểm mà máy tính nhúng cần có khi được sử dụng trong các ứng dụng công nghiệp Đặc điểm quan trọng nhất là:

• Thiết kế dải nhiệt độ rộng

• Bảo vệ cách li

• Thân thiện với người sử dụng

• Hệ điều chạy sẵn sàng hoạt động

• Phần mềm chuyển đổi giao thức giao tiếp

So sánh giữa máy tính nhúng và các vi điều khiển, ta thấy như sau:

Hiện nay mạng Modbus RTU có thể tích hợp vào trong các vi điều khiển từ 8 bit đến 32 bit Tuy nhiên hiệu quả của nó cần phải xem xét lại trên nhiều yếu tố Bằng việc lập bảng so sánh các dòng vi điều khiển này với máy tính nhúng, chúng ta quan sát được các tính năng, ưu điểm mà máy tính nhúng vượt trội hơn

Trang 38

Phạm vi so sánh Vi điều khiển Máy tính nhúng

Kích thước, giá thành Nhỏ, gọn, rẻ To hơn tùy theo loại, mắc

hơn Môi trường công nghiệp Không sử dụng trong công

nghiệp nơi có môi trường khắc nghiệt

Máy tính nhúng công nghiệp đảm bảo sự hoạt động lâu dài trong môi trường khắc ngiệt của công nghiệp, xưởng, nhà máy

tính nhúng

Cao phù hợp với các ứng dụng cỡ lớn, thậm chí dùng

để điều khiển nhiều loại máy móc

Tốc độ xử lý Vi điều khiển hiện hay có

tốc độ xử lí nhỏ hơn 200Mhz Trong cùng 1 thời gian, vi điều khiển không

xử lý kịp các loại máy tính nhúng

Máy tính nhúng đạt đến tốc

độ ít nhất lớn hơn 1.2Ghz Vượt trội so với vi điều khiển

ngôn ngữ, đa tính năng, ứng dụng Khả năng mở rộng chức năng cực kì lớn Công cụ lập trình Qua máy tính và các thiết

bị nạp

Lập trình trực tiếp

Bảng 2.3: So sánh vi điều khiển và máy tính nhúng

Như vậy trong các ứng dụng nhỏ và cực nhỏ, không trong môi trường công nghiệp thì có thể dùng vi điều khiển Tuy nhiên trong môi trường công nghiệp, việc sử

Trang 39

dụng máy tính nhúng thể hiện các ưu điểm vượt trội hơn, đảm bảo một hệ thống nhanh, an toàn và có thể mở rộng

Máy tính nhúng Banana Pro là một loại máy tính nhúng Linux được nhóm Lemaker tạo ra với các tính năng vượt trội (xem bảng 2.4) Banana Pro chạy trên nền tảng Linux (Lubuntu), Debian, Bananian, BerryBoot, OpenSuse, Scratch, Fedora, Gentoo, Open MediaVault, OpenWRT

Banana Pro được sản xuất có giá thành thấp có thể làm các ứng dụng như server, video game, các hệ thống an ninh, hệ thống tự động, hệ thống xử lý dữ liệu

GPU Mali400MP2, hỗ trợ OpenGL ES 2.0/1.1

SATA 2.0 Ethernet 10/100/1000Mbps ethernet (Realtek RTL8211E/D)

Mạng không dây WiFi 802.11 b/g/n 2.4GHz

1 x USB 2.0 OTG Giao diện 1 x HDMI 1.4

1 x LVDS/RGB/CPU display interface (DSI) Composite video (PAL and NTSC) (Độ phân giải 640×480 đến 1920×1080)

Analog audio I2S audio

1 micphone Camera 1 x Parallel 8-bit camera interface

Bảng 2.4: Cấu hình máy tính nhúng banana Pro

Trang 40

Hình 2.1: Mặt dưới máy tính nhúng Banana Pro

Hình 2.2: Mặt trên máy tính nhúng Banana Pro Như vậy chương 2 đã đưa ra được cách nhìn tổng quát về ngôn ngữ python, máy tính nhúng và đưa ra các lý do vì sao đề tài này lại chọn Python và máy tính nhúng banana pro như các công cụ phục vụ cho quá trình lập trình cũng như mô phỏng của

đề tài luận văn này Từ chương 1 và chương 2 có thể xây dựng nên các thuật toán ở chương 3 được viết theo ngôn ngữ Python

Ngày đăng: 09/03/2021, 11:46

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w