.1 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 62)

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 tốn kiểm tra lỗi

Về q 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 toá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 tố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

BUSY 0: Gửi gần hoàn thành hoặc chưa bắt đầu

1: Gửi khơng hồn thành hoặc bận thực thi sự kiện khác

ERROR 0: Khơng lỗi

1: Có lỗi

STATUS Trạng thái q trình

Hình 4.13 Khối hàm TRCV_C có chức năng nhận dữ liệu

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.8 Bảng chức năng của hàm TRCV_C

Thông số Chức năng

EN_R Cho phép nhận

CONT 0: Không cho phép kết nối

1: Thiết lập, cho phép kết nối

LEN Kích thước dữ liệu gửi

0: Sử dụng khi được xác định địa chỉ để truy cập có sẵn

ADHOC Sử dụng cho TCP Protocol

CONNECT Trỏ vào địa chỉ kết nối

DATA Trỏ vào địa chỉ nhận

DONE 0: Chưa nhận

1: nhận hoàn thành

BUSY 0: nhận gần hoàn thành hoặc chưa bắt đầu

1: nhận khơng hồn thành hoặc bận thực thi sự kiện khác

ERROR 0: Không lỗi

1: Có lỗi

STATUS Trạng thái q trình

RCVD_LEN Tổng số dữ liệu nhận được theo kiểu byte

4.3.5 Xử lý tín hiệu Analog

Để mơ phỏng được sự cố sụt áp trên hệ thống điện, bắt buộc phải sử dụng tín hiệu analog để mơ phỏng tín hiệu sự cố sụt áp.

Việc xử lý tín hiệu Analog trên S7-1200 (xem Hình 4.15) được thực hiện bởi hai hàm chức năng NORM_X và SCALE_X.

Hình 4.15 Xử lí tín hiệu Analog đầu vào

Hàm NORM_X có tác dụng để bình thường các giá trị của biến đầu vào bằng ánh xạ của nó vào một hàm SCALE tuyến tính (xem Hình 4.16). Thơng số MIN, MAX được dùng để xác định giới hạn của dãy giá trị được quy định trong hàm SCALE. Kết quả

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.16 Biểu đồ thể hiện sự tuyến tính của giá trị đầu vào và đầu ra qua hàm NORM_X NORM_X

Hàm NORM_X làm việc theo công thức:

OUT = (VALUE-MIN)/(MAX-MIN) Bảng 4.9 Bảng thông số hàm NORM_X

Thông số Ngõ vào/ra Kiểu dữ liệu Vùng nhớ Chức năng

EN Input BOOL I, Q, M, D, L Cho phép ngõ

vào

ENO Output BOOL Cho phép ngõ

ra

MIN Input Integer,

floating - point numbers

I, Q, M, D, L, constant

Giới han MIN

VALUE Input Integer,

floating - point numbers I, Q, M, D, L, constant Giới hạn đầu vào

MAX Input Integer,

floating - point numbers I, Q, M, D, L, constant Giới hạn MAX

OUT Output floating - point

numbers

I, Q, M, D, L Kết quả

Bảng 4.9 (xem Bảng 4.9) là thông số cần phải thiết lập khi sử dụng hàm NORM_X đối với đề tài của nhóm, giá trị MIN, MAX được sử dụng là MIN = 0, MAX = 27648 (xem Hình 4.15).

Hàm SCALE có chức năng là để scale lại giá trị input bằng việc ánh xạ nó vào một giải bằng giá trị xác định. Hàm SCALE_X thực thi, giá trị chấm động được đưa tới dãi

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

giá trị định nghĩa bằng thông số MIN và MAX (xem Hình 4.17) do vậy giá trị OUT được đưa ra là một số thực interger.

Hình 4.17 Biểu đồ thể hiện giá trị đầu vào Value với giá trị MIN/MAX Hàm SCALE_X làm việc theo biểu thức: Hàm SCALE_X làm việc theo biểu thức:

OUT = [VALUE *(MAX-MIN)] + MIN

Khi sử dụng hàm SCALE_X bắt buộc phải thiết lập các thông số sau (xem Bảng 4.10):

Bảng 4.10 Bảng thông số của hàm SCALE_X

Thông số Ngõ vào/ra Kiểu dữ liệu Vùng nhớ Chức năng

EN Input BOOL I, Q, M, D, L Cho phép ngõ

vào

ENO Output BOOL Cho phép ngõ

ra

MIN Input Integer,

floating - point numbers

I, Q, M, D, L, constant

Giới han MIN

VALUE Input Integer,

floating - point numbers I, Q, M, D, L, constant Giới hạn đầu vào

MAX Input Integer,

floating - point numbers

I, Q, M, D, L,

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 62)

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

(105 trang)