Lưu đồ thuật toán trên PLC Server

Một phần của tài liệu (Đồ án tốt nghiệp) GIÁM sát điện NĂNG TIÊU THỤ TOÀ NHÀ sử DỤNG TRUYỀN THÔNG MODBUS TCPIP (Trang 60)

Chương 4 : LẬP TRÌNH HỆ THỐNG

4.2 Lưu đồ thuật toán hệ thống

4.2.1.1 Lưu đồ thuật toán trên PLC Server

Hệ thống giám sát điện năng mà nhóm xây dựng gồm có hai chức năng chính đó là ghi dữ liệu (send data) và nhận dữ liệu (receive data), có thể thấy ở hình 4.1 (xem Hình 4.1).

Để xác định được PLC Server sẽ thực hiện q trình nào, thì bắt buộc phải có một phương pháp định danh được từng q trình. Trong chương trình, nhóm sử dụng định danh bằng cách thực hiện gán giá trị, thực hiện nhận dữ liệu khi đóng xung cạnh lên clock 0.5ms và thực hiện gửi dữ liệu khi clock 0.5ms cạnh xuống đóng.

Đối với q trình nhận dữ liệu:

- PLC Server khởi tạo hàm nhận dữ liệu TRCV_C và vùng nhớ phục vụ cho quá trình lưu dữ liệu khi nhận;

- Để phân biệt được PLC Client nào gửi dữ liệu lên, thì PLC Server bắt buộc phải tiến hành kiểm tra lớp thứ 4 của địa chỉ IP (IP_OCTET_4). Mỗi PLC Client được gán cho một địa chỉ IP duy nhất, nó được xem như cách định danh nó với nhiều PLC Client khác nhau. Ở đây nhóm sử dụng các kiểm tra lớp thứ 4 với điều kiện IP_OCTET_4 = 5 có thể thấy rõ ở điều kiện 2 nhánh nhận dữ liệu hình 4.1 (xem Hình 4.1) vì địa chỉ IP của PLC Client 1 là 192.168.0.5 và PLC Client 2 là 192.168.0.4;

- Sau khi xác định được PLC Client thực hiện yêu cầu gửi dữ liệu thì PLC Server phản hồi cho phép ghi xuống PLC Client bằng cách đưa chân Connect lên 1;

- Tiếp theo, PLC Server tiến hành kiểm tra địa chỉ ghi dữ liệu nếu địa chỉ đúng với địa chỉ đã thiết lập trước thì quá trình nhận dữ liệu diễn ra nếu sai quá trình kiểm tra được thực hiện lặp lại cho đến khi thỏa mãn địa chỉ quy định;

- Để xác nhận nhận thành công dữ liệu hay chưa, PLC Server sẽ kiểm tra kích thước dữ liệu nhận được từng vùng nhớ trong data block. Tại data block đó, PLC sẽ

Giám sát điện năng tiêu thụ tồ nhà sử dụng truyền thơng Modbus TCP/IP

nếu kích thước bằng với kích thước vùng dữ liệu trỏ vào thì q trình tiếp nhận dữ liệu thành cơng, cịn nếu khơng bằng thì q trình nhận dữ liệu vẫn được diễn ra tiếp tục cho đến khi nào dữ liệu điền vào đầy đủ các vùng nhớ của datablock có thể nói địa chỉ cuối của vùng nhớ DB8 khác 0 thì q trình nhận hồn thành;

- Cuối cùng là phản hồi thành cơng;

- Q trình nhận dữ liệu từ hai PLC Client đều giống nhau vì vậy nhóm chỉ giải thích một nhánh của PLC Client 1.

Q trình gửi dữ liệu:

- Ta có thể thấy ở hình 4.1 (xem Hình 4.1) khi xung cạnh xuống clock 0.5s đóng thì q trình gửi/truyền dữ liệu xuống PLC Client diễn ra;

- Trước tiên hàm ghi dữ liệu được khởi tạo TSEND_C (Xem Hình 4.11);

- Sau khi khởi tạo thành công hàm gửi, PLC Server cập nhật lại dữ liệu gửi đi hay có thể nói là chuẩn bị gói tin;

