Tải bản đầy đủ (.docx) (33 trang)

Lập trình arduino giao tiếp PLC qua chuẩn RS 485

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.29 MB, 33 trang )

MỤC LỤC
MỤC LỤC.............................................................................................................................................1
DANH MỤC HÌNH ẢNH....................................................................................................................2
LỜI NÓI ĐẦU......................................................................................................................................3
CHƯƠNG 1: TỔNG QUAN VỀ PLC S7 200 VÀ ARDUINO UNO.................................................4
1.1. PLC S7- 1200.....................................................................................................................................4
1.1.1.Giới thiệu chung về PLC..................................................................................................................4
1.1.2.PLC S7-200........................................................................................................................................6
1.1.3.Phân loại............................................................................................................................................7
1.1.3.1. Phân loại theo CPU...............................................................................................................7
1.1.3.2. Phân loại theo cấp điện áp....................................................................................................8
1.1.4 Cấu trúc bên trong.............................................................................................................................8
1.1.5 Phương pháp lập trình điều khiển.....................................................................................................9
1.2. Arduino Uno....................................................................................................................................10
1.3. Mạch Chuyển Giao Tiếp UART TTL sang RS485......................................................................13
CHƯƠNG 2 : TÌM HIỂU GIAO THỨC MODBUS........................................................................15
2.1. Giao thức modbus............................................................................................................................15
2.1.1. Khái niệm tổng quát..............................................................................................................15
2.1.2. Phân loại................................................................................................................................15
2.1.4. Ứng dụng................................................................................................................................15
2.1.5. Cách Modbus hoạt động.......................................................................................................16
2.1.6. Modbus RTU.........................................................................................................................16
2.1.7. Hàm khởi tạo MBUS_CTRL.....................................................................................................17
2.1.8. Hàm truyền nhận dữ liệu MBUS_MSG..................................................................................18
CHƯƠNG 3 : XÂY DỰNG CHƯƠNG TRÌNH ĐIỀU KHIỂN......................................................19
3.1. Mục đích.......................................................................................................................................19
3.2. Sơ đồ đấu nối phần cứng.............................................................................................................19
3.3. Nguyên lý hoạt động...................................................................................................................21
3.4. Thuật toán điều khiển................................................................................................................22
3.5 Chương trình trên PLC................................................................................................................23
3.6. Chương trình trên Arduino...........................................................................................................25


3.7. Kết quả thực hiện.......................................................................................................................26
KẾT LUẬN.........................................................................................................................................28
TÀI LIỆU THAM KHẢO..................................................................................................................29
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN................................................................................30

1


DANH MỤC HÌNH ẢN

2


Hình 1.1 Các dòng PLC của Siemen..............................................................................6
Hình 1.2 Sơ đồ cấu tạo...................................................................................................6
Hình 1.3 Các thành phần trên CPU S7-200...................................................................8
Hình 1.4 Cấu trúc bên trong.........................................................................................10
Hình 1.5 Phương pháp lập trình điều khiển..................................................................11
Hình 1.5 Arduino uno R3.............................................................................................11
Hình 1.6 Vi điều khiển Atmega 328............................................................................12
Hình 1.7: Mạch Chuyển Giao Tiếp UART TTL sang RS485.......................................14
Hình 2.1: Cấu trúc bản tin Modbus RTU.....................................................................17
Hình 3.1: Sơ đồ đấu nối phần cứng..............................................................................20
Hình 3.2: Sơ đồ nối dây giữa RS-485 và PLC.............................................................21
Hình 3.2: Sơ đồ nối dây giữa RS-485 và Arduino.......................................................21
Hình 3.3 Sơ đồ nối dây giữa Arduino với biến trở......................................................22
Hình 3.4: Lưu đồ thuật toán.........................................................................................23
Hình 3.5: Sơ đồ nguyên lý lập trình Arduino giao tiếp với PLC theo chuẩn RS-485...27
Hình 3.6: Sơ đồ mạch in lập trình Arduino giao tiếp với PLC theo chuẩn RS-485......27
Hình 3.7: Sơ đồ mạch mô phỏng 3D lập trình Arduino giao tiếp với PLC theo chuẩn

