DER Twin: Kiến Trúc Của Bộ Mô Phỏng Thiết Bị Năng Lượng Mã Nguồn Mở

07 tháng 4, 2026·7 phút đọc

DER Twin là một bộ mô phỏng thiết bị năng lượng phân tán (DER) mã nguồn mở với kiến trúc phân tầng rõ ràng giúp mở rộng và tích hợp dễ dàng. Bài viết tập trung phân tích cách hoạt động bên trong, từ mô hình thiết bị, lớp giao thức đến động cơ mô phỏng và mô hình môi trường.

DER Twin: Kiến Trúc Của Bộ Mô Phỏng Thiết Bị Năng Lượng Mã Nguồn Mở

DER Twin: Kiến Trúc Của Bộ Mô Phỏng Thiết Bị Năng Lượng Mã Nguồn Mở

DER Twin là một dự án mã nguồn mở mô phỏng các thiết bị năng lượng phân tán như pin lưu trữ (BESS) và bộ biến tần năng lượng mặt trời (PV inverter). Bộ mô phỏng này sở hữu kiến trúc phân tầng rõ ràng, tách biệt trách nhiệm giữa các thành phần, từ đó giúp việc mở rộng, tích hợp và kiểm thử hệ thống quản lý năng lượng (EMS) trở nên thuận tiện và linh hoạt hơn.

Kiến trúc bốn lớp

Kiến trúc của DER Twin gồm 4 lớp chính, mỗi lớp giữ nhiệm vụ riêng biệt và chỉ giao tiếp qua các giao diện đã định nghĩa:

  • Lớp giao thức (Protocol layer): Xử lý kết nối Modbus TCP và RTU, phơi bày các địa chỉ thanh ghi. Lớp này không trực tiếp thao tác hoặc lưu trạng thái thiết bị.

  • Lớp điều khiển (Controller layer): Chuyển đổi việc đọc và ghi thanh ghi sang các chỉ số và lệnh trong thiết bị; chịu trách nhiệm mã hóa và giải mã dữ liệu.

  • Lớp thiết bị (Device layer): Mô phỏng vật lý thiết bị, chẳng hạn như năng lượng lưu trữ và hiệu suất biến tần. Lớp này không biết thiết bị đang giao tiếp qua giao thức gì.

  • Động cơ mô phỏng (Simulation engine): Quản lý tiến trình thời gian và gọi hàm cập nhật trạng thái (step(dt)) của từng thiết bị ở mỗi bước thời gian.

Ngoài ra còn có mô hình môi trường bên ngoài như bức xạ mặt trời, nhiệt độ, tần số và điện áp lưới để thiết bị lấy dữ liệu tham chiếu mà không can thiệp ngược.

Kiến trúc bốn lớp của DER TwinKiến trúc bốn lớp của DER Twin

Sự tách biệt này là quyết định kiến trúc quan trọng nhất, cho phép dễ dàng mở rộng: thêm giao thức mới không cần đụng tới mã thiết bị, thêm thiết bị mới không cần sửa giao thức.

Động cơ mô phỏng

Động cơ là “trái tim” của bộ mô phỏng, điều phối thời gian theo từng bước nhỏ gọi là tick. Ở mỗi tick, tất cả thiết bị đều được cập nhật trạng thái dựa theo thời gian trôi qua (dt):

async def step_once(self):
    dt = self.clock.step
    self.external_models.update(self.sim_time, dt)
    for controller in self.devices:
        controller.step(dt)
    self.clock.advance()

Clock có hai chế độ:

  • real_time: true: Động cơ ngủ giữa các tick để đồng bộ với thời gian thực thế giới, phù hợp khi EMS của bạn vận hành trực tiếp với tỷ lệ thực.

  • real_time: false: Chạy càng nhanh càng tốt, không chờ nghỉ; do đó có thể mô phỏng 20 phút trong vòng 0.3 giây trên CPU hiện đại.

Bạn cũng có thể cấu hình thời gian bắt đầu (ví dụ 12h trưa theo giờ mặt trời) để mô phỏng bắt đầu từ đúng thời điểm môi trường.

Động cơ mô phỏng bước thời gianĐộng cơ mô phỏng bước thời gian

Mô hình các thiết bị

Mỗi loại thiết bị tuân theo một giao diện chuẩn:

  • update(dt): cập nhật trạng thái vật lý theo khoảng thời gian dt.
  • get_telemetry(): trả về trạng thái hiện tại như điện áp, công suất, SOC…
  • apply_commands(commands): áp dụng các lệnh điều khiển truyền vào.

BESS (pin lưu trữ)

Mô hình pin sử dụng tích hợp năng lượng để theo dõi trạng thái sạc (SOC), giới hạn công suất tối đa và tốc độ thay đổi công suất (ramp rate). Công suất được giới hạn trong max_charge_kwmax_discharge_kw. SOC được tính theo công thức:

SOC += (power_kw / capacity_kwh) * (dt / 3600) * 100