- Tiếp theo PLC Server tiến hành kiểm tra PLC Client nhận dữ liệu bằng cách kiểm tra lớp thứ 4 IP_OCTET_4. Nếu IP_OCTET_4 = 4 thì quá trình ghi dữ liệu được thực hiện trên PLC Client 2 cịn nếu sai thì thực hiện trên PLC Client 1;

- Sau khi xác định được PLC nào nhận dữ liệu, PLC Server gửi yêu cầu xác nhận yêu cầu ghi dữ liệu cho PLC Client;

- Nếu PLC Client phản hồi chấp nhận nhận dữ liệu thì quá trình ghi dữ liệu diễn ra;

- Sau khi nhận được dữ liệu, PLC Client tiến hành thực thi yêu cầu từ PLC Server như điều khiển các cơ cấu chấp hành phía sau;

Giám sát điện năng tiêu thụ tồ nhà sử dụng truyền thơng Modbus TCP/IP

Giám sát điện năng tiêu thụ tồ nhà sử dụng truyền thơng Modbus TCP/IP 4.2.1.2 Lưu đồ thuật toán trên PLC Client

Hình 4.2 Lưu đồ tht tốn trên trạm Client

Hình 4.2 là lưu đồ thuật tốn trên mỗi trạm client. Mỗi trạm client thực hiện 3 chức năng chính:

- Đọc dữ liệu từ Arduino; - Gửi dữ liệu lên PLC Server;

- Nhận dữ liệu từ PLC Server điều khiển cơ cấu chấp hành.

Ban đầu, PLC Client khởi tạo hàm truyền thơng Modbus, hàm này có chức năng thiết lập kết nối giữa PLC với Arduino thông qua địa chỉ IP.

Sau khi thiết lập thành công, PLC Client tiến hành nhận dữ liệu từ Arduino. Dữ liệu nhận từ Arduino sẽ được đưa qua chương trình con kiểm tra lỗi (xem Hình 4.5).

Giám sát điện năng tiêu thụ toà nhà sử dụng truyền thơng Modbus TCP/IP

Sau khi chạy chương trình con kiểm tra lỗi hồn thành. PLC Client xác nhận có yêu cầu nhận từ PLC Server hay khơng. Nếu có, quá trình nhận dữ liệu được ưu tiên thực hiện trước, cịn nếu khơng có u cầu nhận thì q trình ghi dữ liệu lên PLC Server diễn ra tránh bị trì hỗn dữ liệu.

4.2.1.3 Lưu đồ thuật tốn chương trình con gửi dữ liệu từ PLC Client lên PLC Server

Chương trình con quá trình gửi dữ liệu (xem Hình 4.4) bắt buộc PLC Client phải kết nối được với PLC Server thông qua địa chỉ IP thiết lập sẵn ngay trên hàm TSEND_C (xem Hình 4.12). Sau khi kết nối được với PLC Server, thì dữ liệu có sẵn được ghi vào địa chỉ quy định. Sau khi ghi xong quá trình gửi được diễn ra.

4.2.1.4 Lưu đồ thuật tốn chương trình con nhận dữ liệu từ PLC Server

Chương trình con quá trình nhận dữ liệu (Xem Hình 4.13) khi có dữ liệu đến từ PLC Client tiến hành đọc địa chỉ. Sau khi đọc địa chỉ xong, bắt đầu kiểm tra kích thước dữ liệu nếu kích thước dữ liệu bằng với kích thước địa chỉ lưu trữ thì q trình đọc dữ liệu diễn ra.

4.2.1.5 Lưu đồ thuật toán kiểm tra lỗi

Về quá trình kiểm tra và cảnh báo lỗi, nhóm chúng tơi thực hiện trên hai trạm Client chính vì vậy lưu đồ thuật tốn trên hai trạm cũng giống nhau (xem Hình 4.5)

Đồ án này, nhóm thực hiện mơ phỏng hai sự cố hay xảy ra trên PLC Client đó là sự cố sụt áp và sự cố quá công suất.

Khi M0.0 = 1, thì sự cố sụt áp xảy ra. Đầu tiên, PLC Server khởi tạo biến nhớ và khởi tạo hàm analog đọc tín hiệu điện áp được mơ phỏng trên từng trạm Client. Khi đọc được giá trị analog thì ta có được giá trị điện áp hiện tại (U_ht).

