SickApp/README.md
2026-02-03 01:38:52 +00:00

3.1 KiB

Sick Encoder CAN Monitor

Ứng dụng giám sát encoder Sick qua giao tiếp CAN (PCAN-USB), hiển thị vị trí thời gian thực, trạng thái node, heartbeat, PDO, và hỗ trợ thay đổi bitrate / node ID runtime.

🎯 Mục tiêu chính

  • Đọc và hiển thị vị trí encoder Sick (mm) từ PDO TPDO1 theo thời gian thực
  • Giám sát trạng thái node (Bootup, Pre-Operational, Operational, Stopped, Timeout)
  • Hỗ trợ thay đổi bitrateNode ID runtime (bao gồm unlock + save to EEPROM)
  • Giao diện web đơn giản, responsive bằng Blazor

🏗️ Kiến trúc

  ┌─────────────────────┐
  │   Blazor Web App    │  (UI: Start/Stop, Bitrate, NodeID, Table frames)
  └──────────┬──────────┘
             │
             ▼
  ┌─────────────────────┐
  │  PcanCanService     │  (.NET service xử lý PCAN-Basic)
  │  - Init/Uninit      │
  │  - Read loop        │
  │  - NMT commands     │
  │  - Apply bitrate    │
  │  - Apply node ID    │
  └──────────┬──────────┘
             │            
             ▼
    ┌─────────────┐
    │ Sick Encoder│  CAN (PCAN-USB)
    └─────────────┘

🚀 Công nghệ sử dụng

  • Backend: .NET 10 (LTS)
  • Frontend: Blazor Web App (Server hoặc WebAssembly tùy chọn)
  • CAN Driver: Peak PCAN-Basic (PCAN-USB)
  • Dependency Injection: Microsoft.Extensions.Options
  • OS hỗ trợ: Windows (PC phát triển), có thể port sang Linux (mono hoặc .NET runtime)

📂 Cấu trúc thư mục (hiện tại)

  SickBlazorApp/
  ├── SickBlazorApp/                  # Project Blazor chính
  │   ├── Components/                 # (nếu có reusable components)
  │       └── Pages/                  # Home.razor, sick.razor(UI)
  │   ├── eds/                        # EDS files của Sick encoder
  │   ├── Models/                     # PositionPdo, CanFrame, CanNodeState, ...
  │   ├── Options/                    # CanBusOptions
  │   ├── Services/                   # PcanCanService + interface
  │   └── Program.cs
  ├── .pdf                      # Tài liệu
  └── README.md

🚦 Trạng thái hiện tại

  • Đã hoàn thành:
    • Kết nối PCAN-USB + đọc CAN frame liên tục
    • Parse heartbeat (node state + auto resume)
    • Xử lý Position PDO (raw → mm)
    • Thay đổi bitrate runtime (unlock + save EEPROM + reset)
    • Thay đổi Node ID runtime (unlock + save + reset)
    • UI Blazor hiển thị bảng frame, trạng thái node, vị trí mm
  • Đang phát triển:
    • Cải thiện UI/UX (loading state, error message, reconnect)
    • Thêm logging chi tiết
    • Hỗ trợ nhiều channel PCAN (nếu cần)