• Nenhum resultado encontrado

Thực hiện mô phỏng

Chương IV: MÔ PHỎNG HOẠT ĐỘNG ĐỊNH TUYẾN TRONG WSN

4.2. Thực hiện mô phỏng

Lý do chính để chọn OMNET + + để mô phỏng này là nó cho phép vị trí của các module nằm ở bất kỳ nơi nào. Đây cũng là lý do tại sao chúng ta có thể mô phỏng các

trong WSN

vị trí ngẫu nhiên của một mạng cảm biến cũng như xây dựng các đối tượng chuyển động.

Mô hình : các node trong mạng được phân bố vị trí một cách ngẫu nhiên và giả sử các node cảm biến không di động.

Các thuật toán của 2 giao thức đều thể hiện ở các nút. Mô hình một nút cảm biến được minh họa như hình dưới đây:

a. Đầy đủ

b. Rút gọn

Hình 4.5. Mô hình mô phỏng nút cảm biến

Module lớp vật lý (Phy): đại diện cho lớp vật lý của một nút cảm biến, có trách

nhiệm tạo kết nối giữa nút đó và các nút hàng xóm của nó, và chuyển tiếp bản tin từ lớp cao hơn tới hàng xóm của nó và ngược lại.

Module ứng dụng (App): đại diện cho lớp ứng dụng. Chú ý rằng, cứ sau khi truyền

trong WSN

năng lượng (thông qua module điều phối) để cho phép các module giảm năng lượng của một số đơn vị năng lượng.

Module điều phối (Coordinator): là giao diện để kết nối tất cả các module lại với

nhau. Nó phân loại một bản tin đến để chuyển nó tới đúng module. Ví dụ, khi nhận một bản tin DECREASE_ENERGY nó sẽ chuyển bản tin tới module năng lượng.

Module cảm biến (sensor): đại diện cho một bảng cảm biến trong một nút. Nếu

thông số SENSOR_SWITCH là ON (= 1), các module tiêu thụ năng lượng, vì vậy, sau một khoảng thời gian (timer), module sẽ gửi một tin nhắn

DECREASE_ENERGY đến module năng lượng (thông qua module điều phối). Khi mỗi lần định thời, thời gian chờ sẽ bị giảm xuống. Các bộ đếm thời gian chờ đợi được thiết lập bởi tin nhắn SENSOR_REFRESH từ các module ứng dụng. Nếu bộ đếm thời gian chờ bằng 0, module sẽ tắt (tham số SENSOR_SWITCH được thiết lập về 0).

Module vô tuyến (radio): cho bảng vô tuyến của một nút. Các module Radio đại

diện cho Ban phát thanh ở một nút cảm biến. Nếu tham số RADIO_SWITCH là ON (= 1), các module tiêu thụ năng lượng, vì vậy, sau một khoảng thời gian (timer), module sẽ gửi một tin nhắn DECREASE_ENERGY đến module năng lượng (thông qua module điều phối).

Module năng lượng (energy): đại diện cho nguồn năng lượng (pin) của một nút

cảm biến. Nếu module nhận một bản tin DECREASE_ENERY nó sẽ giảm mức một số đơn vị năng lượng.

Với mục đích mô phỏng hoạt động định tuyến của giao thức, trong mô phỏng dưới đây sử dụng mô hình node rút gọn chỉ bao gồm module ứng dụng (App) và module năng lượng (Ene)

4.2.1. LEACH

Quá trình mô phỏng bao gồm 4 bước:

+ Bước 1: Khởi tạo mạng và chọn node chủ (CH) + Bước 2: Mời các node vào nhóm

+ Bước 3: Phân chia khe thời gian TDMA + Bước 4: Truyền dữ liệu.

4.2.1.1. Khởi tạo mạng và chọn CH

Ban đầu, mỗi node sẽ quyết định có hay không trở thành cluster-head cho vòng hiện tại bằng cách tính giá trị ngưỡng TN, nếu T[i] > TN node sẽ trở thành node chủ

trong WSN

Các node chủ sẽ broadcast bản tin INVITATION để mời các node vào nhóm. Các node còn lại khi nhận được bản tin này sẽ tính toán khoảng cách từ nó đến node chủ (CH), nếu như nằm trong vùng phủ của CH nó sẽ đồng ý vào nhóm và gửi trả bản tin

JOIN_CLUSTER

4.2.1.3. Phân chia khe thời gian TDMA

Các CH sau khi nhận được bản tin JOIN_CLUSTER từ các node sẽ cấp phát khe thời gian để tập hợp dữ liệu bằng bản tin TDMA_SCHEDULE

4.2.1.4. Truyền dữ liệu

Các node con trong cụm truyền dữ liệu về node chủ theo khe thời gian đã được cấp phát qua gói DATA.

Kết quả mô phỏng LEACH nhận được như hình 4.6:

a.Khởi tạo mạng và chọn CH b.Mời các node vào nhóm

trong WSN

c. Phân chia khe thời gian TDMA d. Truyền dữ liệu

Hình 4.6. Chọn node chủ và thu thập dữ liệu bằng LEACH

4.2.2. PEGASIS

Quá trình mô phỏng bao gồm 4 bước:

