Thứ Tư, 31 tháng 3, 2021

BMS và chuẩn truyền thông BACnet (Phần 4) - Present Value, Priority Array và Relinquish Default Value

Phần này khá dễ hiểu, tuy nhiên nhiều kỹ sư không để ý nên không biết!

Các kỹ sư khi mới làm quen với việc triển khai lập trình cho hệ thống BMS sẽ không hiểu nhiều về giá trị của các đối tượng (object) trong BACnet, cụ thể là các đối tượng có thể ghi giá trị như AO, AV, BO, BV...

Đầu tiên, ta hãy làm quen với thuộc tính (property) Present Value. Đúng với ý nghĩa của nó, thuộc tính Present Value chính là giá trị hiện tại của một đối tượng. Ví dụ: Nhiệt độ phòng đo được là 25 oC thì giá trị thuộc tính Present Value sẽ bằng 25. Nó là giá trị được thể hiện trên giao diện đồ họa BMS, và cũng là giá trị được sử dụng để tính toán và điều khiển ra phần cứng của DDC. 

Tuy nhiên, BACnet ngoài thuộc tính Present Value, còn có thêm thuộc tính Priority Array cho các đối tượng có thể ghi giá trị. Priority Array là một mảng 16 giá trị được đánh số thứ tự từ 1-16. 