Tiếp theo, chương trình thực hiện so sánh giá trị điện áp hiện tại với giá trị điện áp cho phép (U_cp). Nếu U_ht < U_cp thì sự cố sụt áp xảy ra. Ngay lúc đó, các đèn cảnh báo trạng thái lỗi được bật, sự cố sẽ được gửi đến màn hình giám sát SCADA.

Khi M0.0 = 0 thì trong q trình nhận dữ liệu, giá trị cơng suất nằm trong DataBlock có tên là Data Final được lấy lên lưu vào vùng nhớ riêng. Giá trị cơng suất đó gọi là P_ht

Giám sát điện năng tiêu thụ tồ nhà sử dụng truyền thơng Modbus TCP/IP

Hình 4.5 Lưu đồ thuật tốn kiểm tra và cảnh báo lỗi Hình 4.3 Lưu đồ thuật tốn nhận dữ liệu

từ PLC Server

Hình 4.4 Lưu đồ thuật tốn gửi dữ liệu xuống PLC Server xuống PLC Server

Giám sát điện năng tiêu thụ tồ nhà sử dụng truyền thơng Modbus TCP/IP

Chương trình sẽ thực hiện quá trình so sánh giữ giá trị cơng suất hiện tại (P_ht) với giá trị công suất tối đa cho phép (P_cp). Nếu P_ht > P_cp thì hệ thống đèn báo q cơng suất được bật và sự cố được gữi về màn hình giám sát.

Trong quá trình cả hai sự cố xảy ra, mọi thông tin trạng thái đều được gửi về PLC Server và lưu trữ lại.

4.2.1.6 Lưu đồ thuật tốn trên Arduino

Hình 4.6 Lưu đồ thuật toán trên Arduino

Arduino thực hiện hai chức năng chính đó là đọc dữ liệu từ cảm biến và gửi dữ liệu đọc được lên PLC Client. Hai chức năng đó là hai chương trình con trong lưu đồ thuật tốn (xem Hình 4.6) cụ thể từng quá trình (xem Hình 4.7) và (xem Hình 4.8).

Theo lưu đồ thuật toán, đầu tiên, khởi tạo các biến, mảng lưu trữ, phục vụ cho từ chức năng chính cụ thể ở đây là các chương trình con.

Arduino đọc dữ liệu từ cảm biến, sau khi có dữ liệu, q trình kiểm tra kích thước dữ liệu diễn ra, nếu kích thước phù hợp với kích thước vùng nhớ cấp sẵn thì quá trình gửi dữ liệu lên PLC Client được tiến hành cịn nếu kích thước quá lớn thì Arduino sẽ lấy lại dữ liệu cho đến khi kích thước phù hợp với vùng nhớ quy định.

Giám sát điện năng tiêu thụ toà nhà sử dụng truyền thông Modbus TCP/IP

Nếu khi phản hồi khơng thành cơng thì q trình lại quay trở lại khởi tạo các biến và tiếp tục quá trình cho đến khi có thể truy cập được dữ liệu.

Các Holding register là các vùng nhớ có địa chỉ được khởi tạo sẵn. Mục đích của các thanh ghi này là lưu trữ dữ liệu đích đọc từ cảm biến, sẵn sàng cho truyền thông Modbus TCP/IP.

Đối với việc gửi dữ liệu từ Arduino lên PLC Client ở từng trạm, nhóm sử dụng chuẩn truyền thơng Modbus TCP/IP. Đầu tiên, khởi tạo địa chỉ MAC và IP trên IDE để định địa chỉ cho Arduino. Khi khởi tạo thành công, hàm mb.config(MAC,IP) được thiết lập. Hàm này được xem như là địa chỉ giúp định danh các trạm với nhau từ đó khơng bị nhầm khi mở rộng nhiều trạm giám sát.

Khi khởi tạo được địa chỉ Modbus, Arduino sẽ tiếp tục xử lý chạy một request mb.task() (xem Hình 4.9). Hàm request này với mục đích là gửi tín hiệu yêu cầu cho phép truyền từ Arduino lên PLC với địa chỉ đã định sẵn và nhận ngược lại phản hồi chấp nhận từ PLC.

