
Lỗi thường gặp khi cấu hình USS trên S7-1200 và cách khắc phục
Nếu bạn đã triển khai giao tiếp USS theo hướng dẫn nhưng vẫn gặp lỗi truyền thông với biến tần, bài viết này sẽ giúp bạn tra cứu nhanh các mã lỗi STATUS phổ biến, hiểu nguyên nhân, và biết cách khắc phục — dựa trên bảng mã lỗi chính thức trong tài liệu kỹ thuật của Siemens.
1. Cách đọc mã lỗi STATUS
Tất cả các lệnh USS (USS_PORT, USS_DRV, USS_RPM, USS_WPM) trả về mã lỗi qua tham số STATUS dạng Word, hiển thị theo định dạng hex W#16#..... Khi ERROR = TRUE, giá trị STATUS mới có hiệu lực.
Lưu ý quan trọng về nơi lỗi hiển thị: lỗi giao tiếp (communication error) chỉ được báo qua USS_PORT, không hiển thị trên USS_DRV. Vì vậy, nếu mạng RS485 đấu sai điện trở đầu cuối, có thể xảy ra tình huống biến tần đã chuyển sang trạng thái RUN nhưng USS_DRV lại trả về toàn giá trị 0 ở các ngõ ra — trong trường hợp này, bạn chỉ phát hiện được lỗi qua USS_PORT, chứ không thấy trên USS_DRV.
2. Bảng mã lỗi STATUS đầy đủ
Mã lỗi (W#16#) | Nguyên nhân | Cách khắc phục |
|---|---|---|
| Độ dài bản tin phản hồi từ biến tần không khớp với số ký tự thực nhận | Kiểm tra tham số PZD_LEN đã cấu hình đúng khớp với cấu hình PZD trên biến tần chưa |
| Tham số VALUE không phải kiểu Word, Real hoặc DWord | Kiểm tra lại kiểu dữ liệu gán cho VALUE trong lệnh USS_RPM/USS_WPM |
| Chương trình gửi kiểu Word cho tham số, nhưng biến tần phản hồi kiểu DWord/Real | Đối chiếu lại kiểu dữ liệu của thông số đang đọc/ghi trong tài liệu biến tần |
| Ngược lại với 8182 — chương trình gửi DWord/Real, biến tần phản hồi Word | Đối chiếu lại kiểu dữ liệu của thông số đang đọc/ghi trong tài liệu biến tần |
| Bản tin phản hồi từ biến tần có checksum sai | Kiểm tra chất lượng đường truyền RS485, nhiễu điện, hoặc cáp lỏng |
| Địa chỉ biến tần không hợp lệ (địa chỉ hợp lệ: 1-16) | Kiểm tra lại tham số DRIVE trên lệnh USS_DRV và địa chỉ đã cài trên biến tần |
| Giá trị đặt tốc độ (SPEED_SP) ngoài phạm vi cho phép (-200% đến 200%) | Kiểm tra lại giá trị đưa vào SPEED_SP trong chương trình |
| Biến tần phản hồi sai địa chỉ so với yêu cầu đã gửi | Kiểm tra xung đột địa chỉ giữa các biến tần trên cùng mạng USS |
| Số từ PZD cấu hình không hợp lệ (chỉ chấp nhận 2, 4, 6 hoặc 8) | Sửa lại tham số PZD_LEN cho đúng giá trị hợp lệ |
| Tốc độ baud (BAUD) cấu hình không hợp lệ | Kiểm tra lại giá trị BAUD trên lệnh USS_PORT |
| Kênh yêu cầu tham số đang bận xử lý một yêu cầu khác của cùng biến tần | Không gọi liên tiếp USS_RPM/USS_WPM ngay sau khi DONE vừa lên — cần chờ đủ chu kỳ xử lý |
| Biến tần không phản hồi dù đã thử lại nhiều lần | Kiểm tra đấu nối RS485, điện trở đầu cuối, địa chỉ và tốc độ baud trên biến tần |
| Biến tần trả về lỗi mở rộng khi thao tác đọc/ghi thông số | Xem thêm giá trị USS_Extended_Error và tra cứu tài liệu của chính biến tần |
| Biến tần từ chối truy cập (illegal access) khi đọc/ghi thông số | Kiểm tra quyền truy cập thông số đó trên biến tần — có thể bị khóa hoặc giới hạn |
| Biến tần chưa được khởi tạo (USS_DRV chưa từng được gọi cho biến tần này) | Đảm bảo gọi USS_DRV ít nhất một lần cho địa chỉ biến tần đó trước khi gọi USS_RPM/USS_WPM |
| Lỗi trả về từ các lệnh PtP nền tảng mà thư viện USS sử dụng | Tra cứu thêm mã lỗi trong tài liệu về lệnh Point-to-Point (PtP) |
3. Lỗi 818A: bẫy phổ biến khi đọc thông số liên tiếp
Đây là lỗi rất hay gặp với người mới dùng USS_RPM. Nguyên nhân sâu xa: sau khi DONE của USS_RPM lên TRUE (đọc xong một thông số), kênh đọc dữ liệu chưa sẵn sàng ngay lập tức cho yêu cầu tiếp theo — biến tần cần một "bản tin PKW rỗng" được gửi và xác nhận trước khi kênh tham số mới thực sự khả dụng trở lại. Nếu chương trình gọi USS_RPM hoặc USS_WPM ngay lập tức cho cùng biến tần đó, kết quả sẽ là lỗi 818A .
Cách khắc phục: thêm một khoảng chờ hợp lý (dựa theo vài lần gọi USS_DRV) giữa các lần đọc/ghi thông số liên tiếp trên cùng một biến tần, thay vì gọi dồn dập ngay sau khi DONE báo hoàn tất.
4. Cách bắt và lưu lại mã lỗi từ USS_PORT (vì chỉ hợp lệ 1 vòng quét)
Giá trị STATUS và USS_Extended_Error của USS_PORT chỉ hợp lệ trong đúng một vòng quét tại thời điểm ERROR = TRUE. Nếu không xử lý kịp, bạn sẽ bỏ lỡ thông tin lỗi ngay khi nó xảy ra. Tài liệu khuyến nghị cách xử lý sau:
Dùng tiếp điểm của bit ERROR trên USS_PORT làm điều kiện kích hoạt.
Khi ERROR chuyển lên TRUE, sao chép ngay giá trị STATUS và USS_Extended_Error vào các vùng nhớ M riêng (ví dụ "LastPortStatus", "LastExtError") để xử lý ở các vòng quét tiếp theo.
Với các mã lỗi 8180, 8184, 8187, 818B, biến USS_Extended_Error sẽ chứa số hiệu của biến tần (drive number) đang gặp lỗi — rất hữu ích để xác định nhanh đúng biến tần nào đang có vấn đề trên mạng nhiều thiết bị.
5. Kiểm tra lại cấu hình chung nếu gặp lỗi kết nối liên tục
Nếu bạn gặp lỗi 818B (không phản hồi) hoặc các lỗi liên quan đến checksum/độ dài bản tin, hãy rà soát lại toàn bộ các yêu cầu cấu hình cơ bản theo danh sách sau — đây là nguồn gốc phổ biến nhất của lỗi giao tiếp USS trong thực tế:
Biến tần đã được cấu hình dùng 4 từ PKW chưa?
Số từ PZD (2/4/6/8) trên biến tần có khớp với tham số PZD_LEN trên USS_DRV không?
Tốc độ baud trên tất cả biến tần có khớp với tham số BAUD trên USS_PORT không?
Biến tần đã được đặt ở chế độ điều khiển từ xa (remote control) chưa?
Tần số đặt (frequency set-point) trên biến tần đã được cấu hình lấy từ USS trên COM Link chưa?
Địa chỉ biến tần (1-16) có khớp với tham số DRIVE trên USS_DRV tương ứng không?
Chiều điều khiển động cơ (direction control) đã cấu hình đúng cực tính theo giá trị đặt chưa?
Mạng RS485 đã được đấu điện trở đầu cuối (termination) đúng cách chưa?
Chỉ cần một trong các mục trên bị bỏ sót, hệ thống thường sẽ báo lỗi giao tiếp dù phần đấu dây vật lý hoàn toàn đúng.
6. Điều khiển chiều quay: lỗi logic dễ nhầm giữa DIR và SPEED_SP
Một lỗi không hiển thị qua mã STATUS nhưng khiến động cơ chạy sai chiều là do hiểu nhầm cách hai tham số DIR và SPEED_SP phối hợp với nhau. Với giả định động cơ đã đấu đúng chiều thuận:
SPEED_SP | DIR | Chiều quay thực tế |
|---|---|---|
> 0 | 0 | Ngược (Reverse) |
> 0 | 1 | Thuận (Forward) |
< 0 | 0 | Thuận (Forward) |
< 0 | 1 | Ngược (Reverse) |
Nói cách khác: dấu của SPEED_SP và giá trị DIR cùng quyết định chiều quay cuối cùng, không phải chỉ riêng DIR. Đây là điểm cần lưu ý khi debug hiện tượng "động cơ quay ngược chiều mong muốn" dù chương trình có vẻ đúng logic.
7. Checklist debug nhanh khi gặp lỗi USS
Xác định lỗi hiển thị ở đâu — USS_PORT (lỗi giao tiếp vật lý) hay USS_DRV/USS_RPM/USS_WPM (lỗi logic yêu cầu)?
Tra bảng mã STATUS để xác định nhóm nguyên nhân (cấu hình sai tham số, phần cứng không phản hồi, hay lỗi từ chính biến tần).
Kiểm tra USS_Extended_Error nếu mã lỗi thuộc nhóm 8180/8184/8187/818B/818C để xác định đúng biến tần hoặc nguyên nhân cụ thể từ nhà sản xuất biến tần.
Rà soát checklist cấu hình chung ở mục 5 nếu lỗi xảy ra liên tục thay vì ngẫu nhiên.
Kiểm tra logic gọi lệnh trong OB — USS_PORT ở cyclic interrupt OB, USS_DRV/USS_RPM/USS_WPM ở main OB, đúng như quy tắc đã trình bày ở bài viết trước.
Kết luận
Phần lớn lỗi USS trên S7-1200 xuất phát từ sai lệch cấu hình giữa PLC và biến tần (địa chỉ, baud rate, số từ PZD) hoặc từ vấn đề vật lý trên mạng RS485 (điện trở đầu cuối, nhiễu). Việc nắm rõ bảng mã STATUS và biết chính xác lỗi hiển thị ở lệnh nào sẽ giúp bạn rút ngắn đáng kể thời gian debug khi hệ thống không hoạt động như mong đợi.