RS-485......................................................................................................................... 28
Hình 3.8: Sơ đồ nối dây hoàn chỉnh lập trình Arduino giao tiếp với PLC theo chuẩn
RS-485......................................................................................................................... 28
LỜI NÓI ĐẦU
Trong nền công nghiệp hiện nay, việc ứng dụng mạng công nghiệp để điều
khiển và giám sát các thiết bị, các cơ cấp chấp hành ngày càng được sử dụng nhiều
trong các nhà máy, xí nghiệp, và các dây chuyền sản xuất . Việc điều khiển một hệ
thống bởi một máy tính giúp cho việc lưu giữ các giá trị hiện tại được thuận tiện hơn…
Một điều thuận lợi là càng ngày càng có nhiều thiết bị chấp hành hoặc thiết bị
điều khiển như PLC, biến tần,…được tích hợp các giao thức mạng như: Profibus, Can,
Modbus,…Từ những giao thức mạng tích hợp có sẵn trên các thiết bị trên, nhóm đã
thực hiện việc tìm hiểu về mạng truyền thông công nghiệp theo giao thức Modbus, từ
3


đó ứng dụng để xây dựng một mô hình truyền thông giữa PLC và Arduino theo chuẩn
RS485. Việc xây dựng nên mô hình, vừa có mục đích tìm hiểu, vừa mang lại môt cái
nhìn trực quan về một hệ thống mạng công nghiệp.
Việc thực hiện đồ án môn học bằng các kiến thức đã học, một số sách tham
khảo và nguồn tài liệu khác nên không tránh khỏi thiếu sót. Vì vậy em rất mong được
sự góp ý của thầy cô.
Em xin chân thành cảm ơn!

4


CHƯƠNG 1: TỔNG QUAN VỀ PLC S7 200 VÀ ARDUINO UNO
1.1. PLC S7- 1200
1.1.1. Giới thiệu chung về PLC
PLC viết tắt của Programmable Logic Controller, là thiết bị điều khiển lập trình

được cho phép thực hiện linh hoạt các thuật toán điều khiển logic thông qua một ngôn
ngữ lập trình. Người sử dụng có thể lập trình để thực hiện một loạt trình tự các sự kiện.
Các sự kiện này đươc kích hoạt bởi tác nhân kích thích (ngõ vào) tác động vào PLC
hoặc qua các hoạt động có trễ như thời gian định thì hay các sự kiện được đếm. Một
khi sự kiện được kích hoạt thật sự, nó bật ON hay OFF thiết bị điều khiển bên ngoài
được gọi là thiết bị vật lý. Một bộ điều khiển lập trình sẽ liên tục "lặp" trong chương
trình do "người sử dụng lập ra" chờ tín hiệu ở ngõ vào và xuất tín hiệu ở ngõ ra tại các
thời điểm đã lập trình.
Để khắc phục những nhược điểm của bộ điều khiển dùng dây nối người ta đã
chế tạo ra bộ PLC nhằm thỏa mãn các yêu cầu sau:
+ Lập trình dễ dàng, ngôn ngữ lập trình dễ học.
+ Gọn nhẹ, dễ dàng bảo quản, sửa chữa.
+ Dung lượng bộ nhớ lớn để có thể chứa được những chương trình phức tạp.
+ Hoàn toàn tin cậy trong môi trường công nghiệp.
+ Giao tiếp được với các thiết bị thông minh khác như : máy tính, nối mạng,
các mô Modul mở rộng.
Các thiết kế đầu tiên là nhằm thay thế cho các phần cứng Relay dây nối và các
Logic thời gian.Tuy nhiên,bên cạnh đó việc đòi hỏi tăng cường dung lượng nhớ và tính
dễ dàng cho PLC mà vẫn bảo đảm tốc độ xử lý cũng như giá cả …
Chính điều này đã gây ra sự quan tâm sâu sắc đến việc sử dụng PLC trong công
nghiệp. Các tập lệnh nhanh chóng đi từ các lệnh logic đơn giản đến các lệnh đếm, định
thời, thanh ghi dịch … sau đó là các chức năng làm toán trên các máy lớn
Sự phát triển các máy tính dẫn đến các bộ PLC có dung lượng lớn, số lượng I/O
nhiều hơn.
Trong PLC, phần cứng CPU và chương trình là đơn vị cơ bản cho quá trình
điều khiển hoặc xử lý hệ thống. Chức năng mà bộ điều khiển cần thực hiện sẽ được
xác định bởi một chương trình. Chương trình này được nạp sẵn vào bộ nhớ của PLC,
PLC sẽ thực hiện việc điều khiển dựa vào chương trình này. Như vậy nếu muốn thay
5



đổi hay mở rộng chức năng của quy trình công nghệ, ta chỉ cần thay đổi chương trình
bên trong bộ nhớ của PLC. Việc thay đổi hay mở rộng chức năng sẽ được thực hiện
một cách dễ dàng mà không cần một sự can thiệp vật lý nào so với sử dụng các bộ dây
nối hay Relay.