Mảng này hoạt động như sau:
Để xác định giá trị của Present Value, thiết bị sẽ tìm kiếm giá trị trong mảng Priority Array từ 1-16. Nếu phần tử nào có giá trị (# null) thì thiết bị sẽ đẩy giá trị đó ra thuộc tính Present Value. 
Ví dụ: Nếu mảng Priority Array có giá trị là (null, null, 1, null...) thì giá trị của Present Value sẽ là 1.

Mục đích của việc tạo ra bảng này, là để cho phép các thiết bị với các mức ưu tiên khác nhau điều khiển tới đối tượng BACnet. Cụ thể:
- Mức ưu tiên 1/2: Dùng cho mục đích an toàn sinh mạng, ví dụ, khi có cháy, hệ thống sẽ ghi giá trị ON ở mức ưu tiên 1 để bật bơm báo cháy. Khi đó, các chương trình tự động sẽ không có quyền điều khiển bơm.
- Mức ưu tiên 5: Điều khiển khẩn cấp thiết bị, ví dụ gạt nút điều khiển cưỡng bức các cổng ra ngay trên thiết bị DDC.
- Mức ưu tiên 8: Điều khiển bởi người vận hành, thông qua giao diện HMI
- Mức ưu tiên 12: Điều khiển tự động bởi chương trình DDC
Tùy vào mức độ linh hoạt, các kỹ sư có thể lập trình để các bộ điều khiển hoạt động đúng với kịch bản nhất có thể.

Khi vận hành, nếu các đối tượng điều khiển bị giữ ở các mức cưỡng bức, người vận hành sẽ phải ra lệnh "Relinquish Default" cho đối tượng đó. Khi đó, các giá trị trong mảng Priority Array sẽ bị xóa và thiết bị điều khiển sẽ chạy theo logic được cài đặt trong chương trình. Nếu tất cả mảng Priority Array đều là #null, thì giá trị Present Value sẽ được lấy từ giá trị Relinquish Default Value, giá trị này sẽ được cài đặt khi lập trình DDC.

Sau khi đọc xong bài này, nếu gặp tình huống thiết bị điều khiển chạy không đúng theo chương trình (ví dụ bơm chạy mãi không dừng), thì hãy bình tĩnh xem giá trị ở bảng Priority Array xem thiết bị có đang bị điều khiển cưỡng bức với mức ưu tiên cao hơn bình thường hay không !!! 💪💪💪

Hi vọng với bài này, các bạn có thể hiểu thêm phần nào về việc điều khiển các đối tượng BACnet và các bạn có thể áp dụng kiến thức này để đa dạng hóa cách lập trình thiết bị của mình!
---------------------------------------------------------
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

Chủ Nhật, 28 tháng 3, 2021

BMS và chuẩn truyền thông BACnet (Phần 3) - Change Of Value

Trong hệ thống SCADA công nghiệp, các máy chủ SCADA khi thu thập dữ liệu sẽ thực hiện theo 2 cách:

- Theo yêu cầu (Solicited) : Các thiết bị chỉ trả lời thông tin dữ liệu khi được hỏi

- Không theo yêu cầu (Unsolicited) : Các thiết bị tự cập nhật dữ liệu mà không cần máy chủ hỏi đến

Một số chuẩn truyền thông công nghiệp chỉ hỗ trợ dạng Solicited như Modbus (lại là chuẩn Modbus 😝), một số chuẩn hỗ trợ cả hai dạng như DNP3.

Trong hệ thống BMS, chuẩn BACnet được thiết kế để có thể chạy theo cả hai cách trên 👏👏👏, cụ thể:

- Theo yêu cầu: Các thiết bị BACnet sẽ sử dụng dịch vụ ReadProperty / ReadPropertyMultiple, để hỏi theo chu kỳ thời gian.

- Không theo yêu cầu: Các thiết bị BACnet sẽ sử dụng dịch vụ UnconfirmedCOV / ConfirmedCOV, gọi chung là COV (viết tắt của Change Of Value)

Vậy COV chạy như thế nào?

Bước 1: BACnet Client (ví dụ máy chủ BMS) sẽ gửi lệnh Subscribe COV đến cho các BACnet Server (ví dụ DDC), bước này để thông báo cho thiết bị rằng cần giám sát dạng COV các đối tượng nào.

Bước 2: Khi có sự thay đổi (theo cấu hình đã đặt sẵn) của đối tượng, thiết bị BACnet Server sẽ gửi thông báo COVNotification về cho BACnet Client, thông báo sẽ bao gồm giá trị của đối tượng. Ví dụ: Khi trạng thái bơm thay đổi (Bật -> Tắt / Tắt -> Bật), hoặc khi nhiệt độ ống gió thay đổi 0.5oC.

Bước 3: Tùy thuộc vào loại thông báo (Confirmed/Unconfirmed), BACnet Server sẽ gửi xác nhận đã nhận được thông báo về cho BACnet Client.

COV lợi hại như thế nào?

Các bạn thử hình dung, nếu không có dịch vụ COV, máy chủ BMS sẽ phải hỏi dữ liệu của DDC theo chu kỳ thời gian. Khi đó, với các hệ thống lớn, ta không thể thiết lập chu kỳ quá nhanh (1s) vì như vậy máy chủ BMS cũng sẽ không xử lý kịp, cũng không thể thiết lập chu kỳ quá chậm (5s) sẽ làm giảm chất lượng hệ thống! 😭 Và chuẩn BACnet có thể sẽ không thể phát triển như đến bây giờ, vì trong trường hợp này, Modbus TCP sẽ được ưu tiên hơn bởi cấu trúc bức điện đơn giản hơn rất nhiều.

Nếu áp dụng COV, với tín hiệu số (BI/BO/BV) sẽ thay đổi rất ít lần trong một ngày (ví dụ, bơm chỉ bật tắt vài lần trong ngày), lượng dữ liệu truyền tải gần như giảm xuống ~ 0%. Với các tín hiệu tương tự (AI/AO/AV) thay đổi nhiều hơn, gần như liên tục, ta phải thiết lập được thông số COV Increment phù hợp để giảm số lượng bản tin cập nhật 💪 Ví dụ với nhiệt độ, ta thiết lập COV Increment = 0.5 oC, khi đó, chỉ lúc nào nhiệt độ thay đổi quá 0.5 oC so với giá trị trước đó, DDC mới cập nhật dữ liệu lên, và theo kinh nghiệm, tần suất gửi dữ liệu chỉ rơi vào khoảng 1 phút - 2 phút.

Xét tổng thể, khi sử dụng COV, ta có thể đáp ứng được tốc độ cập nhật dữ liệu ~ 1s mà giảm được lượng dữ liệu truyền nhận tới hơn 60 lần 👏👏👏. Do vậy, hãy sử dụng COV cho bất kỳ thiết bị nào trong hệ thống BMS nếu bạn có thể. Tất nhiên, việc này chỉ áp dụng được với các DDC có hỗ trợ COV 😂

Tham khảo tài liệu

Solicited vs. Unsolicited Data Acquisition: Which Camp are You?

BACNET - WHAT IS THE BACNET CHANGE OF VALUE (COV)

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

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

Thứ Năm, 25 tháng 3, 2021

Làm quen với lập trình Block trong BMS (Phần 2)

Ở phần trước, chúng ta đã biết đến các cách lập trình PLC/DDC khác nhau. Bài này sẽ giới thiệu rõ hơn về lập trình Function Block (FB) hay gọi tắt là lập trình Block.

Đúng như cách gọi của nó, lập trình Block được thực hiện bằng cách ghép các khối Block lại với nhau. Mỗi khối có một chức năng riêng biệt và khi được liên kết với nhau, chúng tạo thành một chương trình hoàn thiện, đơn giản có mà phức tạp cũng có. 😄😎

Với các kỹ sư điều khiển tự động hay tự động hóa, để lập trình các bộ điều khiển PID sử dụng C/C++ là một công việc khá vất vả, các bạn phải hiểu rất rõ về PID và khả năng lập trình rất tốt để có thể chuyển hóa kiến thức của mình vào trong bộ điều khiển. Nhưng với lập trình Block, việc này thực hiện vô cùng dễ dàng. Bạn chỉ cần kéo khối PID vào chương trình và... xong! Điều bạn quan tâm bây giờ chỉ là chỉnh định thông số như thế nào cho phù hợp. Điều đó có thể thực hiện được, bởi các kỹ sư phần cứng của các hãng đã giúp bạn thực hiện ngầm các lệnh PID ở trong firmware của thiết bị. 💓

1. Các thông tin của 1 block

Một block thường được hiển thị bằng một hình chữ nhật, có tên, số thứ tự, các terminal đầu vào và ra. Ngoài ra, một số thiết kế block phức tạp hơn sẽ có thêm việc gán các thông số ngay trên block.

Mỗi block sẽ có một chức năng riêng, ví dụ các hàm logic như AND/OR/XOR/NOT, các hàm toán học như ADD/SUB/MUL/DIV... hoặc các hàm điều khiển như HYS/PID... Mỗi một bộ điều khiển của các hãng sẽ hỗ trợ các tập lệnh cơ bản khác nhau và các kỹ sư phải lập trình dựa trên tập lệnh đó.

2. Phương pháp lập trình

Lập trình Block thực sự giúp cho kỹ sư tiếp cận được với hệ thống BMS một cách nhanh chóng mà không cần phải nhớ quá nhiều các câu lệnh. Và việc thực hiện lập trình khối lệnh cũng cực đơn giản với khả năng kéo thả "drag & drop". 

Hướng dẫn lập trình DDC: https://www.youtube.com/watch?v=TunO1kiIVeY


Thứ Hai, 22 tháng 3, 2021

Làm quen với lập trình Block trong BMS (Phần 1)

1. Các ngôn ngữ lập trình cho bộ điều khiển

Tương tự các bộ điều khiển PLC, các bộ điều khiển DDC dành cho BMS cũng được hỗ trợ các loại ngôn ngữ lập trình khác nhau, có thể kể đến Ladder Logic (LAD), Function Block Diagram (FBD) và Statement List (STL). Trong đó dạng Function Block thường được sử dụng nhiều nhất trong các giải pháp BMS, nó giúp kỹ sư nhanh chóng tiếp cận được công nghệ.

Lập trình Ladder (LAD)

Lập trình Statement List (STL)

2. Lập trình Function Block
Lập trình Function Block không phức tạp như Ladder Logic (thường các kỹ sư nhiều kinh nghiệm lập trình mới có thể đọc hiểu nhanh được một lệnh ra của Ladder), hay Statement List (phải gõ từng lệnh, nhớ từng địa chỉ của các biến và thường gợi nhớ đến ngôn ngữ lập trình Assembly từ năm 1949). Lập trình Function Block chỉ cần sử dụng chuột để kéo và thả giống như phần mềm dạy lập trình cho trẻ em Scratch. Do vậy, một sinh viên mới ra trường cũng có thể nhanh chóng tiếp cận với phần mềm này và lập trình cho bộ điều khiển.
Lập trình Scratch

3. Function Block
Một chương trình bao gồm rất nhiều các Function Block được kết nối với nhau. Có rất nhiều các Function Block từ cơ bản (như AND, OR, NOT, ADD, SUB…) đến các Function Block phức tạp (như PID) để tạo thành một chương trình hoàn chỉnh. Một block sẽ bao gồm các đầu ra (Terminal Output) và đầu vào (Terminal Output) và được thể hiện dưới dạng một khung chữ nhật. Các kỹ sư đơn giản chỉ cần kéo các block vào chương trình, kết nối các terminal với nhau và… hoàn thành!
Một tính năng quan trọng đó là các MACRO Block, được tạo thành bởi nhiều block cơ bản, để sử dụng lại cho các dự án khác nhau mà không cần phải lập trình. MACRO Block cũng giống như các hàm Function hay thủ tục Procedure trong ngôn ngữ lập trình bậc cao.
Hầu hết các phần mềm lập trình cho bộ điều khiển DDC của hệ thống BMS đều hỗ trợ lập trình dạng Function Block. Và thông thường, các phần mềm lập trình BMS thường mất phí bản quyền và phải mua theo năm. Phần mềm Scorpion Studio của hãng Lefa được cung cấp miễn phí, có thể giúp các bạn kỹ sư làm quen với việc lập trình Function Block. Các bạn hãy liên hệ tác giả để được trợ giúp và cung cấp phần mềm.
Phần mềm lập trình BMS Scorpion Studio

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



Thứ Sáu, 19 tháng 3, 2021

BMS và chuẩn truyền thông BACnet (Phần 2.5) - Hai thiết bị BACnet có giao tiếp được với nhau không?

Câu hỏi thường được đặt ra cho hệ thống BMS là:
- BMS có giao tiếp được với hệ thống kiểm soát vào ra hay không? 😷
- BMS có giao tiếp được với hệ thống báo cháy hay không? 😷
...

Tuy nhiên, có một câu hỏi mà rất ít khi các kỹ sư để ý đến, đó là:
"Hai thiết bị BACnet có giao tiếp được với nhau hay không?" 😱

Để trả lời câu hỏi này, chúng ta cần quan tâm đến các điểm sau:

1. Nếu bạn xem bài đầu tiên trong chuỗi bài nay, mình có giới thiệu link một video về BACnet. Các bạn có thể thấy, có rất nhiều loại BACnet trên nền khác nhau: BACnet Ethernet, BACnet Arcnet, BACnet IP, BACnet MS/TP... Và rõ ràng, 2 thiết bị với nền vật lý khác nhau, sẽ không thể truyền thông được với nhau. Vì đơn giản là, bạn không thể kết nối cổng mạng của thiết bị BACnet IP với cổng RS485 của thiết bị BACnet MS/TP được 😭

2. Câu hỏi đặt ra tiếp theo, với 2 thiết bị cùng chuẩn vật lý (cùng BACnet IP hoặc cùng BACnet MS/TP) thì có giao tiếp được với nhau không? Chưa chắc !!! Thiết bị BACnet IP được phân biệt thành server và client. Server thường có các tập lệnh để hỏi dữ liệu, ghi dữ liệu... còn client thường có các tập lệnh để trả lời. Để xác định được chính xác 2 thiết bị các dịch vụ để giao tiếp với nhau không, ta phải xem bảng BIBB (BACnet Interoperability Building Blocks) của thiết bị đó, ví dụ:

Nếu 1 thiết bị cho phép gửi (Initiates) dịch vụ "WhoIs" và 1 thiết bị cho phép trả lời (Responds to) dịch vụ "WhoIs" đó, hoặc tương tự dịch vụ "ReadProperty", thì nghĩa là 2 thiết bị giao tiếp được với nhau bằng dịch vụ BACnet. Với BACnet MS/TP ta cũng kiểm tra tương tự như vậy, ngoài ra, vì BACnet MS/TP chạy trên nền RS485, cần kiểm tra tốc độ Baudrate, Parity, StopBit của đường truyền thông cho đồng bộ.
Ở đây, các bạn cũng cần lưu ý, để đọc hay ghi dữ liệu, thường thiết bị sẽ sử dụng lệnh đọc/ghi đơn và đọc/ghi nhiều giá trị, nếu cấu hình thiết bị không tốt, rất dễ xảy ra tình trạng không giao tiếp được thiết bị. 💀💀💀

3. Vậy, nếu dịch vụ cũng đáp ứng rồi, thì việc tích hợp đã được hoàn thiện hay chưa? Câu trả lời là chưa !!! Quay trở lại bảng BIBB, các thiết bị sẽ được liệt kê các loại đối tượng mà thiết bị đó hỗ trợ, ví dụ AI, AO, BI, BO... BACnet ngày càng được bổ sung nhiều đối tượng mới, ví dụ các đối tượng Access Control, do đó, việc 2 thiết bị không cùng hỗ trợ 1 loại đối tượng là rất dễ xảy ra và như vậy không thể đọc ghi được đối tượng đó.

Trên đây là 3 vấn đề các kỹ sư cần quan tâm khi kết nối 2 thiết bị BACnet. Nói nôm na dân dã thì 2 ông người Việt để xem có nói chuyện được với nhau không cần kiểm tra đến 3 khả năng:
1. Hai ông có dùng chung app gọi điện hay không? Hay một ông dùng Viber một ông dùng Zalo 😅
2. Hai ông thì có điếc hoặc câm hay không?
3. Có tình trạng ông muốn hỏi con bò ông chỉ biết con lợn không? 😆

Và kể cả khi hai thiết bị BACnet kết nối được với nhau rồi, các kỹ sư nên để ý đến "độ ổn định" của kết nối. Trong rất nhiều trường hợp, các bộ gateway BACnet (ví dụ hệ thống HVAC, báo cháy) thường bị treo do quá tải, các trường hợp này thường xảy ra trong vòng 1 ngày khi bắt đầu chạy full tải hệ thống và kết nối.
P/S: Theo kinh nghiệm của tác giả, vào thời điểm này (2021) thường ít xảy ra tình trạng này, nên anh em kỹ sư cứ yên tâm mà tích hợp 😆
-------------------------------------------------------------------
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

Thứ Năm, 18 tháng 3, 2021

BMS và chuẩn truyền thông BACnet (Phần 2) - Quét thiết bị và dữ liệu

Như ở phần 1, chúng ta đã nhắc đến BACnet như một chuẩn truyền thông chung cho hệ thống BMS, vậy BACnet đem lại những gì cho các kỹ sư triển khai?

Đối với các kỹ sư đã từng làm việc ở mảng công nghiệp, chuẩn truyền thông Modbus là vô cùng quen thuộc (Modbus cũng được dùng rất nhiều trong BMS với các thiết bị điện như đồng hồ điện, đồng hồ nước). Và chắc chắn rằng, họ sẽ gặp rất nhiều rắc rối với việc cấu hình kết nối các thiết bị này với hệ thống SCADA do phải đọc hiểu từng địa chỉ dữ liệu trong hướng dẫn và thực hiện hoàn toàn bằng tay. Chính bản thân tác giả cũng từng gặp rất nhiều khó khăn khi phải kết nối các thiết bị Modbus với hệ thống BMS 😡😡 (Sẽ có một chuỗi bài nói về tích hợp thiết bị Modbus 👌👌)



Vậy BACnet hơn gì Modbus ở điểm này?

1. BACnet hỗ trợ quét các thiết bị trên mạng.

Nói nôm na, với tính năng này, một thiết bị BACnet khi cần thiết sẽ hỏi "Ai là thiết bị BACnet trên mạng?", các thiết bị BACnet sẽ đáp lại với các thông tin định danh của mình. 

Cụ thể, nói theo ngôn ngữ kỹ thuật, thiết bị BACnet sẽ sử dụng dịch vụ "WhoIs" và gửi lên mạng BACnet, các thiết bị BACnet sẽ đáp lại với lệnh "IAm". Tuy nhiên, có các điểm sau cần lưu ý với dịch vụ này:

- Sử dụng dịch vụ "WhoIs", thiết bị có thể hỏi toàn bộ mạng BACnet, hoặc thiết bị có thể giới hạn địa chỉ thiết bị cần hỏi. Ví dụ: "WhoIs, 1000, 2000" sẽ hỏi thiết bị có địa chỉ BACnet từ 1000 đến 2000 có trong mạng, khi đó các thiết bị ngoài dải này (ví dụ 999) sẽ không trả lời lại. Khi cần kiểm tra một thiết bị mạng có địa chỉ là 500 trong hệ thống có đang hoạt động hay không, sau khi sử dụng PING, có thể sử dụng đến lệnh "WhoIs, 500, 500". Lý do: Nếu bạn không giới hạn lại khoảng địa chỉ, có thể phần mềm sẽ hiển thị vài trăm thiết bị BACnet, việc tìm kiếm đúng thiết bị 500 sẽ tiêu tốn thêm thời gian của bạn 💔 trong khi hệ thống vẫn còn đang gặp trục trặc.

- Dịch vụ "WhoIs" (với BACnet/IP) thường sử dụng bức điện dạng Broadcast trên toàn mạng, do đó, nó rất dễ bị chặn khi chạy ở hệ thống VLAN khi đi qua các Router. Do vậy, phải yêu cầu đơn vị quản trị mạng mở dịch vụ Broadcast trên cổng 47808 (0xBAC0) - cổng BACnet/IP, để bản tin có thể được đưa đến toàn mạng.

- Với một số bộ điều khiển mạng, ở cấu hình cụ thể, bộ điều khiển có thể chặn bức điện "WhoIs" đi qua giữa mạng BACnet/IP và mạng BACnet MS/TP, cần lưu ý việc cấu hình thiết bị để tránh việc này.

- Các server BMS thường tự động sử dụng dịch vụ "WhoIs" theo chu kỳ đặt sẵn để kiểm tra tình trạng thiết bị BACnet. Với các hệ thống nhỏ, tính năng này không ảnh hưởng nhiều đến hệ thống. Tuy nhiên, với các hệ thống lớn, việc này vô tình làm tăng "tải" cho đường truyền hệ thống, khiến các thiết bị liên tục dồn bản tin về cho server, và có thể làm cho đường truyền bị nghẽn, đặc biệt khi có thiết bị lỗi trên đường BACnet MS/TP. Với trường hợp này, có thể thay đổi tần số kiểm tra lên thành 3-5 phút tùy vào độ lớn của hệ thống, không nên tắt dịch vụ này đi vì như vậy sẽ không phát hiện được thiết bị lỗi 👇.

Phần mềm Yabe với dịch vụ WhoIs

2. BACnet hỗ trợ quét các đối tượng của từng thiết bị trong mạng.

Sau khi tìm kiếm được thiết bị, sử dụng BACnet có thể đọc được các đối tượng của từng thiết bị (các điểm dữ liệu, lịch trình, chương trình...). Ví dụ, sử dụng phần mềm Yabe, các đối tượng sẽ được hiển thị chi tiết như bên dưới. 


* Một số thiết bị có thể không hỗ trợ tính năng này.

Sau khi quét được danh sách các đối tượng, phần mềm BMS có thể đọc chi tiết thông tin của từng đối tượng như tên, các thuộc tính trạng thái... 


Ví dụ, đối tượng Analog Value sẽ có đơn vị, tên, địa chỉ... và dựa vào các thông tin đọc được này, phần mềm BMS có thể tự động cấu hình các thiết bị và đối tượng vào cơ sở dữ liệu hệ thống mà không cần thao tác thêm bằng tay! ☝💪

Nhờ có tính năng scan thiết bị và tính năng đọc thông tin đối tượng, một kỹ sư có thể cấu hình dữ liệu kết nối với hệ thống HVAC trong vòng 15 phút (chỉ click và click) thay vì phải ngồi vài ngày với hàng nghìn điểm dữ liệu 💀💀💀

P/S: Năm 2009, khi BMS còn mới, mình cũng đã từng phải cấu hình tích hợp hệ thống HVAC bằng tay với một sự ức chế cao độ 😠 bởi sự "lặp đi lặp lại" của dữ liệu 😤

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

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

Thứ Ba, 16 tháng 3, 2021

BMS và chuẩn truyền thông BACnet (Phần 1)

Tản mạn về BACnet

Hiện nay, đối với các kỹ sư đã từng tham dự các dự án BMS, BACnet là một khái niệm vô cùng quen thuộc. Các bộ điều khiển DDC, các bộ thermostat hỗ trợ BACnet MS/TP, các bộ điều khiển mạng hỗ trợ BACnet IP, các phần mềm có license BACnet Client hay BACnet Server. Với loạt bài viết này, tác giả hi vọng có thể mang thêm được nhiều thông tin hơn đối với các kỹ sư đã, đang và sẽ gắn bó với BMS. 💪💪💪


BACnet được phát triển bởi ASHRAE (American Society of Heating, Refrigeration and Air-Conditioning Engineers) từ năm 1987 và chính thức trở thành tiêu chuẩn ASHRAE/ANSI 135 vào năm 1995. Từ đó đến nay, BACnet liên tục được cập nhật và tiêu chuẩn mới nhất là Standard 135-2020. 

Với các kỹ sư đã từng triển khai các hệ thống từ những năm 2010, các hệ thống BMS vẫn được xây dựng trên các chuẩn riêng của từng hãng, như C-Bus của Honeywell, N2-Bus của Johnson Control, FLN của Siemens hoặc dùng chuẩn chung LonMark (trên nền công nghệ LonWorks). Tuy nhiên, đến nay, BACnet đã thành một chuẩn giao thức chung của hệ thống BMS và có mặt ở gần như tất cả các bộ điều khiển số DDC, giúp việc giao tiếp và trao đổi dữ liệu giữa các hệ thống trở nên nhanh gọn và đơn giản hơn.

Để tìm hiểu về BACnet, có thể tham khảo ở một số đường link sau:

Trang Web chính chức của ASHRAE 135

Video giới thiệu về BACnet, chi tiết về giao thức, đối tượng và dịch vụ

Yabe - Tool test BACnet

Các bài tiếp theo sẽ nói chi tiết hơn về đối tượng, dịch vụ và các điểm đặc biệt của chuẩn truyền thông BACnet.

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

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 ...