+ Bước 1: Tìm node xa trạm BS nhất + Bước 2: Tạo chuỗi

+ Bước 3: Chọn node chủ

+ Bước 4: Truyền dữ liệu và xử lý lỗi khi node chết

4.2.2.1. Tìm node xa nhất

Ban đầu BS sẽ phát đi bản tin INI_NETWORK để thông báo bắt đầu xây dựng mạng. Các node nhận được bản tin sẽ tính toán khoảng cách đến BS và sau đó reply lại bằng bản tin REPLY_ INI.

Sau khi nhận được bản tin reply, BS sẽ so sánh các giá trị và tìm ra được MaxDistance - ứng với node xa nhất so với nó.

4.2.2.2. Thiết lập chuỗi

BS sẽ gửi bản tin MAX_DISTANCE cho node xa nhất thông báo nó sẽ trở thành node gốc của chuỗi và chuỗi bắt đầu được sinh từ đây.

Node gốc sẽ bắt đầu tìm node khác gần nó nhất và cho vào chuỗi bằng bản tin

FIND_NODE .Các node xung quanh nhận được bản tin này và gửi bản tin đáp trả lại

REPLY_FIND. Node gốc căn cứ vào các giá trị distance trong các bản tin để lựa chọn ra node gần mình nhất có địa chỉ MinAddr và khoảng cách Min.

Sau đó node gốc gửi các bản tin INVITATION mời chúng vào chuỗi. Node gần nhất đồng ý với bản tin JOIN_CHAIN. Cứ như vậy, sau khi một node vào chuỗi thì nó sẽ lại tiếp tục mời gọi các node còn lại vào chuỗi, trong suốt quá trình này, node mới vào sẽ đóng vai trò như node gốc – một “node gốc tạm thời”.

trong WSN

Hình 4.7. Tạo chuỗi và chọn node chủ trong PEGASIS

Sau khi tất cả các node đều đã vào chuỗi (khi “node gốc tạm thời” không còn nhận được bản tin JOIN_CHAIN nào nữa sau khi request), nó sẽ gửi bản tin

CHOSING_HEADER đến cho trạm BS. BS sẽ bắt đầu khởi tạo quá trình chọn node chủ bằng cách gửi đến node gốc của chuỗi.

4.2.2.3. Chọn node chủ

Node xa nhất bắt đầu tính toán tỉ lệ: Ratio=curPower/distance và cho vào bản tin truyền dọc theo chuỗi. Tại các node: khi nhận được bản tin cũng tính toán giá trị này và sau đó so sánh giá trị Ratio của nó và của bản tin nhận được.

+ Nếu nhỏ hơn nó đơn giản sẽ forward đi

+ Nếu nhỏ hơn nó sẽ thay thế bằng Ratio của mình và lại truyền đi.

Node có giá trị Ratio cao nhất sẽ được chọn làm node chủ. Node chủ sẽ thông báo cho các node khác biết nó là node chủ cùng với vị trí của nó.

trong WSN

Begin Nhận bản tin DR=0 n==N-1 Index==0 R[i]>RT RT=R[i] H=i

Forward Bản tin Xóa bản tin

End Backward bản tin DR=1 Hnode=true Đ Đ Đ Đ S S S S getId()==H Đ S Hnode_id=H

Hình 4.8. Thuật toán chọn node chủ chạy trong từng node

4.2.2.4. Truyền dữ liệu và xử lý lỗi khi một node chết

Node chủ bắt đầu gửi bản tin TOKEN đến node gốc chuỗi để bắt đầu một vòng truyền dữ liệu, sau đó như thuật toán đã nêu ở trên, các node sẽ lần lượt tích hợp dữ liệu của nó và truyền đến node chủ.

Sau đó node chủ sẽ tập hợp dữ liệu của nó và hai bản tin từ hai phía truyền về và truyền đến Sink. Tại các node mỗi khi nhận được bản tin sẽ tính toán năng lượng nhận và truyền.

trong WSN

Begin Nhận TOKEN getId()==Hnode_id End getId()==(0 OR N-1) Kết hợp vởi dữ liệu của nó và gửi về sink Đủ vòng

Backward TOKEN Flag=1

Forward TOKEN Flag==0

Ghi dữ liệu vào TOKEN

Đ S S S Đ Đ Đ S Flag=0

Hình 4.9. Thuật toán thu thập dữ liệu bằng TOKEN

Sau mỗi lần nhận gói tin, các node sẽ kiểm tra xem còn đủ năng lượng để truyền và nhận không? Nếu không đủ năng lượng thì nó sẽ không truyền gói đi và cũng sẽ không nhận gói tin. Lúc này node coi như là đã chết, các node khác dựa vào thời gian

timeout, không thấy node đó gửi dữ liệu đến sẽ thông báo đến node chủ để cập nhật lại chuỗi. Chuỗi mới sẽ bỏ qua node chết. Sau đó node chủ lại gửi TOKEN để bắt đầu thu thập dữ liệu.

Khi node chết, node chủ có nhiệm vụ gửi thông báo đến BS, BS đếm số node chết và sau đó BS đưa ra kết quả.

trong WSN

Documentos relacionados