Hình 1.1 Các dòng PLC của Siemen

Hình 1.2 Sơ đồ cấu tạo
6


1.1.2. PLC S7-200
PLC S7-200 là thiết bị điều khiển logic lập trình loại nhỏ của hãng Siemens, có
cấu trúc theo kiểu module và có các module mở rộng. Các module này được sử dụng
cho nhiều ứng dụng lập trình khác nhau.
S7-200 thuộc nhóm PLC loại nhỏ, quản lý một số lượng đầu vào/ra tương đối ít.
Có từ 6 đầu vào/ 4 đầu ra số (CPU221) đến 24 đầu vào/ 16 đầu ra số (CPU226).
Có thể mở rộng các đầu vào/ra số bằng các module mở rộng
Kiểu đầu vào IEC 1131-2 hoặc SIMATIC. Đầu vào sử dụng mức điện áp
24VDC, thích hợp với các cảm biến
Có 2 kiểu ngõ ra là Relay và Transitor cấp dòng
Tích hợp sẵn cổng Profibus hay sử dụng một module mở rộng, cho phép tham
gia vào mạng Profibus như một Slave thông minh.
Có cổng truyền thông nối tiếp RS485 vơi đầu nối 9 chân. Tốc độ truyền cho
máy lập trình kiểu PPI là 9600 bauds, theo kiểu tự do là 300 – 38.400 bauds.
Tập lệnh có đủ lệnh bit logic, so sánh, bộ đếm, dịch/quay thanh ghi, timer cho
phép lập trình điều khiển Logic dễ dàng.
Ngôn ngữ lập trình: LAD, STL, FBD.
Ứng dụng:

Dùng cho các ứng dụng điều khiển logic, điều khiển tuần tự, liên động…trong
công nghiệp và các ứng dụng vừa và nhỏ.
CPU S7-200 kết hợp bộ vi xử lý, bộ nguồn, mạch đầu vào và mạch đầu ra trong
một thiết kế nhỏ gọn.

7


Hình 1.3 Các thành phần trên CPU S7-200
1.1.3. Phân loại.
1.1.3.1. Phân loại theo CPU
S7-200 có các dòng CPU 221, CPU 222, CPU 224, CPU 226… Bảng dưới trình
bày một số đặc tính của một số CPU

Bảng 1.1 Các dòng PLC S7-200 của Siemen

8


1.1.3.2. Phân loại theo cấp điện áp
Loại PLC S7-200 cấp điện áp 220VAC :
+ Ngõ vào: Tích cực mức 1 ở cấp điện áp +24VDC ( 15VDC – 30VDC)
+Ngõ ra: Rơ le
Ưu điểm của loại này là ngõ ra rơ le, do đó có thể sử dụng ngõ ra ở nhiều cấp
điện áp (có thể sử dụng ngõ ra 0V,24V,220V…. )
Tuy nhiên, nhược điểm của nó : do ngõ ra rơ le nên thời gian đáp ứng của rơ le
không được nhanh cho ứng dụng điều chỉnh độ rộng xung , hoặc output tốc độ cao
Loại PLC S7-200 dùng nguồn 24VDC :
+ Ngõ vào: Tích cực mức 1 ở cấp điện áp +24VDC ( 15VDC – 30VDC)
+ Ngõ ra : Ngõ ra transistor

Ưu điểm của loại này là ngõ ra Transistor, do đó có thể sử dụng ngõ ra này để
điều chỉnh độ rộng xung, hoặc output0V,24V,220V…. )
Tuy nhiên, nhược điểm của nó : do ngõ ra transistor nên ngõ ra chỉ có một cấp
điện duy nhất là +24VDC, do vậy sẽ gặp rắc rối trong những ứng dụng có cấp điện áp
ra la 0VDC, Trong trường hợp này buộc ta phải thông qua 1 rơ le 24Vdc đệm.
1.1.4 Cấu trúc bên trong
Cũng giống như các PLC cùng họ khác, PLC S7-200 gồm 4 bộ phận cơ bản: bộ
xử lý, bộ nhớ, bộ nguồn, giao tiếp xuất/nhập.
Bộ xử lý còn được gọi là bộ xử lý trung tâm (CPU), chứa bộ vi xử lý, biên dịch
các tín hiệu nhập và thực hiện các hoạt động điều khiển theo chương trình được lưu
trong bộ nhớ của PLC. Truyền các quyết định dưới dạng tín hiệu hoạt động đến các
thiết bị xuất.
Bộ nguồn có nhiệm vụ chuyển đổi điện áp AC thành điện áp DC (24V) cần thiết
cho bộ xử lý và các mạch điện trong các module giao tiếp nhập và xuất.
Bộ nhớ là nơi lưu trữ chương trình được sử dụng cho các hoạt động điều khiển
dưới sự kiểm soát của bộ vi xử lý.
Các thành phần nhập và xuất (Input/Output) là nơi bộ nhớ nhận thông tin từ các
thiết bị ngoại vi và truyền thông tin đến các thiết bị điều khiển. Tín hiệu nhập có thể từ
các công tắc, các bộ cảm biến,…. Các thiết bị xuất có thể là các cuộn dây của bộ khởi
động động cơ, các van solenoid,….
9


