Đặc tả kỹ thuật trạm vision và nghiệm thu FAT/SAT
Mẫu đặc tả 12 mục, bộ mẫu chuẩn, bài thử độ lặp lại (%GRR, Cg/Cgk) và phát hiện lỗi, phân biệt FAT và SAT.
Học xong bài này, bạn sẽ
- Viết đặc tả gồm đầu vào, tiêu chí, hiệu năng, giao tiếp
- Chuẩn bị mẫu chuẩn và kịch bản thử
- Phân biệt FAT và SAT
Nên học trước: Precision, Recall và ma trận nhầm lẫn
Nội dung bài viết
Bạn đã biết tính thời gian (bài "Trigger, encoder và cycle time") và viết tiêu chí OK/NG bằng con số (bài "Tiêu chí OK/NG, escape và overkill"). Giờ là lúc gom tất cả vào một tài liệu mà hai bên cùng ký: đặc tả kỹ thuật của trạm, và kế hoạch chứng minh trạm đạt đặc tả đó qua hai lần nghiệm thu, FAT tại xưởng của bạn và SAT tại nhà máy khách hàng. Đây là kỹ năng phân biệt người "làm được demo" với kỹ sư giao được dự án: không có đặc tả, dự án không bao giờ kết thúc, vì luôn có thêm một yêu cầu "tưởng là hiển nhiên".
1. Từ yêu cầu khách hàng đến đặc tả kỹ thuật
Thường có hai tài liệu:
- Đặc tả yêu cầu người dùng (URS, User Requirement Specification) do khách hàng viết: họ muốn gì, bằng ngôn ngữ của họ. Nhiều nhà máy nhỏ không có URS, chỉ có email như ở bài tập chặng 4.
- Đặc tả chức năng/kỹ thuật (thường gọi FS hoặc FDS, Functional Design Specification) do bên cung cấp viết: trạm làm gì, làm thế nào, đạt con số nào, kiểm chứng ra sao. Khách hàng duyệt và ký. Đây là tài liệu bạn viết trong bài này.
Một yêu cầu tốt trong đặc tả có bốn phần: mã (để truy vết), phát biểu dùng chữ "phải", phương pháp kiểm (thử nghiệm, kiểm tra, phân tích, trình diễn), và tiêu chí đạt bằng con số.
| Yêu cầu kém | Yêu cầu kiểm chứng được |
|---|---|
| Trạm chạy nhanh, đáp ứng dây chuyền | R-PER-01: Thời gian từ trigger tới khi kết quả có ở PLC phải ≤ 250 ms ở trường hợp chậm nhất. Kiểm: thử 10.000 ảnh liên tục, ghi thời gian từng ảnh. Đạt: giá trị lớn nhất ≤ 250 ms. |
| Phát hiện chính xác các lỗi | R-DET-01: Trạm phải phát hiện mọi mẫu trong bộ mẫu NG (danh mục phụ lục B). Kiểm: mỗi mẫu chạy 10 lần ở vị trí, hướng khác nhau. Đạt: 0 lần sót. |
| Kết nối với PLC | R-COM-02: Kết quả gửi qua tín hiệu số OK/NG (24 V, PNP) và qua bảng dữ liệu Modbus TCP theo phụ lục D, kèm ID sản phẩm. Kiểm: thử với PLC thật hoặc giả lập. Đạt: 1000/1000 kết quả đúng ID. |
| Hoạt động ổn định | R-REL-01: Trạm phải chạy liên tục 8 giờ ở năng suất tối đa không treo, không mất kết quả. Đạt: 0 sản phẩm thiếu kết quả, 0 lần khởi động lại. |
2. Mẫu đặc tả: các mục bắt buộc
| Mục | Nội dung chính |
|---|---|
| 1. Phạm vi | Trạm làm gì; những gì không thuộc phạm vi (ghi rõ, ví dụ "không đo đường kính lỗ"); giai đoạn |
| 2. Đầu vào: sản phẩm | Danh sách mã sản phẩm, bản vẽ, kích thước, vật liệu, màu, biến thể; số mã tối đa trong tương lai |
| 3. Đầu vào: điều kiện sản xuất | Năng suất tối đa, tốc độ băng tải và có đổi tốc độ không, khoảng cách sản phẩm, độ lệch vị trí/hướng, cách cấp sản phẩm |
| 4. Đầu vào: môi trường và tiện ích | Ánh sáng xưởng, nhiệt độ, độ ẩm, bụi, rung, nước; nguồn điện, khí nén; không gian lắp đặt |
| 5. Tiêu chí kiểm tra | Bảng tiêu chí lỗi: mã lỗi, đại lượng, giới hạn, vùng, số lượng cho phép, mẫu giới hạn tham chiếu (bài trước) |
| 6. Hiệu năng | Cycle time, độ trễ, escape/overkill trên bộ mẫu, độ lặp lại đo (%GRR, Cg/Cgk), thời gian đổi mã, độ sẵn sàng |
| 7. Giao tiếp | Danh sách I/O (tên, chiều, mức điện áp, kiểu PNP/NPN, giản đồ thời gian), giao thức, bảng địa chỉ dữ liệu, handshake, mã lỗi, dữ liệu gửi MES |
| 8. Hành vi khi lỗi | Thiếu kết quả, mất trigger, mất kết nối, camera lỗi, đèn hỏng: trạm làm gì (mặc định NG, báo động, dừng dây chuyền?) |
| 9. HMI và dữ liệu | Màn hình, ngôn ngữ, phân quyền (vận hành, kỹ thuật, quản trị), quản lý công thức sản phẩm, lưu ảnh (loại nào, bao lâu), nhật ký thay đổi tham số |
| 10. Phần cứng và an toàn | Danh sách thiết bị, tủ điện, cấp bảo vệ (IP), che chắn ánh sáng, an toàn điện và an toàn mắt với đèn mạnh |
| 11. Tài liệu, đào tạo, bảo hành | Hướng dẫn vận hành, bảo trì, sao lưu; số buổi đào tạo; thời hạn và phạm vi bảo hành |
| 12. Nghiệm thu | Bộ mẫu chuẩn, kịch bản FAT, kịch bản SAT, tiêu chí đạt, người ký |
3. Bộ mẫu chuẩn
Nghiệm thu chỉ có ý nghĩa khi cả hai bên dùng chung một bộ mẫu đã thống nhất. Bộ mẫu thường gồm:
| Loại mẫu | Mục đích | Số lượng gợi ý |
|---|---|---|
| Mẫu OK chuẩn (golden sample) | Cài đặt, kiểm tra hằng ngày, đo overkill | 30–100+, phủ các biến thể (màu, lô, cavity) |
| Mẫu NG theo loại lỗi | Chứng minh phát hiện từng loại lỗi | Mỗi loại 3–10+, lỗi ở nhiều vị trí khác nhau |
| Mẫu giới hạn (limit sample) | Một cặp sát ranh giới: "vừa OK" và "vừa NG", kiểm tra ngưỡng | 1–3 cặp mỗi tiêu chí quan trọng |
| Mẫu đo chuẩn (master) | Kích thước đã đo bằng thiết bị chuẩn (CMM, máy đo quang học) có chứng nhận; dùng cho bài thử độ lặp lại, độ lệch | 1 master + 10 sản phẩm trải khắp dải dung sai |
Quy tắc quản lý mẫu: mỗi mẫu có mã, nhãn, ảnh, mô tả lỗi và kích thước đo; QA khách hàng ký xác nhận phân loại; cất trong hộp bảo vệ; ghi rõ ai giữ. Mẫu NG tạo nhân tạo (vẽ bút lên sản phẩm, cắt bớt ngàm) chỉ dùng khi không có lỗi thật, và phải được khách hàng chấp nhận là đại diện cho lỗi thật. Mẫu bị trầy xước, bẩn dần theo thời gian: kiểm tra lại định kỳ.
4. Kịch bản thử 1: độ lặp lại phép đo
Với hạng mục đo kích thước, câu hỏi là: trạm cho cùng một sản phẩm cùng một con số bao nhiêu lần? Kịch bản phổ biến: 10 sản phẩm × 30 lần, mỗi lần lấy sản phẩm ra và nạp lại (đặt lên băng tải, cho chạy qua trạm), để tính cả ảnh hưởng của vị trí đặt. 10 sản phẩm nên trải khắp dải dung sai và đã được đo bằng thiết bị chuẩn. Mô phỏng một trạm đo kích thước 25,00 ± 0,05 mm có lệch hệ thống +0,004 mm và sai số ngẫu nhiên σ = 0,0025 mm:
import numpy as np
rng = np.random.default_rng(11)
DANH_DINH, DUNG_SAI = 25.00, 0.05 # mm: kích thước 25,00 ± 0,05 → dải T = 0,10 mm
T = 2 * DUNG_SAI
SO_SP, SO_LAN = 10, 30 # 10 sản phẩm × 30 lần nạp lại mỗi sản phẩm
# Giá trị "thật" của 10 sản phẩm (đo bằng máy CMM), trải khắp dải dung sai
gia_tri_that = rng.uniform(24.96, 25.04, SO_SP)
# Trạm vision: lệch hệ thống +0,004 mm, sai số ngẫu nhiên σ = 0,0025 mm mỗi lần nạp
do = gia_tri_that[:, None] + 0.004 + rng.normal(0, 0.0025, (SO_SP, SO_LAN))
np.savetxt("lap_lai_10x30.csv", do, delimiter=",", fmt="%.4f")
print("sp | CMM | TB vision | lệch | σ | khoảng (max-min)")
for i in range(SO_SP):
d = do[i]
print(f"{i + 1:2d} | {gia_tri_that[i]:.4f} | {d.mean():.4f} | {d.mean() - gia_tri_that[i]:+.4f} |"
f" {d.std(ddof=1):.4f} | {np.ptp(d):.4f}")
s_lap = np.sqrt(np.mean(do.var(axis=1, ddof=1))) # σ lặp lại gộp (pooled) của 10 sản phẩm
grr = 6 * s_lap / T * 100 # %GRR so với dải dung sai (chỉ thành phần lặp lại)
lech_tb = np.mean(do.mean(axis=1) - gia_tri_that)
print(f"\nσ lặp lại gộp: {s_lap:.4f} mm | 6σ = {6 * s_lap:.4f} mm = {grr:.1f}% dải dung sai")
print(f"Lệch hệ thống trung bình so với CMM: {lech_tb:+.4f} mm")
print("Đánh giá %GRR:", "đạt (≤ 10%)" if grr <= 10 else "có điều kiện (10–30%)" if grr <= 30 else "KHÔNG ĐẠT (> 30%)")
sp | CMM | TB vision | lệch | σ | khoảng (max-min)
1 | 24.9703 | 24.9740 | +0.0037 | 0.0021 | 0.0087
2 | 24.9999 | 25.0039 | +0.0040 | 0.0021 | 0.0079
3 | 25.0081 | 25.0126 | +0.0045 | 0.0027 | 0.0095
4 | 24.9623 | 24.9666 | +0.0043 | 0.0024 | 0.0100
5 | 24.9718 | 24.9760 | +0.0041 | 0.0027 | 0.0107
6 | 25.0343 | 25.0381 | +0.0039 | 0.0015 | 0.0060
7 | 24.9656 | 24.9698 | +0.0042 | 0.0024 | 0.0084
8 | 24.9704 | 24.9739 | +0.0035 | 0.0025 | 0.0101
9 | 25.0359 | 25.0404 | +0.0045 | 0.0023 | 0.0098
10 | 25.0098 | 25.0136 | +0.0038 | 0.0027 | 0.0136
σ lặp lại gộp: 0.0024 mm | 6σ = 0.0142 mm = 14.2% dải dung sai
Lệch hệ thống trung bình so với CMM: +0.0040 mm
Đánh giá %GRR: có điều kiện (10–30%)
Cách đọc:
- σ lặp lại khoảng 0,0024 mm cho mọi sản phẩm. 6σ = 0,0142 mm, chiếm 14,2% dải dung sai 0,10 mm. Con số này gọi là %GRR (gauge repeatability and reproducibility) so với dung sai. Theo hướng dẫn phân tích hệ thống đo (MSA) của AIAG được dùng rộng rãi trong công nghiệp ô tô: dưới 10% là tốt, 10–30% có thể chấp nhận tùy tầm quan trọng của kích thước và chi phí, trên 30% là không chấp nhận.
- Ở đây ta mới tính thành phần lặp lại (cùng trạm, nạp lại nhiều lần). Gauge R&R đầy đủ còn có thành phần tái lập (reproducibility): với thước cầm tay là giữa các người đo; với trạm vision tự động thường thay bằng giữa các ngày, các ca, hoặc giữa hai trạm giống nhau. Hai thành phần được tách bằng phân tích phương sai; chi tiết thống kê nằm ngoài phạm vi bài này.
- Lệch hệ thống +0,004 mm lặp lại ở mọi sản phẩm: đó là sai số hiệu chuẩn, không phải nhiễu. Nó không làm %GRR xấu đi, nhưng làm mọi kết quả đo bị dịch, và được kiểm tra bằng bài thử với mẫu chuẩn dưới đây.
Bài thử bổ sung hay dùng là nghiên cứu hệ đo loại 1: đo một mẫu chuẩn 50 lần, tính Cg (độ chụm so với dung sai) và Cgk (thêm ảnh hưởng của độ lệch). Công thức phổ biến lấy 20% dải dung sai so với 6 lần độ lệch chuẩn, yêu cầu thường gặp là Cg, Cgk ≥ 1,33:
import numpy as np
# Nghiên cứu hệ đo loại 1 (type-1 gauge study): đo 1 mẫu chuẩn (master) 50 lần, không nạp lại
rng = np.random.default_rng(3)
GIA_TRI_CHUAN = 25.000 # mm, giá trị mẫu chuẩn có chứng nhận đo
T = 0.10 # mm, dải dung sai của kích thước
do = GIA_TRI_CHUAN + 0.004 + rng.normal(0, 0.002, 50)
def cg_cgk(m, chuan, T):
s = m.std(ddof=1)
lech = m.mean() - chuan
cg = 0.2 * T / (6 * s) # cách tính phổ biến: 20% dải dung sai so với 6s
cgk = (0.1 * T - abs(lech)) / (3 * s)
return s, lech, cg, cgk
for ten, m in (("trước bù lệch", do), ("sau bù lệch -0,004 mm", do - 0.004)):
s, lech, cg, cgk = cg_cgk(m, GIA_TRI_CHUAN, T)
ket_luan = "đạt" if min(cg, cgk) >= 1.33 else "KHÔNG ĐẠT"
print(f"{ten:22s}: s = {s:.4f}, lệch = {lech:+.4f} → Cg = {cg:.2f}, Cgk = {cgk:.2f} ({ket_luan}, yêu cầu ≥ 1,33)")
trước bù lệch : s = 0.0022, lệch = +0.0040 → Cg = 1.51, Cgk = 0.90 (KHÔNG ĐẠT, yêu cầu ≥ 1,33)
sau bù lệch -0,004 mm : s = 0.0022, lệch = +0.0000 → Cg = 1.51, Cgk = 1.50 (đạt, yêu cầu ≥ 1,33)
Cg đạt nhưng Cgk không đạt: trạm đủ chụm nhưng bị lệch. Sửa bằng bù lệch (offset) từ hiệu chuẩn với mẫu chuẩn, rồi chạy lại 50 lần mới để xác nhận (trong code ta trừ trên cùng dữ liệu chỉ để minh họa). Nếu Cg không đạt, bù lệch không cứu được: phải giảm nhiễu (chiếu sáng, độ phân giải, đồ gá, thuật toán).
5. Kịch bản thử 2: phát hiện lỗi và loại nhầm
Với hạng mục kiểm lỗi, kịch bản phổ biến: mỗi mẫu NG chạy qua trạm nhiều lần (ví dụ 10 lần), mỗi lần đặt vị trí, hướng khác nhau trong phạm vi đặc tả; mẫu OK cũng chạy nhiều lần để đo loại nhầm. Ví dụ dùng bộ mẫu của trạm vỏ remote ở bài tập chặng 4: 5 loại lỗi × 4 mẫu, 50 mẫu OK. Tiêu chí: (1) mọi mẫu NG phát hiện 10/10 lần; (2) loại nhầm trên mẫu OK ≤ 0,5% số lần chạy.
import numpy as np
rng = np.random.default_rng(2024)
SO_LAN = 10 # mỗi mẫu chạy 10 lần, đổi vị trí/hướng mỗi lần
# Bộ mẫu NG: (mã mẫu, loại lỗi, xác suất trạm phát hiện mỗi lần) — xác suất chỉ dùng để mô phỏng
MAU_NG = [(f"NG-{loai}-{k}", loai, 0.90 if (loai, k) == ("ba-via", 3) else 1.0)
for loai in ("thiếu ngàm", "short shot", "ba-via", "vết đen", "lỗ bị bịt")
for k in range(1, 5)]
MAU_OK = [f"OK-{k:02d}" for k in range(1, 51)]
P_LOAI_NHAM = 0.002 # xác suất một lần chạy mẫu OK bị báo NG
# --- chạy thử (mô phỏng)
kq_ng = {ma: rng.random(SO_LAN) < p for ma, _, p in MAU_NG} # True = phát hiện
kq_ok = {ma: rng.random(SO_LAN) < P_LOAI_NHAM for ma in MAU_OK} # True = loại nhầm
# --- đánh giá theo tiêu chí nghiệm thu
print("Loại lỗi | lần phát hiện / lần chạy")
for loai in dict.fromkeys(l for _, l, _ in MAU_NG):
ma_loai = [ma for ma, l, _ in MAU_NG if l == loai]
phat_hien = sum(kq_ng[ma].sum() for ma in ma_loai)
print(f"{loai:18s} | {phat_hien:3d} / {len(ma_loai) * SO_LAN}")
sot = {ma: int((~v).sum()) for ma, v in kq_ng.items() if (~v).any()}
nham = sum(int(v.sum()) for v in kq_ok.values())
tong_ok = len(MAU_OK) * SO_LAN
print(f"Mẫu NG bị sót: {sot if sot else 'không có'}")
print(f"Loại nhầm trên mẫu OK: {nham} / {tong_ok} lần chạy = {nham / tong_ok:.2%}")
dat_1 = not sot # tiêu chí 1: mọi mẫu NG phát hiện 10/10 lần
dat_2 = nham / tong_ok <= 0.005 # tiêu chí 2: loại nhầm ≤ 0,5% số lần chạy OK
print(f"Tiêu chí 1 (NG 10/10): {'ĐẠT' if dat_1 else 'KHÔNG ĐẠT'} | "
f"Tiêu chí 2 (overkill ≤ 0,5%): {'ĐẠT' if dat_2 else 'KHÔNG ĐẠT'}")
Loại lỗi | lần phát hiện / lần chạy
thiếu ngàm | 40 / 40
short shot | 40 / 40
ba-via | 39 / 40
vết đen | 40 / 40
lỗ bị bịt | 40 / 40
Mẫu NG bị sót: {'NG-ba-via-3': 1}
Loại nhầm trên mẫu OK: 1 / 500 lần chạy = 0.20%
Tiêu chí 1 (NG 10/10): KHÔNG ĐẠT | Tiêu chí 2 (overkill ≤ 0,5%): ĐẠT
Mẫu NG-ba-via-3 bị sót 1/10 lần: tiêu chí 1 không đạt. Cách xử lý đúng quy trình:
- Ghi nhận vào biên bản, không xóa kết quả.
- Xem ảnh lần bị sót: lỗi nằm sát ngưỡng? Do vị trí đặt? Do chiếu sáng ở góc đó? Hay mẫu này thực ra là mẫu giới hạn bị phân loại sai?
- Sửa nguyên nhân, rồi chạy lại toàn bộ bộ mẫu NG và OK, không chỉ mẫu bị sót. Chỉnh ngưỡng để bắt một mẫu có thể làm tăng loại nhầm ở mẫu khác; chỉ chạy lại toàn bộ mới phát hiện được.
Nhớ lại bài trước: 200 lần chạy NG không lọt chỉ chứng minh escape dưới khoảng 1,5% (quy tắc 3/n), và đó là khi coi 200 lần chạy là độc lập, trong khi thực tế chỉ có 20 mẫu lỗi khác nhau. Bộ mẫu nghiệm thu chứng minh trạm làm đúng chức năng trên các lỗi đã biết; tỉ lệ ppm trong sản xuất được theo dõi tiếp sau khi bàn giao.
6. Các kịch bản thử khác
| Kịch bản | Cách làm | Tiêu chí ví dụ |
|---|---|---|
| Năng suất và thời gian | Chạy ở tốc độ tối đa (hoặc giả lập trigger) ≥ 1 giờ; ghi thời gian từng ảnh | Max ≤ ngân sách thời gian; 0 sản phẩm thiếu kết quả; số trigger = số kết quả |
| Độ bền vị trí | Đặt mẫu lệch ± giới hạn đặc tả theo x, y, góc | Kết quả không đổi trong toàn dải lệch |
| Ánh sáng môi trường | Bật/tắt đèn xưởng, mở cửa, đèn pin chiếu vào khu vực | Không thay đổi kết quả trên bộ mẫu |
| Hành vi khi lỗi | Rút cáp mạng, rút cáp camera, tắt nguồn đèn, gửi trigger kép | Báo lỗi trong ≤ 2 s; sản phẩm liên quan mặc định NG; tự phục hồi hoặc hướng dẫn rõ |
| Đổi mã sản phẩm | Người vận hành đổi công thức theo hướng dẫn | ≤ 5 phút, không cần kỹ sư, kết quả đúng ngay sản phẩm đầu |
| Khởi động lại | Tắt nguồn toàn trạm, bật lại | Tự chạy về trạng thái sẵn sàng trong ≤ 3 phút, giữ nguyên tham số |
| Dữ liệu và phân quyền | Kiểm tra ảnh NG được lưu, nhật ký thay đổi tham số, người vận hành không sửa được ngưỡng | Đúng theo mục 9 của đặc tả |
7. FAT và SAT
| FAT (Factory Acceptance Test) | SAT (Site Acceptance Test) | |
|---|---|---|
| Ở đâu | Xưởng của bên cung cấp | Nhà máy khách hàng, trên dây chuyền thật |
| Khi nào | Trước khi giao hàng | Sau lắp đặt và chạy thử (commissioning) |
| Điều kiện | Mẫu thật của khách hàng, băng tải thử hoặc đồ gá, PLC thật hoặc giả lập, ánh sáng xưởng bên cung cấp | Tốc độ thật, rung thật, ánh sáng thật, PLC/MES thật, người vận hành thật |
| Kiểm cái gì | Chức năng, bộ mẫu chuẩn, độ lặp lại, thời gian, hành vi khi lỗi, HMI, tài liệu | Lặp lại các bài thử chính trong điều kiện thật + tích hợp + chạy sản xuất thực tế (ví dụ vài ca) và so với kiểm tra thủ công + đào tạo |
| Mục đích | Tìm và sửa lỗi khi còn rẻ, trước khi mang ra hiện trường | Xác nhận trạm đạt đặc tả trong môi trường sản xuất; là điều kiện bàn giao và thanh toán |
| Kết quả | Biên bản FAT, danh sách tồn đọng (punch list), quyết định cho giao hàng | Biên bản SAT, ngày bắt đầu bảo hành |
Trình tự điển hình: đặc tả được ký → thiết kế → chế tạo → thử nội bộ → FAT → giao hàng → lắp đặt, chạy thử → SAT → bàn giao, bảo hành. Lỗi tìm thấy ở FAT tốn vài giờ để sửa; cùng lỗi đó tìm thấy ở SAT có thể tốn một chuyến công tác và một ngày dừng dây chuyền của khách hàng.
Đầu ra của mỗi lần nghiệm thu là một ma trận truy xuất: mỗi yêu cầu trong đặc tả, phương pháp, giới hạn, kết quả đo, đạt hay không. Yêu cầu không đạt vào danh sách tồn đọng kèm người chịu trách nhiệm và hạn xử lý:
# Ma trận truy xuất yêu cầu → kết quả thử: đầu ra cuối cùng của FAT/SAT
YEU_CAU = [ # (mã, yêu cầu, phương pháp kiểm, giới hạn, kết quả đo, so sánh)
("R-PER-01", "Thời gian xử lý chậm nhất, ms (10.000 ảnh)", "Thử", 1500, 820, "<="),
("R-PER-02", "Số sản phẩm thiếu kết quả, chạy liên tục 4 h", "Thử", 0, 0, "<="),
("R-DET-01", "Số lần sót trên bộ mẫu NG (20 mẫu × 10)", "Thử", 0, 1, "<="),
("R-DET-02", "Overkill trên bộ mẫu OK (50 mẫu × 10), %", "Thử", 0.5, 0.2, "<="),
("R-MEA-01", "%GRR kích thước 25,00 ± 0,05 mm", "Thử", 30, 14.2, "<="),
("R-COM-01", "Thời gian báo lỗi khi mất kết nối PLC, s", "Thử", 2, 0.6, "<="),
("R-DAT-01", "Số ngày lưu ảnh NG", "Kiểm tra cấu hình", 30, 60, ">="),
]
dat = 0
ton_dong = []
for ma, mo_ta, pp, gh, kq, ss in YEU_CAU:
ok = kq <= gh if ss == "<=" else kq >= gh
dat += ok
if not ok:
ton_dong.append(ma)
print(f"{ma} | {mo_ta:45s} | {pp:17s} | {ss} {gh:<6} | {kq:<6} | {'ĐẠT' if ok else 'KHÔNG ĐẠT'}")
print(f"\nĐạt {dat}/{len(YEU_CAU)}. Tồn đọng (punch list): {', '.join(ton_dong) or 'không'}")
R-PER-01 | Thời gian xử lý chậm nhất, ms (10.000 ảnh) | Thử | <= 1500 | 820 | ĐẠT
R-PER-02 | Số sản phẩm thiếu kết quả, chạy liên tục 4 h | Thử | <= 0 | 0 | ĐẠT
R-DET-01 | Số lần sót trên bộ mẫu NG (20 mẫu × 10) | Thử | <= 0 | 1 | KHÔNG ĐẠT
R-DET-02 | Overkill trên bộ mẫu OK (50 mẫu × 10), % | Thử | <= 0.5 | 0.2 | ĐẠT
R-MEA-01 | %GRR kích thước 25,00 ± 0,05 mm | Thử | <= 30 | 14.2 | ĐẠT
R-COM-01 | Thời gian báo lỗi khi mất kết nối PLC, s | Thử | <= 2 | 0.6 | ĐẠT
R-DAT-01 | Số ngày lưu ảnh NG | Kiểm tra cấu hình | >= 30 | 60 | ĐẠT
Đạt 6/7. Tồn đọng (punch list): R-DET-01
Hai bên có thể thỏa thuận cho giao hàng có điều kiện với tồn đọng nhỏ, nhưng phải ghi rõ trong biên bản và đóng tồn đọng trước hoặc trong SAT.
8. Sai lầm thường gặp
- Không có bộ mẫu thống nhất trước FAT; đến ngày nghiệm thu khách hàng mang tới mẫu lỗi mới chưa từng thấy.
- Tiêu chí đạt không có con số: "trạm chạy ổn định", "phát hiện tốt".
- Chỉ thử ở điều kiện đẹp: mẫu đặt đúng tâm, đèn xưởng tắt, tốc độ chậm.
- Chỉnh tham số trong lúc nghiệm thu rồi chỉ chạy lại mẫu bị sai.
- Bỏ qua bài thử hành vi khi lỗi: trạm đạt mọi bài thử chức năng nhưng khi rút cáp mạng thì cho qua mọi sản phẩm.
- Không lưu bằng chứng: ảnh, log, file kết quả của bài thử phải được lưu cùng biên bản.
9. Bài tập
Bài 1. Viết lại thành yêu cầu kiểm chứng được (có mã, phương pháp kiểm, tiêu chí đạt): (a) "trạm đổi mã sản phẩm dễ dàng"; (b) "trạm lưu đủ dữ liệu để truy xuất"; (c) "trạm không bị ảnh hưởng bởi ánh sáng xưởng".
Xem đáp án
- (a) R-OPS-01: Người vận hành (không phải kỹ sư) phải đổi được công thức cho mọi mã trong danh mục phụ lục A bằng ≤ 3 thao tác trên HMI, trong ≤ 5 phút. Kiểm: trình diễn với 2 người vận hành đã được đào tạo, 3 lần đổi mã. Đạt: mọi lần ≤ 5 phút và sản phẩm đầu tiên sau đổi mã cho kết quả đúng trên bộ mẫu của mã mới.
- (b) R-DAT-02: Với mỗi sản phẩm, trạm phải lưu thời gian, ID, mã sản phẩm, kết quả, mã lỗi, giá trị đo vào cơ sở dữ liệu ≥ 90 ngày; ảnh NG lưu ≥ 30 ngày. Kiểm: kiểm tra cấu hình + truy vấn thử 10 sản phẩm bất kỳ sau khi chạy 1 giờ. Đạt: 10/10 bản ghi đầy đủ, ảnh NG mở được.
- (c) R-ENV-01: Kết quả trên bộ mẫu chuẩn không thay đổi khi ánh sáng xưởng thay đổi giữa tắt hoàn toàn và bật toàn bộ, kể cả khi có đèn pin chiếu vào cửa trạm. Kiểm: chạy bộ mẫu 3 lần ở mỗi điều kiện. Đạt: kết quả giống hệt nhau, không loại nhầm, không sót.
Bài 2. Đọc file lap_lai_10x30.csv do mục 4 tạo ra, giả sử dung sai bị siết lại còn ± 0,02 mm. Tính lại %GRR và kết luận. Trạm còn dùng được cho kích thước này không?
Xem đáp án
import numpy as np
do = np.loadtxt("lap_lai_10x30.csv", delimiter=",")
s_lap = np.sqrt(np.mean(do.var(axis=1, ddof=1)))
for dung_sai in (0.05, 0.02):
grr = 6 * s_lap / (2 * dung_sai) * 100
print(f"± {dung_sai} mm: %GRR = {grr:.1f}%")
± 0.05 mm: %GRR = 14.2%
± 0.02 mm: %GRR = 35.5%
Với ± 0,02 mm, %GRR khoảng 35%, vượt ngưỡng 30%: trạm không đủ tin cậy để quyết định OK/NG cho kích thước này. Cùng một trạm, cùng độ lặp lại, nhưng dung sai chặt hơn thì không đạt. Đây là lý do %GRR luôn phải tính theo dung sai cụ thể, không có trạm nào "đạt GRR" chung chung.
Bài 3. Lập danh sách ít nhất 6 việc khác nhau giữa FAT và SAT cho trạm kiểm tra vỏ remote (bài tập chặng 4), nói rõ việc nào chỉ làm được ở SAT.
Xem đáp án
- Bộ mẫu chuẩn, độ lặp lại, hành vi khi lỗi: làm ở FAT, lặp lại phần chính ở SAT.
- Thời gian xử lý: FAT với trigger giả lập ở năng suất tối đa; SAT với robot và băng tải thật.
- Chỉ ở SAT: robot thật dừng trên camera mặt dưới, rung của máy ép, ánh sáng nhà xưởng thật, nhiệt độ gần máy ép.
- Chỉ ở SAT: tích hợp với PLC/MES thật của khách hàng (ở FAT thường dùng PLC giả lập).
- Chỉ ở SAT: chạy sản xuất thật vài ca và so kết quả trạm với kiểm tra thủ công của QC (đếm sản phẩm lỗi QC bắt được mà trạm bỏ qua, và ngược lại).
- Chỉ ở SAT: đào tạo người vận hành và kỹ thuật trên trạm đã lắp; bàn giao tài liệu, bản sao lưu.
Tóm tắt
- Đặc tả gồm: phạm vi (và ngoài phạm vi), đầu vào (sản phẩm, sản xuất, môi trường), tiêu chí kiểm tra, hiệu năng, giao tiếp, hành vi khi lỗi, HMI/dữ liệu, phần cứng, tài liệu, nghiệm thu.
- Mỗi yêu cầu có mã, chữ "phải", phương pháp kiểm và tiêu chí đạt bằng con số.
- Bộ mẫu chuẩn: OK, NG theo loại, mẫu giới hạn, mẫu đo chuẩn; được ký xác nhận và quản lý.
- Độ lặp lại: 10 sản phẩm × 30 lần, %GRR so với dung sai (< 10% tốt, 10–30% có điều kiện, > 30% không đạt); mẫu chuẩn 50 lần cho Cg/Cgk ≥ 1,33.
- Phát hiện lỗi: mỗi mẫu NG nhiều lần, nhiều vị trí; sai thì sửa nguyên nhân và chạy lại toàn bộ.
- FAT tại xưởng bên cung cấp, trước giao hàng; SAT tại nhà máy khách hàng, điều kiện thật, là điều kiện bàn giao.
Bài tiếp theo: Bài tập chặng 5: viết đặc tả một trạm kiểm tra nắp chai, áp dụng toàn bộ chặng này.