Nhiệt độ môi trường ảnh hưởng khả năng sạc/xả, còn điện áp/tần số lưới được phản ánh trong dữ liệu đo đạc, có thể kích hoạt các cơ chế bảo vệ.

Mô hình BESS với kiểm soát công suất và SOCMô hình BESS với kiểm soát công suất và SOC

Biến tần PV — tách riêng DC và AC

Mô hình này chia hai khối riêng:

  • Phía DC (PVArrayModel): chuyển bức xạ mặt trời thành công suất DC khả dụng bằng mô hình nhiệt dựa trên NOCT. Nhiệt độ tế bào tăng theo bức xạ, vượt 25°C mỗi độ tăng tổn hao khoảng 0.4%.

  • Phía AC (PVInverterModel): xử lý đầu vào DC, áp dụng hiệu suất biến tần, giới hạn công suất AC, và cơ chế bảo vệ điện áp/tần số trên lưới. Mô hình nhiệt theo dõi nhiệt biến tần do tổn hao chuyển đổi.

Dữ liệu cả hai phía DC và AC đều được exposed để EMS có thể đọc đo lường, trong khi các lớp riêng biệt không biết hoạt động của nhau, cho phép mở rộng linh hoạt.

Mô phỏng biến tần PV với các khối DC và ACMô phỏng biến tần PV với các khối DC và AC

Mô hình môi trường bên ngoài

Các tham số môi trường như bức xạ mặt trời, nhiệt độ, điện áp và tần số lưới được cập nhật mỗi tick trước khi thiết bị tiến hành tính toán. Ví dụ mô hình bức xạ giả lập dạng đường cong sin giữa lúc mặt trời mọc và lặn:

angle = π * (time_h - sunrise) / (sunset - sunrise)
irradiance = peak * sin(angle)  # bằng 0 ngoài giờ ban ngày

Mô hình điện áp và tần số thêm nhiễu Gaussian và dao động chậm, bao gồm các sự kiện biến động như sụt áp, lệch tần số.

Lớp giao thức hỗ trợ Modbus TCP và RTU

Đây là nơi DER Twin thể hiện thực tế trong kiểm thử tích hợp hệ thống EMS vì nó giao tiếp bằng giao thức Modbus chuẩn như thiết bị thật.

  • Mỗi thiết bị có một server TCP/RTU asynchronous riêng.
  • EMS có thể kết nối giống như với phần cứng thật.
  • Hỗ trợ song song Modbus TCP và RTU, hỗ trợ cấu hình đa thiết bị (multi-device).
  • Có thể tạo cổng serial ảo để phát triển không cần thiết bị phần cứng thật nhờ công cụ socat.

Ví dụ cấu hình Modbus TCP:

{
  "kind": "modbus_tcp",
  "ip": "0.0.0.0",
  "port": 55001,
  "unit_id": 1,
  "register_map": "bess_modbus.yaml"
}

Giao thức được thiết kế trừu tượng, dễ dàng mở rộng theo các chuẩn mới như IEC 61850, DNP3, MQTT trong tương lai.

Tập tin bản đồ thanh ghi (Register Maps)

Đây là các tập tin YAML cho phép ánh xạ từng địa chỉ Modbus với các biến trong thiết bị, giúp mô phỏng khớp chính xác với tài liệu thiết bị thật mà không cần sửa mã nguồn. Ví dụ:

- name: active_power
  internal_name: active_power
  address: 32064
  func: 0x04
  direction: read
  type: int32
  count: 2
  scale: 0.1
  unit: kW

- name: on_grid_power_setpoint
  internal_name: active_power_setpoint
  address: 10126
  func: 0x10
  direction: write
  type: int32
  count: 2
  scale: 0.1
  unit: kW

Hướng dẫn đóng góp phát triển

Bởi vì thiết kế phân tầng rõ ràng, việc thêm mới thiết bị hoặc giao thức đều được đơn giản hóa:

  • Thêm thiết bị mới: viết mô hình trong thư mục devices/, tạo bản ghi telemetry, thêm bản đồ thanh ghi YAML, kết nối trong SiteController, rồi viết test.
  • Thêm giao thức mới: cài đặt server và shutdown, đăng ký giao thức trong SiteController.

Bạn hiếm khi cần chỉnh đồng thời nhiều phần cùng lúc, giúp bảo trì dễ dàng.

Để bắt đầu

Bạn có thể tham khảo hướng dẫn chi tiết và cài đặt qua trang chính thức của dự án: https://dertwin.com

Cài đặt nhanh bằng lệnh pip:

pip install dertwin

Bộ mô phỏng mã nguồn mở DER Twin là công cụ hữu ích cho các kỹ sư phát triển, thử nghiệm hệ thống quản lý năng lượng với tính thực tế cao, khả năng mở rộng bền vững, và dễ tích hợp với mô hình, giao thức mới.

Nguồn: github.com/AlexSpivak/dertwin

Bài viết được tổng hợp và biên soạn bằng AI từ các nguồn tin tức công nghệ. Nội dung mang tính tham khảo. Xem bài gốc ↗