Chương trình điều khiển được nạp vào bộ nhớ nhờ sự trợ giúp của bộ lập trình
hay bằng máy vi tính.

Hình 1.4 Cấu trúc bên trong
Giải thích sơ đồ : tín hiệu của sensor, công tắc, các bộ cảm biến,…. đi vào đầu
vào (input) của PLC rồi được đưa đến CPU để xử lý và đưa vào bộ nhớ. CPU nhận tín
hiệu và tiến hành điều khiển các thiết bị ở đầu ra có thể là các cuộn dây của bộ khởi

động động cơ, các van solenoid,….
1.1.5 Phương pháp lập trình điều khiển
Khác với phương pháp điều khiển cứng, trong hệ thống điều khiển có lập trình,
cấu trúc bộ điều khiển và cách đấu dây độc lập với chương trình. Chương trình định
nghĩa hoạt động điều khiển được viết nhờ sự giúp đỡ của một máy vi tính.
Để thay đổi tiến trình điều khiển, chỉ cần một thay đổi nội dung bộ nhớ điều
khiển, chứ không cần thay đổi cách nối dây bên ngoài. Qua đó, ta thấy được ưu điểm
của phương pháp điều khiển lập trình được so với phương pháp điều khiển cứng. Do
đó, phương pháp này được sử dụng rất rộng rãi trong lĩnh vực điều khiển.

10


Phương pháp điều khiển lập trình được thực hiện theo các bước sau :

Hình 1.5 Phương pháp lập trình điều khiển
1.2. Arduino Uno
Arduino Uno R3 là dòng cơ bản, linh hoạt, thường được sử dụng cho người mới
bắt đầu. Ta có thể sử dụng các dòng Arduino khác như: Arduino Mega, Arduino Nano,
Arduino Micro… Nhưng với những ứng dụng cơ bản thì mạch Arduino Uno là lựa
chọn phù hợp nhất.

Hình 1.5 Arduino uno R3
Một vài thông số của Arduino UNO R3
Vi điều khiển

ATmega328 họ 8bit

Điện áp hoạt động


5V DC (chỉ được cấp qua cổng USB)

Tần số hoạt động

16 MHz

Dòng tiêu thụ

khoảng 30mA

Điện áp vào khuyên dùng

7-12V DC
11


Điện áp vào giới hạn

6-20V DC

Số chân Digital I/O

14 (6 chân hardware PWM)

Số chân Analog

6 (độ phân giải 10bit)

Dòng tối đa trên mỗi chân I/O


30 mA

Dòng ra tối đa (5V)

500 mA

Dòng ra tối đa (3.3V)

50 mA

Bộ nhớ flash

32 KB (ATmega328) với 0.5KB dùng bởi
bootloader

SRAM

2 KB (ATmega328)

EEPROM

1 KB (ATmega328)

Bảng 1.3 Một vài thông số của Arduino Uno R3
Vi điều khiển

Hình 1.6 Vi điều khiển Atmega 328
Arduino UNO có thể sử dụng 3 vi điều khiển họ 8bit AVR là ATmega8,
ATmega168, ATmega328. Bộ não này có thể xử lí những tác vụ đơn giản như điều
khiển đèn LED nhấp nháy, xử lí tín hiệu cho xe điều khiển từ xa, làm một trạm đo

nhiệt độ - độ ẩm và hiển thị lên màn hình LCD,… hay những ứng dụng khác.
Năng lượng: Arduino UNO có thể được cấp nguồn 5V thông qua cổng USB
hoặc cấp nguồn ngoài với điện áp khuyên dùng là 7-12V DC và giới hạn là 6-20V. Nếu
cấp nguồn vượt quá ngưỡng giới hạn trên, sẽ làm hỏng Arduino UNO.

12