Sau khi chạy hàm Request thành cơng, q trình gửi đảm bảo, thì lúc đó các Pointer được gán dữ liệu khi đọc dữ liệu từ module cảm biến dòng sẽ move dữ liệu sang các Holding Register sẵn sàng dữ liệu cho phép gửi lên PLC.

Giám sát điện năng tiêu thụ toà nhà sử dụng truyền thông Modbus TCP/IP

Hình 4.8 Lưu đồ thuật tốn gửi dữ liệu lên PLC Client lên PLC Client

Hình 4.9 Lưu đồ thuật tốn hàm MB.task()

Hàm request có một chức năng rất quan trọng, mục đích của hàm này là tạo kết nối Modbus TCP/IP và duy trì kết nối khi kết nối được khởi tạo.

Từ lưu đồ thuật tốn chạy hàm request (xem Hình 4.9). Ban đầu, chương trình bắt đầu thực hiện kiểm tra kết nối nếu đã kết nối truyền thông giữa Arduino với PLC Client là Modbus TCP/IP đã được khởi tạo thì kết nối vẫn được duy trì và quá trình gửi dữ liệu lên PLC Client sẵn sàng, cịn nếu chưa có khởi tạo kết nối thì chương trình sẽ chạy kết nối lần đầu bằng cách khởi tạo truyền thơng Modbus TCP/IP. Sau khi đã có kết nối lần đầu thì quá trình gữi dữ liệu sẽ được duy trì mà khơng cần phải chạy lại q trình kiểm tra kết nối.

Giám sát điện năng tiêu thụ tồ nhà sử dụng truyền thơng Modbus TCP/IP

4.3 Chương trình điều khiển

4.3.1 Arduino đọc tín hiệu từ module cảm biến dịng PZEM 004T

Chương trình điều khiển đọc tín hiệu từ cảm biến dịng bằng Arduino được viết trên phần mềm Arduino IDE. Việc giao tiếp với module cảm biến này được thể hiện rõ ở hình 4.7 là lưu đồ thuật toán đọc giá trị cảm biến (xem Hình 4.7) và bảng 4.1 (xem Bảng 4.1) là sơ đồ nối dây.

Một trong những lưu ý khi giao tiếp với module này là phải truy xuất đúng địa chỉ của từng giá trị của thơng số. Mỗi thơng số được mà hóa theo kiểu Hex (mã thập lục phân) nên khi chuyển đổi sang kiểu dữ liệu số thực thì phải xử lý cẩn thận.

4.3.2 Chương trình giao tiếp với module ethernet ENJ28J60

Đối với việc giao tiếp với Module Ethernet thì điều quan nhất là việc phải thiết lập được địa chỉ IP cho nó.

Việc sử dụng Modbus TCP/IP vì nó sử dụng truyền thông qua mạng TCP/ IP trên bộ điều khiển công nghiệp, kết nối qua cổng 502 (Local Port). Vì các lớp thấp hơn đã cung cấp bảo vệ tổng kiểm tra nên nó khơng u cầu tính tốn tổng kiểm tra. Hơn nữa sử dụng trên nền tảng TCP/IP giúp tận dụng được cơ sở hạ tầng có sẵn hiện nay như router mạng ethernet, cổng giao tiếp RJ45…

Hình 3.17 (xem Hình 3.17) là cách thiết lập địa chỉ IP trên Arduino giúp nó định danh với các trạm khác nhau trong hệ thống.

4.3.3 Chương trình giao tiếp PLC Client với Arduino

Để giao tiếp giữa PLC với Arduino, chúng tôi sử dụng chuẩn giao Modbus TCP/IP do vậy việc giao tiếp bắt buộc phải sử dụng hàm MB_Client (xem Hình 4.10), các thơng số phải thiết lập khi sử dụng hàm Modbus TCP/IP (xem Bảng 4.6).

Giám sát điện năng tiêu thụ tồ nhà sử dụng truyền thơng Modbus TCP/IP

Bảng 4.6 Bảng chức năng các đầu vào/đầu ra trên hàm MB_CLIENT

Thông số Khai báo Kiểu Dữ Liệu Chức năng

REQ Input Bool Yêu cầu cho phép truyền thông

Modbus TCP/IP

DISCONNECT Input Bool 0: Thiết lập kết nối với IP

Address và ID Port 1: Ngừng giao tiếp

CONNECT_ID Input Uint ID riêng biệt để xác định kết nối

