Jun 3, 2015



Mạng profibus là mạng cấp cao thứ 2 sau ethernet. và trên mạng AS-i, nói về lý thuyết về mạng này thì rất khó hiểu, nhiều khi ta đọc hết lý thuyết về nó cũng chẳng hiểu nó làm việc ra sao. 
Tại sao phải dùng mạng công nghiệp trong sản xuất: các bạn cứ tưởng tượng rằng,1 nhà máy rộng vài ngàn mét vuông, các cỗ máy hoạt động đan xen, ở cự ly xa....Dùng mạng điều khiển bạn sẽ tiết kiệm chi phí, quản lý sản xuất dễ dàng, theo dõi quá trình đơn giản --> hiệu quả sản xuất.
Bài viết này giúp ích cho các bạn có được hình dung nào đó về mạng này. Đây là một sơ đồ cơ bản Profibus - DP (thế nào là DP hay gì đó các bạn hãy tự tìm hiểu


Nói về mạng là phải nói về sự kết nối của nhiều thành phần. Giống như 1 mạng máy tính có nhiều trạm. Một mạng profibus đơn giản nhất sẽ có 1 master, và các slave. Sau đây sẽ trình bày 1 mạng Profibus-Dp của siemen:
Ví dụ: 
Master - s7 300, có kèm module giao tiếp profibus (giống máy tính cần card mạng)
S7-200 máy slave (có module giao tiếp EM277)
Như vậy với 1 PLC s7-300, 2 PLC s7-200, 2 module EM277 như hình ta sẽ tạo ra mạng Profibus rồi.

TỔNG QUÁT:
Quan trọng nhất là hiểu được nguyên tắc của EM 277.Các bước thực hiện như sau:
Vào simatic S7: khai báo vùng địa chỉ dữ liệu vào ra của các slave trên master
Khai báo offset cho EM 277 để xác định vùng dữ liệu vào ra trên slave (vùng V của s7-200)
Tiến hành viết chương trình theo yêu cầu.


CỤ THỂ:


1. Nguyên tắc đặt vùng nhớ của các slave trên master:
Tùy thuộc vào độ lớn dữ liệu truyền qua mạng mà ta thiết lập độ lớn vùng nhớ cho trao đổi dữ liệu.Ví dụ: ta chỉ truyền tín hiệu khởi động 1 motor ở slave 1 từ master đặt cách động cơ 300m. Ta thấy chỉ cần truyền một bít là có thể tắt/mở động cơ được rồi --> ta chọn độ lớn là:2byte in/2 byte out
Vùng nhớ vào của master là vùng I, nó nhận các dữ liệu chuyển đến từ 1 slave mà nó định nghĩa
Vùng nhớ ra của master là Q, nó sẽ truyền tín hiệu ra các slave.Ví dụ : tín hiệu 2byte in/2 byte out (vào/ra của slave 1 trên master): IB10/IB12 và QB10/QB12 (con số 10 là do mình tự chọn cho các slave sao cho không trùng nhau, con số 12 thể hiện rằng nó có độ lớn 2 byte)
Tóm lại : Giả sử đặt địa chỉ của slave như sau:Slave1: IN: IB10/IB12; OUT: QB10/QB12Slave2: IN: IB20/IB22; OUT: QB20/QB22
2. Nguyên tắc truyền dữ liệu của EM277:
EM 277 có offset bằng bao nhiêu thì vùng V trên slave sẽ bắt đầu từ vị trí đó,ví dụ: slave 1 offset 10 --> vùng nhớ bắt đầu cho trao đổi dữ liệu trên slave 1 là VB10 (có thể chọn số khác tùy mình, nhưng con số đó sẽ là bắt đầu vùng nhớ nhận/truyền dữ liệu của slave)theo đó: chọn:slave 1: offset 10 --> vùng nhận dữ liệu của slave 1 là VB10/VB11 ( con số VB12 có được là do ta qui định độ lớn của dữ liệu truyền là 2byte mà ở phần 1 có nói). Kế ngay tiếp vùng nhận sẽ là vùng truyền dữ liệu cũng có độ lớn 2byte: VB12/VB13

Xác định vùng nhận/truyền dữ liệu làm gì?
- Khi ta gửi dữ liệu lên mạng thì nó sẽ tự động chuyển tới vùng nhớ mà ta qui định, khi đó ta chỉ việc đọc vùng nhớ đó là ok!Ví dụ; đơn giản như sau:Truyền 1 bit điều khiển từ master xuống slave 1 chẳng hạn :---> xuất ra vùng nhớ ra trên master mà slave 1 đã được qui định. cụ thể là QB10/QB12ví dụ chọn bit Q10.0 chẳng hạn---> khi đó ở slave 1 chỉ cần đọc nội dung của V10.0 đó cũng chính là nội dung của Q10.0. quá dễ!
Hãy nhìn vào hình vẽ sau sẽ dễ hiểu hơn:



Vấn đề độ lớn dữ liệu rất quan trọng, do ứng dụng thực tế mà người lập trình quy định độ lớn của dữ liệu truyền đi.Trong EM277 cho phép ta xác định độ lớn này rất linh hoạt. Việc xác lập được thực hiện bởi người lập trình trong Step7 simatic trong quá trình xây dựng mô hình phần cứng.


- Các kiểu dữ liệu:2 byte in / 2 byte out8 byte in/ 8 byte out16 byte in/ 16 byte out .....
Ta thường dùng các vùng nhớ vào/ra lớn trong các trường hợp mà dữ liệu dưới nó không chứa hết. Nếu ta cố tình dùng dữ liệu không phù hợp sẽ làm mất dữ liệu khi truyền.


Ví dụ :
- Yêu cầu: Xây dựng và viết chương trình điều khiển động cơ của slave 1 từ master theo chu kì 5s mở, 5s tắt và lặp lại. Ở master sẽ start/stop động cơ và đặt trước số chu kì hoạt động của động cơ ở slave 1. Khi đã đủ chu kì đặt thì dừng động cơ.
- Giải pháp:Ta phải truyền: Tín hiệu điều khiển + dữ liệu chu kì từ master xuống slave 1. Nếu dùng 2 byte/2byte thì rất khó thực hiện và dữ liệu có thể bị chồng lên nhau, và số chu kì đặt chỉ có thể là số 8bit = 1byte, do 1 byte đã được sử dụng để truyền bit điều khiển rồi.
Bài tập1
Điều khiển động cơ tắt/mở ở slave 1 từ master.

Sơ đồ:


Thiết lập vào/ra trên master: slave 1 : IB10/IB11 ; QB10/QB11Thiết lập trên slave1: Offset 10 --> in VB10/VB11;out: VB12/VB13Viết CT cho PLC như sau :
Chương trình cho master :


Chương trình cho slave 1:



Bài Tập 2: (khó hơn chút)
Điều khiển tắt/mở 1 động cơ ở slave 1 từ nút nhấn ở Slave 2 (không phải là ở master nữa nhé! )Sơ đồ mạng như sau:


Các bạn quan tâm thì tự làm nhé.Trước hết: xác định vùng nhớ cho các slave- Đọc nội dung của slave 2 về master- Xuất từ master ra slave 1
 Bài Tập 3:
Điều khiển bóng đèn sáng ở slave 1: 2s tắt 3s và lập lại chu kì.start/stop bóng đèn ở slave 2, đặt chu kì chớp tắt cho bóng đèn ở slave 2.

Bài tập 4:
Điều khiển động cơ bước quay thuận .start/stop bóng đèn ở slave 2, đặt vòng quay của motor ở slave 2. Đủ số vòng đặt trước thì dừng.Nhưng mọi hoạt động của slave 1 và slave 2 phải được cho phép từ master.

Làm được 2 bài này coi như đã xong về truyền thông profibus rồi !
Tuy nhiên đây chỉ là mạng của siemen với thiết bị EM277, còn rất nhiều các thiết bị khác nữa cũng có khả năng đó. Nhưng xét về bản chất cũng dựa trên các nguyên tắc truyền/nhận dữ liệu như đã đề cập.

                                                        Chúc các bạn thành công!

0 comments :

Post a Comment