Các chân năng lượng:
- GND (Ground): Cực âm của nguồn điện cấp cho Arduino UNO. Khi dùng các
thiết bị sử dụng những nguồn điện riêng biệt thì những chân này phải được nối với
nhau.
- 5V: Cấp điện áp 5V đầu ra. Dòng tối đa cho phép ở chân này là 500mA.
- 3.3V: Cấp điện áp 3.3V đầu ra. Dòng tối đa cho phép ở chân này là 50mA.
- Vin (Voltage Input): Để cấp nguồn ngoài cho Arduino UNO, nối cực dương
của nguồn với chân này và cực âm của nguồn với chân GND.
- IOREF: Điện áp hoạt động của vi điều khiển trên Arduino UNO có thể được
đo ở chân này là 5V. Nhưng không được lấy nguồn 5V từ chân này để sử dụng bởi
chức năng của nó không phải là cấp nguồn.
- RESET: Việc nhấn nút Reset trên board để reset vi điều khiển tương đương
với việc chân RESET được nối với GND qua 1 điện trở 10KΩ.
Bộ nhớ sử dụng
Vi điều khiển Atmega328 tiêu chuẩn sử dụng trên Arduino Uno r3 có:
- 32KB bộ nhớ Flash: những đoạn lệnh lập trình sẽ được lưu trữ trong bộ nhớ
Flash của vi điều khiển. Thường thì sẽ có khoảng vài KB trong số này sẽ được dùng
cho bootloader và hiếm khi nào cần quá 20KB bộ nhớ.
- 2KB cho SRAM (Static Random Access Memory): giá trị các biến khai báo
khi lập trình sẽ lưu ở đây. Khai báo càng nhiều biến thì càng cần nhiều bộ nhớ RAM.
Khi mất điện, dữ liệu trên SRAM sẽ bị mất.
- 1KB cho EEPROM(Electrically Eraseble Programmable Read Only

Memmory): đây giống như một chiếc ổ cứng mini – nơi có thể đọc và ghi dữ liệu vào
đây mà không phải lo bị mất khi mất điện giống như dữ liệu trên SRAM.
Các cổng vào/ra trên Arduino Board
Mạch Arduino UNO có 14 chân digital dùng để đọc hoặc xuất tín hiệu. Chúng
chỉ có 2 mức điện áp là 0V và 5V với dòng vào/ra tối đa trên mỗi chân là 40mA. Ở
mỗi chân đều có các điện trở pull-up từ được cài đặt ngay trong vi điều khiển
ATmega328 (mặc định thì các điện trở này không được kết nối).
Một số chân digital có các chức năng đặc biệt như sau:
- 2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận (receive
– RX) dữ liệu TTL Serial. Arduino Uno có thể giao tiếp với thiết bị khác thông qua 2
13


chân này. Kết nối bluetooth thường thấy chính là kết nối Serial không dây. Nếu không
cần giao tiếp Serial, ta không nên sử dụng 2 chân này nếu không cần thiết
- Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép xuất ra xung PWM với độ phân
giải 8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm analogWrite(). Nói
một cách đơn giản, có thể điều chỉnh được điện áp ra ở chân này từ mức 0V đến 5V
thay vì chỉ cố định ở mức 0V và 5V như những chân khác.
- Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Ngoài các
chức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giao thức
SPI với các thiết bị khác.
- LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L). Khi bấm
nút Reset, sẽ thấy đèn này nhấp nháy để báo hiệu. Nó được nối với chân số 13. Khi
chân này được người dùng sử dụng, LED sẽ sáng.
Arduino UNO Broad có 6 chân analog (A0 → A5) cung cấp độ phân giải tín
hiệu 10bit (0 → 210-1) để đọc giá trị điện áp trong khoảng 0V → 5V. Với
chân AREF trên board, có thể để đưa vào điện áp tham chiếu khi sử dụng các chân
analog. Tức là nếu cấp điện áp 2.5V vào chân này thì có thể dùng các chân analog để
đo điện áp trong khoảng từ 0V → 2.5V với độ phân giải vẫn là 10bit.

Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp
I2C/TWI với các thiết bị khác.
1.3. Mạch Chuyển Giao Tiếp UART TTL sang RS485

Hình 1.7: Mạch Chuyển Giao Tiếp UART TTL sang RS485
Mạch chuyển giao tiếp UART TTL-RS485 được thiết kế để có thể giúp chuyển
giao tiếp từ chuẩn giao tiếp UART TTL (Vi điều khiển, máy tính nhúng,...) sang chuẩn
giao tiếp RS485 và ngược lại.

14