IP_OCTET_1 Input USint Địa chỉ IP lớp 1

IP_OCTET_2 Input USint Địa chỉ IP lớp 2

IP_OCTET_3 Input USint Địa chỉ IP lớp 3

IP_OCTET_4 Input USint Địa chỉ IP lớp 4

IP_PORT Input Uint IP Port để thiết lập giao tiếp sử

dụng TCP/IP Protocol

MB_MODE Input USint Lựa chọn chế độ làm việc (đọc,

ghi, chẩn đoán)

MB_DATA_ADDR Input UDint Địa chỉ bắt đầu để truy cập dữ

liệu bởi Mb_Client

DATA_LEN Input USint

MB_DATA_PTR InOut Variant Con trỏ chỉ địa chỉ thanh ghi

Modbus.

DONE Output Bool 1: Gửi hồn thành mà khơng lỗi

BUSY Output Bool 0: Khơng có MB_Client hoạt

động

1: MN_Client hoạt động

ERROR Output Bool 0: Không lỗi

Giám sát điện năng tiêu thụ tồ nhà sử dụng truyền thơng Modbus TCP/IP

STATUS Output Word Trạng thái của quá trình giao

tiếp (Error code). Một số code:

0000: Khởi tạo thành công không lỗi

7000: Không tiếp nhận

(REQ=0)

7002: Sẵn sàng giao tiếp 7006: Nhận dữ liệu thành cơng

4.3.4 Chương trình giao tiếp giữa PLC Server và PLC Client

Việc giao tiếp với 2 hay nhiều PLC với nhau, tận dụng cổng giao tiếp LAN có sẽ trên PLC để giao tiếp sẽ rất tiện lợi. Để có thể ghi dữ liệu và nhận dữ liệu từ PLC Client bắt buộc phải sử dụng hai hàm chức năng: TSEND_C (xem Hình 4.11)và TRCV_C (xem Hình 4.13).

Một trong những lưu ý quan trọng trong việc sử dụng hai khối TSEND_C và TRCV_C làm cơ sở cho truyền thông nhận/gửi giữ hai hay nhiều PLC với nhau thì bắt buộc phải xác định rõ được PLC nào là đối tác của mình (Local hay Partner) và các thiết lập phù hợp ở trên từng thiết bị tại tab Connection Parameter như hình thiết lập trên hàm TSEND_C, TRCV_C (xem Hình 4.12) và (xem Hình 4.14):

- End Point: Xác định rõ PLC nào gửi và PLC nào nhận để q trình thiết lập khơng bị nhầm.

- Interface: Lựa chọn giao thức Profinet PN\LAN;

- Address: Bắt buộc các PLC giao tiếp phải cùng lớp thứ 4; - Connection Type: TCP;

- Connection ID: Phải sử dụng hai ID khác nhau để phân biệt Local và Partner; - Connection Data: Lựa chọn đúng nơi nhận/gửi dữ liệu;

- Partner Port/Local Port: Phải đặt phân biệt nhau, mỗi thiết bị phải một Port nhất định.

Giám sát điện năng tiêu thụ tồ nhà sử dụng truyền thơng Modbus TCP/IP

Hình 4.11 Khối hàm TSEND_C có chức năng gửi dữ liệu

Hình 4.12 Thiết lập địa chỉ, con trỏ dữ liệu trên hàm TSEND_C

Bảng 4.7 Bảng chức năng của hàm TSEND_C

Thông số Chức năng

REQ Bắt đầu gửi với xung cạnh lên

CONT 0: Ngừng giao tiếp

1: Thiết lập và duy trì giao tiếp

LEN 0: Nếu có vùng nhớ cụ thể

CONNECT Trỏ tới đối tượng kết nối

DATA Trỏ tới vùng nhớ bao gồm địa chỉ và kích thước dữ liệu

DONE 0: Không thực hiện

Giám sát điện năng tiêu thụ tồ nhà sử dụng truyền thơng Modbus TCP/IP

Một phần của tài liệu (Đồ án tốt nghiệp) GIÁM sát điện NĂNG TIÊU THỤ TOÀ NHÀ sử DỤNG TRUYỀN THÔNG MODBUS TCPIP (Trang 60)

Tải bản đầy đủ (PDF)

(105 trang)