Thứ Hai, 19 tháng 4, 2021

Phần mềm BMS (Phần 1) - Kiến trúc phần mềm

Phần mềm BMS là một phần không thể thiếu trong hệ thống BMS, cùng với các bộ điều khiển, các cảm biến và chấp hành. Với mỗi hãng, kiến trúc phần mềm sẽ được xây dựng khác nhau theo tư duy phát triển hệ thống của riêng họ. Tuy nhiên, một phần mềm BMS bao giờ cũng bao gồm các mô đun sau:

1. Các mô đun giao tiếp:

Hệ thống BMS được sinh ra để kết nối hầu hết các hệ thống trong tòa nhà. Mỗi hệ thống có chuẩn giao thức riêng như BACnet, Modbus, OPC... Do vậy, hệ thống BMS phải có khả năng giao tiếp được thông qua tất cả các chuẩn giao thức này và mô đun giao tiếp giúp thực hiện chức năng này. Thông thường các hãng hay gọi các mô đun giao tiếp của các chuẩn là "driver", cũng giống như một máy tính PC thì cần các driver để kết nối các thiết bị ngoại vi như chuột, bàn phím, màn hình, card đồ họa...

2. Mô đun cơ sở dữ liệu:

Hệ thống BMS được cấu hình vô cùng phức tạp, do đó, nó phải có một cơ sở dữ liệu được xây dựng riêng để quản lý cấu hình hệ thống. Tuy nhiên, sẽ rất khó cho các kỹ sư tự động hóa, nếu phải thao tác trực tiếp lên các cơ sở dữ liệu đó (SQL, MySQL...) và cũng sẽ rất dễ gây ra lỗi hệ thống. Do vậy, hệ thống BMS phải cung cấp một phần mềm cấu hình cho hệ thống.

3. Mô đun lưu giữ lịch sử:

Dữ liệu lịch sử thường được lưu trữ phục vụ việc phân tích đánh giá hệ thống. Mô đun này có thể được tích hợp trên cùng một server hoặc có thể tách riêng ra một server phục vụ riêng việc lưu trữ.

4. Mô đun giao diện:

Để vận hành hệ thống BMS, không thể thiếu giao diện vận hành. Các giao diện thường được xây dựng bởi các công cụ tạo đồ họa thiết kế riêng cho phần mềm. Hiện nay, các giao diện thường hỗ trợ HTML5 và JAVA để có thể chạy được trên nhiều nền Web và nhiều hệ điều hành khác nhau.

5. Mô đun run-time:

Mô đun run-time sẽ làm nhiệm vụ liên kết các mô đun lại với nhau bởi mô đun run-time. Mô đun này thường được thiết kế dạng Service của Windows và được khởi động tự động cùng với Windows.

Ngoài các mô đun trên, phần mềm còn có các mô đun khác như báo cáo, tự động, lịch trình... phục vụ cho việc hoạt động của phần mềm.

Thứ Hai, 12 tháng 4, 2021

BMS và chuẩn truyền thông BACnet (Phần 6) - Hoạch định hệ thống như thế nào?

Hãy đọc kỹ bài này, nếu bạn muốn triển khai một hệ thống BMS lớn một cách suôn sẻ nhất!

Khi triển khai cho một dự án BMS, các kỹ sư thường chỉ quan tâm đến việc điều khiển chiller ra sao, điều khiển AHU như thế nào... (thực ra cách điều khiển các đối tượng là một phần vô cùng quan trọng, không thể thiếu 😛) Tuy nhiên, lời khuyên chân thành dành cho các bạn kỹ sư, đó là, hãy hoạch định hệ thống của các bạn một cách rõ ràng, trước khi các bạn tiến hành việc lập trình bất kỳ thiết bị nào. Việc hoạch định này cũng giống như một khu đô thị cần phải có quy hoạch đường phố, tổ chức đánh số nhà cho phù hợp rồi mới tiến đến xây cái nhà đẹp 😀. Ví dụ, thành phố Hà Nội, có rất nhiều ngõ ngách với địa chỉ nhà dùng tới cả chục cái xược /, nó cho thấy sự quy hoạch không được hợp lý, dẫn đến việc quản lý cũng trở nên khó khăn hơn.