Mạch chuyển giao tiếp UART TTL-RS485 được thiết kế với khả năng chống
nhiễu cao, tích hợp các bộ đệm, cầu chì tự phục hồi, diod chống nhiễu giúp hệ thống
chạy ổn định, an toàn hơn và không làm cháy board điều khiển trung tâm.
Thông số kỹ thuật:
- Điện áp hoạt động: 3 - 5VDC.
- Điện áp giao tiếp TTL: 3 - 5VDC.
-Khoảng cách truyền RS485 có thể lên đến 1km (khuyến nghị sử dụng dưới
800m và dây bus chuyên dụng cho RS485).
- Chuẩn chân cắm TTL 2.54mm.
- Có đèn led thông báo trạng thái truyền nhận RX và TX.
Sơ đồ chân MAX485:

Hình 1.8: Sơ đồ chân Max485
Chức năng MAX485:
-Max485 là bộ truyền nhận dữ liệu năng lượng thấp dùng cho chuẩn RS485.
-Tốc độ bit Max= 2,5Mbps
-Có thể kết nối tối đa 32 thiết bị trên bus 485 .
-Điện áp hoạt động : -7V ~ 12V.

-Thường dùng 5V.
-Bus Max485 truyền dữ liệu Vi sai bằng 2 dây A,B nên khoảng cách truyền lớn, khả
năng chống nhiễu tốt.
-với A-B > 200mV sẽ tạo mức logic 1.
15


-với B-A>200mV sẽ tạo mức logic 0.
Ứng dụng thực tế:

Hình 1.9: Sơ đồ giao tiếp giữa 2 thiết bị
- Giao tiếp giữa hai thiết bị. Có thể giao tiếp tối đa 32 MAX485 với nhau trên cùng
một BUS.
- Để giao tiếp các MAX485 với nhau chúng ta cần kết nối các chân với nhau A nối
với A B nối với B
Truyền giữ liệu MAX458.
Để Truyền dữ liệu với Max485 cần thực hiện các bước sau.
-Kết nối chân A với A, B với B giữa 2 IC.
-Cấu hình truyền trên IC1, cho chân DE mức 1.
-Cấu hình nhận trên IC2, cho chân RE mức 0.
-Gửi dữ liệu vào tại chân DI của IC1.
-Đọc Dữ liệu Ra tại chân DO của IC2.

16


CHƯƠNG 2 : TÌM HIỂU GIAO THỨC MODBUS
2.1. Giao thức modbus
2.1.1. Khái niệm tổng quát
Giao thức modbus là một protocol phổ biến bậc nhất được sử dụng hiện nay

cho nhiều mục đích. Modbus do Modicon (hiện nay thuộc Schneider Electric) phát
triển năm 1979, là một phương tiện truyền thông với nhiều thiết bị thông qua một cặp
dây xoắn đơn. Ban đầu, nó hoạt động trên RS-232, nhưng sau đó nó sử dụng cho cả
RS485 để đạt tốc độ cao hơn, khoảng cách dài hơn, và mạng đa điểm (multi-drop).
Modbus đã nhanh chóng trở thành tiêu chuẩn thông dụng trong ngành tự động hóa.
Giao thức 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 RS-232 và RS-485. Việc truyền dữ liệu được thực hiện theo
cơ chế 1 Master/ nhiều Slave.
2.1.2. Phân loại
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 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.
2.1.4. Ứng dụng
Modbus là một giao thức truyền thông mở, nó là phương pháp truyền thông
phổ biến nhất được sử dụng để kết nối các thiết bị điện tử công nghiệp.
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.

17


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 ).
2.1.5. Cách Modbus hoạt động
Modbus truyền tin thông qua dây nối tiếp giữa các thiết bị. Cách cài đặt đơn
giản nhất là dùng 1 cáp nối tiếp kết nối giữa 2 port nối tiếp của 2 thiết bị master –
slave.
Dữ liệu được truyền đi dưới dạng bit. Mỗi bit được thể hiện dưới dạng điện áp
mức 0 ứng với điện áp dương và bit 1 ứng với điện áp âm. Các bit này được gửi với
tốc độ rất nhanh. Tốc độ truyền thông thường là 9600 baud.
2.1.6. Modbus RTU
Giao thức modbus RTU là một giao thức mở, sử dụng đường truyền vật lý RS232 hoặc RS-485 và mô hình dạng Master-Slave. Đây là một giao thức được sử dụng
rộng rãi trong nhiều lĩnh vực như BMS (Building Management Systems), tự động hóa,
công nghiệp, điện lực,....
Modbus được coi là giao thức truyền thông hoạt động ở tầng "Application",
cung cấp khả năng truyền thông Master/Slave giữa các thiết bị được kết nối thông qua
các bus hoặc network. Trên mô hình OSI, Modbus được đặt ở lớp 7. Modbus được xác
định là một giao thức hoạt động theo "hỏi/đáp" và sử dụng các "function codes" tương
ứng để hỏi đáp.
Cấu trúc bản tin Modbus RTU
Một bản tin Modbus RTU bao gồm: 1 byte địa chỉ - 1 byte mã hàm - n byte dữ
liệu - 2 byte CRC như hình ở dưới:

