Dự án OMA – hướng dẫn sử dụng¶
Chladni làm việc theo project (mỗi công trình hoặc mỗi đợt đo là một project). Phân tích chia thành ba tầng xử lý tín hiệu → nhận dạng hệ → phân tích modal; mỗi bước tạo ra một mục được lưu lại trong project.
📐 Geometry ─▶ 📥 Convert ─▶ 🎛️ Process & DOFs ─▶ 🔎 System identification ─▶ 📊 Modal analysis ─▶ 📋 Results
grid, slave, raw → converted offset, lọc, decimate, PSD+ / FRF (phi tham số) biểu đồ ổn định, List modes,
beam/surface (độ nhạy, đơn vị, xóa kênh … ; gán kênh SSI-data / SSI-cov (/ref) peak picking, CMIF Mode shapes,
(CSV, .asc) khuếch đại, dB) vào nút + hướng (DOF) pLSCF · CSI (có đo lực) → bộ mode; ghép setup Compare, xuất
| Mục | Sinh ra ở bước | Nội dung |
|---|---|---|
| Raw data | import file | tín hiệu như đo (V, counts hoặc đơn vị vật lý) |
| Converted signals | Convert | tín hiệu SI, nhãn kênh, loại đại lượng |
| Processed signals | Process & DOFs | tín hiệu đã xử lý, nút + hướng đo của từng kênh, kênh tham chiếu |
| Identified models | System identification | PSD+/FRF, hoặc cực của mọi bậc mô hình |
| Mode sets | Modal analysis | f, ξ, σ, dạng mode, MPC/MP/MPD của các mode đã chọn |
Project explorer (panel bên phải; ẩn/hiện bằng nút ở góc trên): xem các mục theo nhóm và theo nguồn gốc, bấm để chọn (Ctrl = chọn nhiều, Shift = chọn dải), bấm đúp để mở đúng trang, kéo mục thả vào trang, kéo file từ máy vào để import, chuột phải để đổi tên, xem nguồn gốc, tải về, xóa (xóa một mục thì các mục sinh ra từ nó cũng bị xóa). Chọn ≥ 2 bộ mode → Combine setups.
Logfile (nút trong Explorer): mọi thao tác được ghi vào logfile.py của project –
một script Python chạy lại được toàn bộ phân tích mà không cần giao diện (chladni.workbench.batch).
0 · Projects¶
- New project: đặt tên, mô tả, chọn điểm xuất phát:
- Empty project: project trống.
- 4-storey shear frame – benchmark: khung cắt 4 tầng, dùng dữ liệu công bố trong bài 1 của sổ tay
MACEC (KU Leuven). Gồm hình học, dữ liệu
framedata.mat, mô hình chính xác làm mô hình FE, và kết quả công bố để đối chiếu (xem case study Khung cắt 4 tầng). - Example – declared geometry: nhà 2 tầng khai báo bằng nút / beam / shell / slave, 6 cảm biến có độ nhạy, 2 setup, dữ liệu thô tính bằng volt (có offset và trôi). Đây là mẫu tham chiếu cho định dạng file.
- Example – OpenSeesPy model: khung 3D nạp từ
examples/frame3d_model.py, 2 setup, dữ liệu "đo". - Open: mở project và nhảy tới bước đầu tiên chưa hoàn thành.
- Export ZIP / Import a project archive: sao lưu hoặc chuyển project sang máy khác.
- Delete: xóa vĩnh viễn, có hỏi xác nhận.
Mỗi project là một thư mục thường trong projects/<tên>/:
project.json tên, mô tả, đơn vị, ngày tạo/sửa
geometry/nodes.csv lines.csv surfaces.csv slaves.csv
geometry/model.py script OpenSeesPy đã nạp (nếu có)
geometry/fe_modal.npz mode FE của mô hình đó (nếu có)
sensors.csv danh mục cảm biến
channels.csv kênh của từng setup
preprocessing.json pipeline tiền xử lý
data/raw/setup_k.npz dữ liệu gốc (import / mô phỏng)
data/processed/setup_k.npz dữ liệu sau tiền xử lý
results/<run>/ kết quả nhận dạng (run.json, modes.npz, dofs.csv)
1 · Geometry¶
Có hai cách tạo geometry.
Cách 1 – Khai báo đơn giản¶
Nhập trực tiếp trên web (bảng có thể thêm hoặc xóa dòng) hoặc import CSV (tab Import CSV files; mỗi bảng có nút tải file mẫu).
| Bảng | Cột | Ý nghĩa |
|---|---|---|
| Nodes | id, x, y, z |
nút 3D: các điểm đo và các điểm cần để vẽ kết cấu |
| Lines (beams) | id, n1, n2, group |
phần tử dạng thanh nối 2 nút |
| Surfaces (shells) | id, n1, n2, n3, group |
phần tử bề mặt tam giác 3 nút (tấm tứ giác thì chia làm 2 tam giác) |
| Slave DOFs | slave, slave_dir, master, master_dir, factor |
u_dir(slave) = Σ factor · u_dir(master) |
group là nhãn tự do (ví dụ "column", "floor 1"). File CSV có thể dùng dấu phân cách , ; hoặc tab,
và có thể không có header (khi đó cột lấy theo thứ tự trong bảng trên).
File MACEC .asc (grid, beam, surface, slave) cũng import thẳng được vào bảng tương ứng. Riêng file slave
của MACEC có thứ tự master mx my mz slave sx sy sz và được tự đổi sang dạng bảng trên.
Slave DOF dùng cho các bậc tự do không đo nhưng biết quan hệ với bậc tự do đo được. Nhiều dòng cùng
slave, slave_dir được cộng lại. Ví dụ sàn cứng, đo tại 101 và 104 (x = 0) và cần nút 102 (x = 5, y = 0):
slave, slave_dir, master, master_dir, factor
102, x, 101, x, 1.0 # cùng y = 0 → u_x giống 101
102, y, 101, y, 1.0 # u_y(102) = u_y(101) + (Lx/Ly)·(u_x(101) − u_x(104))
102, y, 101, x, 1.25
102, y, 104, x, -1.25
Nút không có kênh đo và không có phương trình slave thì đứng yên khi animation, hoặc được nội suy nếu bạn chọn như vậy ở bước 5. Save geometry sẽ kiểm tra: id trùng, phần tử trỏ tới nút không tồn tại, hướng slave không hợp lệ, nút không nối với phần tử nào.
Cách 2 – Import mô hình OpenSeesPy¶
Upload script .py (OpenSeesPy) hoặc .tcl (OpenSees Tcl, chuyển đổi bằng opstool). App chạy script,
đọc lại nút và phần tử (phần tử 2 nút → line, 3 hoặc 4 nút → surface, khối → các mặt) và tính dao động
riêng. Khi đó:
- geometry chính là lưới của mô hình (node id = node tag OpenSees);
- mode FE được giữ lại để: so sánh MAC với mode nhận dạng, dẫn hướng chọn đỉnh, và mô phỏng dữ liệu (đo ảo);
- có thể tải lại script, hoặc Detach (giữ geometry, bỏ mode FE).
Yêu cầu với script:
* Dựng mô hình ở cấp module (nút, phần tử, khối lượng, gối).
* Code trong if __name__ == "__main__": không được chạy.
* ⚠️ Script được chạy bằng Python trên máy bạn, nên chỉ nạp mô hình của chính bạn.
2 · Signal processing¶
Convert¶
- Import: nút Import files, kéo file vào trang hoặc vào Explorer. CSV/TXT/DAT (cột
timetùy chọn, header tùy chọn) hoặc MATLAB.mat(biếndatatheo kênh × mẫu hoặc mẫu × kênh vàfs). Mỗi file là một setup. - Bảng chuyển đổi, mỗi kênh một dòng: nhãn (ví dụ
5X= nút 5 phương X), loại đại lượng (acc, vel, disp, force, strain), ghi bằng (V, mV, µV, counts, hoặc trống = đã là đơn vị vật lý), đơn vị vật lý, độ nhạy (đơn vị ghi / đơn vị vật lý), khuếch đại, dB.vật lý = ghi / (độ nhạy · khuếch đại), rồi đổi sang SI. - Conversion factors (preset): Save as… / Load để dùng lại cho các setup cùng phần cứng. Chọn nhiều raw item thì một bảng chuyển đổi cho tất cả.
- Simulate from the FE model (khi project có mô hình OpenSees): tạo dữ liệu mô phỏng có DOF sẵn.
Process & DOFs¶
- Process: danh sách thao tác (thêm, kéo đổi thứ tự, bật/tắt): remove offset, detrend, despike, Butterworth, notch, decimate, resample, crop, taper, integrate, differentiate, scale, delete channel. Kết quả xem tức thì: Time, PSD, Autocorrelation, Spectrogram, Statistics; Before / After / Both; chuyển kênh bằng mũi tên. Save processed signal áp dụng cho mọi mục đang chọn (xử lý nhiều setup một lần).
- DOFs: mỗi kênh → nút geometry, hướng (x, y, z, −x…, véc-tơ, hoặc góc phương vị θ / góc nâng φ), kênh tham chiếu.
From labels đọc nhãn kiểu
5X,203-y; Copy from… từ mục khác; preset DOF; xem mũi tên 3D (đỏ = tham chiếu).
3 · System identification¶
Chọn tín hiệu đã xử lý, chọn kênh Outputs / References / Inputs (mặc định: input = kênh lực). Analysis type tự gợi ý: stochastic (chỉ có đáp ứng – OMA), deterministic (có lực – EMA) hoặc combined (OMAX).
| Phương pháp | Tham số | Mô hình |
|---|---|---|
| Nonparametric | PSD+: periodogram (Number of data blocks, Time window parameter m) hoặc correlogram (Number of time lags); FRF H1 khi có input | PSD+/FRF tại các vạch tần số |
| SSI data-driven / covariance-driven, tùy chọn reference-based | i (một nửa số block row, nút suggest), bậc 2:2:60, Estimate covariances (độ bất định) |
cực của mọi bậc + giá trị kỳ dị (Show singular values) |
| pLSCF operational / deterministic | bậc đa thức, độ dài đoạn, dải tần | cực của mọi bậc |
| CSI (combined) | i, bậc | cực của mọi bậc |
Bậc tối đa được tự giới hạn theo kích thước ma trận Hankel (SSI/ref: i × số kênh tham chiếu). Resolution info cho biết Δf, số khối, kích thước Hankel. Một tín hiệu có thể cho ra nhiều mô hình (thử nhiều i, nhiều phương pháp).
4 · Modal analysis¶
- Mô hình tham số → biểu đồ ổn định: ⊕ stable, v (f + dạng mode ổn định), d (f + cản), f (chỉ f), · mới. Criteria: Δf, Δξ, ΔMAC giữa hai bậc liên tiếp (%), khoảng ξ, MPC min, MP max, MPD max, σf max, σξ max → Apply. Show all modes hiện cả cực không đạt tiêu chí cứng; Show PSD+ phủ tổng PSD lên biểu đồ. Rê chuột → Mode information (f, ξ, bậc, σ, MPC, MPD); bấm một cực → chọn, dạng mode hiện trên mặt phẳng phức (mode thực nằm trên một đường thẳng). Chọn các cực ổn định ở cùng một bậc (ví dụ bậc 48 trong case study khung 4 tầng) → Save thành bộ mode. Phím Delete bỏ cực vừa chọn.
- Mô hình phi tham số: Peak picking trên ANPSD hoặc CMIF/FDD trên các giá trị kỳ dị (chọn SV thứ mấy cho mode gần nhau); rê chuột xem MPC tại vạch đó; bấm để chọn (tự bắt đỉnh gần nhất).
- Combine setups: chọn các bộ mode của từng setup → các DOF chung (cùng nút, cùng hướng) làm tham chiếu để chuẩn hóa từng setup, dạng mode toàn cục chứa mọi DOF, f và ξ lấy trung bình (kèm độ lệch chuẩn). Các bộ mode có cùng DOF (đo lặp lại) thì được lấy trung bình.
5 · Results¶
- List modes: bảng f, σf, ξ, σξ, MPC, MP, MPD, bậc; nguồn gốc (raw → … → bộ mode);
bảng DOF; xuất
modes.csv, UFF, ZIP,stabmodes.mat(tương thích MACEC), sao chép sang Excel. Chọn ≥ 2 bộ mode để so sánh f, ξ cạnh nhau. - Mode shapes: animation 3D, mặt nhìn 3D / XY / XZ / YZ, biên độ.
- Compare modes: MAC, cặp mode, AutoMAC, tần số, cản – giữa hai phương pháp, với mô hình FE, hoặc giữa hai bộ mode bất kỳ (trên các DOF chung).
Mode shapes – chi tiết¶
- Animation 3D trên geometry. Màu thể hiện độ lớn chuyển vị |u|. Có nút ▶ Play / ⏸ Pause.
- Amplitude: phóng đại biến dạng.
- Unmeasured nodes: at rest (đứng yên) hoặc interpolated (nội suy nghịch đảo khoảng cách).
- Complex motion: animation
Re(φ·e^{iθ}), thể hiện cả sai pha giữa các điểm. Tắt đi thì app dùng mode thực đã chuẩn hóa. - FE overlay: vẽ mode FE tương ứng bằng nét đứt.
- Surfaces, Frames: tùy chọn hiển thị. Với mô hình lớn nên dùng ít frame.
Cách dựng chuyển vị nút: tại nút có kênh đo, véc-tơ 3D được tính bằng bình phương tối thiểu từ các hình
chiếu đo được (d_i · u = φ_i; khi đo ít hơn 3 hướng thì lấy nghiệm có chuẩn nhỏ nhất, các kênh đo trùng
được lấy trung bình). Sau đó áp dụng phương trình slave, rồi tới tùy chọn nội suy.
Xuất kết quả:
| File | Nội dung |
|---|---|
modes.csv |
bảng mode |
dofs.csv |
các DOF đo = các dòng của mode shape (nút, véc-tơ hướng, setup, ref) |
<method>/mode_shapes_dofs.csv |
mỗi DOF: re, im, abs, phase của từng mode |
<method>/mode_shapes_nodes.csv |
mỗi nút geometry: trạng thái (measured / slave / interpolated / none), ux uy uz |
<method>/modes.uff |
Universal File Format (dataset 15 nút, 82 trace line, 55 mode). Mở được bằng ARTeMIS, MEscope, pyuff |
<method>/mode_k_f.html |
animation mở bằng trình duyệt |
geometry/*.csv, summary.json |
geometry và tham số |
Ví dụ: chạy thử trong 3 phút (khung cắt 4 tầng)¶
- Projects → New project → mẫu 4-storey shear frame – benchmark.
- Geometry: 10 nút, 12 beam và các slave DOF (cột phải theo cột trái).
- Process & DOFs: Explorer đã có Setup 1 (processed) với DOF nút 5, 4, 3, 2 phương X.
- System identification: chọn Setup 1 (processed) → SSI, data-driven, i = 34, bậc
2:2:60, Estimate covariances → Calculate. - Modal analysis: bấm 4 cực ở bậc 48 (≈ 2.77 / 7.94 / 12.18 / 15.03 Hz) → Save. Với tiêu chí mặc định, mode 2 hiện ký hiệu v (cản thay đổi hơn 5 % giữa hai bậc) – vẫn chọn được, hoặc nới Δξ trong Criteria.
- List modes: f ± σ, ξ ± σ, MPC ≈ 1, MPD < 1°; Compare modes → MAC với mô hình chính xác ≈ 1. Đối chiếu với kết quả công bố trong sổ tay MACEC: xem case study Khung cắt 4 tầng.
Lỗi thường gặp¶
| Thông báo | Cách xử lý |
|---|---|
| N conversion rows for M channels | các file được chọn có số kênh khác nhau – chuyển đổi riêng từng nhóm |
| Nodes not in the geometry for channel(s) … | sai số nút ở bảng DOF, hoặc geometry đã thay đổi |
| Reference channels must be among the outputs | bỏ chọn tham chiếu ở kênh không phải output |
| no time column – enter the sampling frequency | nhập fs khi import |
| has no DOF in common with the previous setups (Combine) | các setup phải có chung ít nhất một DOF tham chiếu (cùng nút, cùng hướng) |
| … changes the sampling – apply it to all channels | decimate/resample/crop phải áp dụng cho mọi kênh |
| Eigenvalue analysis failed (import model) | mô hình thiếu khối lượng hoặc thiếu gối |