Vậy, việc hoạch định hệ thống nên thực hiện như thế nào?

Trước tiên, cần phải chia hệ thống theo các khối chức năng (ví dụ khu Chiller, khu AHU...) hoặc theo khu vực về mặt địa lý (ví dụ tầng 1, tầng 2...) hoặc theo tủ (ví dụ DDC-F1, DDC-F2...) Việc này thông thường đã được thực hiện rất tốt bởi các đơn vị tư vấn thiết kế, khi triển khai thực tế chỉ cần điều chỉnh chút ít, hoặc thậm chí không cần điều chỉnh 😍. Với việc này, bạn có thể có một quy cách đặt tên thiết bị phù hợp nhất với từng dự án. Ví dụ: 

- Web8000-Chiller : Tên bộ điều khiển Web8000 của Honeywell quản lý hệ thống Chiller

- Web8000-Chiller-PUB-01-01: Tên bộ điều khiển PUB số 01, thuộc kênh MS/TP số 01 của bộ Web8000-Chiller.

Khi đặt tên như vậy, các bạn có thể xác định nhanh chóng vị trí, chức năng, kết nối logic của thiết bị trên hệ thống.

Bước tiếp theo, các bạn nên xây dựng một sơ đồ kết nối chi tiết về truyền thông của tất cả các bộ điều khiển (kể cả các thiết bị 3rd party kết nối vào hệ thống). Và trên đó, có gắn tên các thiết bị (như quy cách đã trình bày ở trên). Sơ đồ này giúp bạn có hình dung cực kỳ chi tiết về mặt hệ thống, hơn hẳn so với sơ đồ nguyên lý hệ thống của TVTK (thường chỉ vẽ đến tủ DDC).

Bước cuối cùng, và cũng là quan trọng nhất, là bước hoạch định địa chỉ cho các thiết bị BACnet có trong sơ đồ mạng này, để các bạn tạo thành sơ đồ kết nối đầy đủ thông tin nhất ✌💗 Và để biết cách định địa chỉ, chúng ta cần hiểu được các loại địa chỉ như sau:

1. Địa chỉ IP / Subnet Mask / Gateway: Địa chỉ này cần phối hợp với nhà thầu hệ thống mạng (trong trường hợp sử dụng hệ thống mạng chung trong gói mạng), trong trường hợp bạn cấp luôn thiết bị mạng, nên tổ chức nhóm IP riêng cho server, máy trạm, các gateway và các bộ điều khiển mạng.

2. Địa chỉ BACnet Instance: Mỗi thiết bị BACnet được phân biệt bởi một địa chỉ BACnet Instance độc nhất. Nếu hai thiết bị trùng địa chỉ này, có thể dẫn đến mất kết nối một trong hai thiết bị (nhẹ) hoặc lỗi toàn hệ thống (nặng). 

3. Địa chỉ BACnet MAC: Địa chỉ BACnet MAC dùng cho các thiết bị BACnet MS/TP. Các thiết bị có địa chỉ MAC từ 0-254, trong đó 0-127 dùng cho các thiết bị Master, 128-254 dùng cho các thiết bị chỉ chạy chế độ Slave. Địa chỉ MAC thường được chọn bởi các switch gạt địa chỉ (Giống như chọn địa chỉ thiết bị Modbus RTU)

4. Địa chỉ Network Number: Mỗi kênh truyền thông BACnet IP, BACnet MS/TP đều có địa chỉ Network Number riêng để phân biệt. Địa chỉ này giúp phân biệt địa chỉ vật lý các thiết bị, vì có thể có nhiều thiết bị có chung địa chỉ BACnet MAC.

Chi tiết cách hoạch định hệ thống sẽ được mô tả rõ hơn ở bài tiếp theo.

Thứ Bảy, 3 tháng 4, 2021

BMS và chuẩn truyền thông Modbus (Phần 1) - Sự đơn giản nhưng hiệu quả của một chuẩn truyền thông

 