Hình 2.1: Cấu trúc bản tin Modbus RTU
Chức năng và vai trò cụ thể như sau:
18


- Byte địa chỉ: xác định thiết bị mang địa chỉ được nhận dữ liệu (đối với Slave)
hoặc dữ liệu nhận được từ địa chỉ nào (đối với Master). Địa chỉ này được quy định từ 0
– 254

- Byte mã hàm: được quy định từ Master, xác định yêu cầu dữ liệu từ thiết bị
Slave. Ví dụ mã 01: đọc dữ liệu lưu trữ dạng Bit, 03: đọc dữ liệu tức thời dạng Byte,
05: ghi dữ liệu 1 bit vào Slave, 15: ghi dữ liệu nhiều bit vào Slave ...
- Byte dữ liệu: xác định dữ liệu trao đổi giữa Master và Slave.
o

Đọc dữ liệu:

Master: 2 byte địa chỉ dữ liệu - 2 byte độ dài dữ liệu
Slave: 2 byte địa chỉ dữ liệu - 2 byte độ dài dữ liệu - n byte dữ liệu đọc được
o

Ghi dữ liệu:

Master: 2 byte địa chỉ dữ liệu - 2 byte độ dài dữ liệu - n byte dữ liệu cần ghi
Slave: 2 byte địa chỉ dữ liệu - 2 byte độ dài dữ liệu
Byte CRC: 2 byte kiểm tra lỗi của hàm truyền. cách tính giá trị của Byte CRC
16 Bit
2.1.7. Hàm khởi tạo MBUS_CTRL

Hàm MBUS_CTRL
Các tham số ngõ vào hàm khởi tạo
+ EN: Cho phép truyền nhận.
+ Mode: Chọn giao thức truyền thông cho cổng giao tiếp PLC, nếu mode bằng
1 thì cho phép truyền thông còn bằng 0 thì là cổng nạp.
+ Baud: Tốc độ truyền thông.
+ Parity: Kiểm tra chẵn lẻ.
+ Timeout: Thời gian đáp ứng từ slave
19



+ Done: Ngõ ra tín hiệu việc ghi hay đọc đã hoàn tất.
+ Error: Byte báo lỗi trong trường hợp xảy ra lỗi
2.1.8. Hàm truyền nhận dữ liệu MBUS_MSG

Các tham số ngõ vào hàm MBUS_MSG:
+ En: Cho phép hàm hoạt động.
+ First: Kích hoạt truyền nhận dữ liệu.
+ Slave: Địa chỉ của slave 1 đến 247.
+ Rw: Ngõ vào điều khiển đọc ghi dữ liêu:
Rw = 0: Đọc dữ liệu từ slave về master.
Rw = 1: Đọc dữ liệu từ master về slave.
+ Address: Địa chỉ modbus trong slave.
+ Count: Số lượng bit hay word dữ liệu được đọc hay ghi.
+ DataPtr: Con trỏ địa chỉ chỉ vùng nhớ trong PLC S7-200.
+ Done: Ngõ ra tín hiệu việc ghi hay đọc đã hoàn tất.
+ Error: Byte báo lỗi trong trường hợp lỗi xảy ra.

20


CHƯƠNG 3 : XÂY DỰNG CHƯƠNG TRÌNH ĐIỀU KHIỂN
3.1. Mục đích
Trong các dòng PLC nói chung đầu vào Analog ONBOARD chỉ đọc được tín
hiệu điện áp. Cảm biến nào trả về mức điện áp từ 0 - 10V thì có thể đọc được. Còn nếu
không trả về mức điện áp thì nó sẽ không đọc được.
Để giải quyết vấn đề này ta cần sử dụng một mạch giao tiếp với PLC. Ta có thể
sử dụng Arduino để đọc dữ liệu từ cảm biến đó và trả về dạng điện áp 0 – 10V, sau đó
lấy áp 0 -10V trên đưa vào ngõ vào Analog trên PLC.
Trên thực tế có thể sử dụng nhiều loại vi điều khiển để đọc dữ liệu từ các loại

cảm biến đó. Nhưng ở đây ta sử dụng Arduino giao tiếp với PLC theo chuẩn RS485.
3.2. Sơ đồ đấu nối phần cứng
Sơ đồ đấu nối phần cứng

Hình 3.1: Sơ đồ đấu nối phần cứng
Kết nối giữa Module RS-485 và PLC:
Chân VCC của RS- 485 nối với nguồn dương 5V
Chân GND của RS- 485 nối với nguồn âm
Chân B của RS- 485 nối với chân số 8 của dây DB9
Chân A của RS- 485 nối với chân số 3 của dây DB9
Ở đây ta sử dụng một mạch cầu phân áp để cấp năng lượng cho quá trình truyền
dữ liệu từ Arduino sang PLC.
21


Hình 3.2: Sơ đồ nối dây giữa RS-485 và PLC
Kết nối giữa Module RS-485 và Arduino:
Chân DI của RS-485 được nối với chân TX của arduino.
Chân R0 của RS-485 được nối với chân RX của arduino.
Chân DE và RE của RS-485 được nối chung với nhau và cùng nối về chân số 2
của Arduino.

Hình 3.3: Sơ đồ nối dây giữa RS-485 và Arduino
Kết nối giữa arduino và biến trở
Hai số 1 của biến trở 1, 2 được nối chung với nhau và cùng nối về nguồn
dương 5V của Arduino
Hai số 3 của biến trở 1, 2 được nối chung với nhau và cùng nối về nguồn âm
chân GND của Arduino
Hai chân số 2 của biến trở 1, 2 được nối lần lượt với chân A0, A1 trên Arduino
22



Hình 3.4: Sơ đồ nối dây giữa Arduino với biến trở
3.3. Nguyên lý hoạt động
Để tiến hành quá trình bật tắt các đầu ra của PLC S7 200 ta sử dụng hai biến trở
- Biến trở số 1 để điều khiển đầu ra của PLC từ Q0.0 đến Q0.7
- Biến trở số 2 để điều khiển đầu ra của PLC từ Q1.0 đến Q1.7
Tín hiệu điện áp từ biến trở 1 được đưa vào arduino của chân A0, tín hiệu đó
được gửi lên PLC và lưu thanh ghi 30001. Trong chương trình PLC ta sử dụng bộ chia
DIV_I dữ liệu được xử lý ở khối này rồi đem so sánh .
Kết quả được so sánh:
- Nếu kết quả >= 1 thì bật Q0.0
- Nếu kết quả >= 2 thì bật Q0.1
- Nếu kết quả >= 3 thì bật Q0.2
- Nếu kết quả >= 4 thì bật Q0.3
- Nếu kết quả >= 5 thì bật Q0.4
- Nếu kết quả >= 6 thì bật Q0.5
- Nếu kết quả >= 7 thì bật Q0.6
- Nếu kết quả >= 8 thì bật Q0.7
Tín hiệu điện áp từ biến trở 2 được đưa vào arduino của chân A0, tín hiệu đó
được gửi lên PLC và lưu thanh ghi 30002 quá trình. Dữ liệu cũng được xử lý ở khối
DIV_I rồi được đem đi so sánh.
Khi kết quả lần lượt lớn hơn hoặc bằng các giá trị từ 1 đến 8 thì các đầu ra Q
cũng được bật tương tự từ Q1.0 đến Q1.7.
23


24



3.4. Thuật toán điều khiển

Bắt đầu

VW10, VW12 >=8

Q0.7, Q1.7 =1

Khởi tạo

VW10, VW12 >=7

Q0.6, Q1.6 =1

Đo điện áp ở chân A0, A1
của Arduino

VW10, VW12 >=6

Q0.5, Q1.5 =1

VW10, VW12 >=5

Q0.4, Q1.4 =1

VW10, VW12 >=4

Q0.3, Q1.3 =1

VW10, VW12 >=3


Q0.2, Q1.2 =1

VW10, VW12 >=2

Q0.1, Q1.1 =1

VW10, VW12 >=1

Q0.0, Q1.0 =1

Giá trị điện áp được gửi
lên PLC và ghi vào các
thanh ghi 30001 và
30002

Bộ chia DIV_I nhận giá trị
từ thanh ghi 30001 và
30002 lấy các giá trị đó
chia cho 127 và xuất ra ở
các đầu ra lần lượt là
VW10, VW12

Hình 3.5: Lưu đồ thuật toán
25


×