Modbus là giao thức truyền thông được phát triển bởi Modicon (hiện nay là Schneider Electric) vào năm 1979, đầu tiên sử dụng cho các PLC của SE nhưng hiện nay Modbus đã trở thành một chuẩn mở và được sử dụng vô cùng rộng rãi trong các thiết bị điện công nghiệp.

Trong chuỗi bài về BACnet, mình có so sánh sức mạnh của BACnet và Modbus, đề cao sự phù hợp và khả năng của BACnet trong hệ thống BMS. Tuy nhiên, Modbus vẫn tồn tại song hành cùng với BACnet trong các hệ thống BMS và vẫn vô cùng phổ biến trong các hệ thống công nghiệp. Vậy, đâu là điểm mạnh và đâu là điểm yếu của chuẩn Modbus?

Điểm yếu đầu tiên của Modbus, đó là Modbus không hỗ trợ nhiều loại dữ liệu, chỉ bao gồm 4 loại là Coil, Discrete Input, Holding Register và Input Register. Và từ lúc ra đời đến nay, Modbus vẫn duy trì 4 loại dữ liệu này.

Điểm yếu thứ hai của Modbus, đó là Modbus không hỗ trợ các bản tin Unsolicited (các bạn xem bài https://easybms.blogspot.com/2021/03/bms-va-chuan-truyen-thong-bacnet-phan-3.html để hiểu về thuật ngữ này), khiến các các thiết bị tích hợp theo chuẩn Modbus thường không đạt tốc độ truyền thông mong muốn.

Điểm yếu thứ ba của Modbus, đó là Modbus không hỗ trợ tính năng tìm kiếm thiết bị cũng như mô tả các thanh ghi của thiết bị. Việc cấu hình các thiết bị Modbus với các kỹ sư mới vào nghề là vô cùng random 😂 Kể các với các kỹ sư đã tiếp xúc nhiều với Modbus, trong nhiều trường hợp vẫn gặp rất nhiều vất vả với chuẩn truyền thông này.

Vậy, tại sao Modbus vẫn được sử dụng vô cùng rộng rãi ở các thiết bị đo, tự động? Chúng ta vẫn gặp các bộ IO mô đun sử dụng Modbus, các bộ thermostat sử dụng Modbus, kể cả các cảm biến môi trường cũng rất hay hỗ trợ chuẩn này cùng với chuẩn HART?

Lý do phù hợp nhất theo mình, chính là sự "đơn giản" của Modbus!!! Nghĩa là chính các điểm yếu cũng là điểm mạnh của Modbus. Đứng trên vai trò của một nhà sản xuất, việc sử dụng chuẩn Modbus cho các thiết bị có thể được thực hiện vô cùng đơn giản. Chỉ cần khoảng vài trăm dòng lệnh MCU là bạn đã có thể mang chuẩn Modbus lên thiết bị của mình (Với BACnet thì là khoảng vài chục nghìn dòng lệnh!!!). Và như vậy, MCU cũng không cần quá mạnh, quá nhiều bộ nhớ, giảm được chi phí sản xuất vô cùng nhiều. Do đó, với các thiết bị nhỏ, theo các nhà sản xuất, sử dụng Modbus là đủ 😅 Và họ mặc cho các kỹ sư phải đánh vật với thiết bị của mình trong lần đầu tiên sử dụng.

Hi vọng với bài mở đầu này, các bạn kỹ sư sẽ giảm bớt sự ức chế của mình với chuẩn Modbus, hãy sống chung với nó vì nó còn lâu mới biến mất khỏi hệ thống BMS 😂

------------------------------------------------------------

Liên hệ với tác giả:

Nguyễn Tuấn Minh

Điện thoại: 0983504018

Email: minhnt152@gmail.com

Nhóm Easy BMS - Easy Integration


BMS và chuẩn truyền thông BACnet (Phần 5) - Data Sharing

Data Sharing

Data Sharing là một trong những tính năng quan trọng nhất của các chuẩn truyền thông trong một hệ thống BMS, vậy, tại sao nó lại cần thiết đến vậy? 😮😮😮
Hãy thử tưởng tượng, với hệ thống cung cấp nước sinh hoạt cho một tòa văn phòng cao 30 tầng, hệ thống bể nước mái ở độ cao 100m, hệ thống bể ngầm và bơm nước sinh hoạt đặt ở tầng hầm. Để điều khiển hệ thống bơm, ta cần phối hợp giữa tín hiệu báo mức ở bể ngầm, ở bể mái và tín hiệu điều khiển và giám sát bơm. Với hệ thống bình thường, ta dây tín hiệu dài cả trăm mét từ tầng mái về tầng hầm, gây sự lãng phí về dây và nhân công.
Điều khiển bơm nước lên bể mái sử dụng phao
BACnet có thể giải quyết việc này rất đơn giản, chỉ bằng cách chia sẻ dữ liệu giữa bộ điều khiển đặt ở tầng hầm và tầng mái. Bộ điều khiển đặt ở tầng mái sẽ giám sát mức nước bể mái, và truyền dữ liệu về mức nước đến bộ điều khiển đặt ở tầng hầm chỉ thông qua một đường kết nối truyền thông duy nhất. Dựa vào thông tin này, bộ điều khiển ở tầng hầm sẽ điều khiển bật và tắt bơm nước. 👏👏👏
Với truyền thông IP, các bộ điều khiển BACnet thậm chí chia sẻ dữ liệu gần như tức thì 😍 với số lượng lớn thiết bị (không chỉ là 1-1). Với hệ thống lớn, việc này có thể giúp các kỹ sư thực hiện các thuật toán điều khiển một cách linh hoạt hơn, với nhiều thông tin hơn từ hệ thống.
Demo chia sẻ dữ liệu giữa nhiều thiết bị DDC
Các bộ điều khiển hỗ trợ chuẩn Modbus cũng có thể thực hiện việc chia sẻ dữ liệu, nhưng phải thực hiện thông qua một thiết bị trung gian, có thể là bộ điều khiển cấp trường, hoặc server hệ thống BMS. Còn với các bộ điều khiển BACnet, việc này được thực hiện trực tiếp giữa các bộ điều khiển với nhau. Do vậy, kể cả khi server bị mất kết nối, việc liên động vẫn có thể xảy ra.

Cơ chế trao đổi dữ liệu
Về bản chất, việc trao đổi dữ liệu đơn thuần là cập nhật giá trị Present Value của đối tượng nguồn (Thiết bị B) vào giá trị Present Value (thực tế là Priority Array) của đối tượng đích (Thiết bị A). Việc trao đổi dữ liệu này thực hiện theo 3 cách sau:
Cách 1: Thiết bị A đọc dữ giá trị Present Value của đối tượng nguồn thuộc thiết bị B theo chu kỳ thời gian. Ví dụ, 5s một lần, A gửi lệnh ReadProperty để đọc trạng thái mức nước ở B.
Cách 2: Thiết bị A thiết lập chế độ COV đối với đối tượng nguồn thuộc thiết bị B, khi đó, nếu giá trị nguồn có sự thay đổi, B sẽ cập nhật thông tin cho A. Ví dụ, khi mức nước đầy, B sẽ thông báo cho A (COVNotification) về mức nước một cách tự động.
Cách 3: Thiết bị B ghi giá trị Present Value của đối tượng nguồn (WriteProperty) vào giá trị Present Value của đối tượng đích.
Thông thường, để giảm tải cho đường truyền, các thiết bị thường sử dụng cách 2 (dùng nhiều nhất) và cách 3. Cách 1 ít được dùng, trừ khi thiết bị nguồn không hỗ trợ cách 2 và 3.
--------------------------------------------------------
Liên hệ với tác giả:
Nguyễn Tuấn Minh
Điện thoại: 0983504018
Email: minhnt152@gmail.com
Nhóm Easy BMS - Easy Integration

Phần mềm BMS (Phần 1) - Kiến trúc phần mềm

Phần mềm BMS là một phần không thể thiếu trong hệ thống BMS, cùng với các bộ điều khiển, các cảm biến và chấp hành. Với mỗi hãng, kiến trúc ...