Bài viết kỹ thuật gốc của FCTEL · Đội ngũ kỹ thuật FCTEL
Xuất bản lần đầu: 2026-10-04 · Sửa đổi lần cuối: 2026-10-04
Sau khi một thiết bị RS232 hoặc RS485 được kết nối với Ethernet, dữ liệu trả về từ một lần đọc không nhất thiết là một thông điệp hoàn chỉnh từ thiết bị đó. Việc tách và gộp thông điệp thường phản ánh sự khác biệt về ranh giới ở các lớp nối tiếp, mạng và ứng dụng, thay vì mất dữ liệu. Hiểu các lớp này giúp xây dựng bộ phân tích cú pháp đáng tin cậy và xác định nguyên nhân thực sự của sự cố. Bài viết này giải thích các cơ chế chung. Các chế độ được hỗ trợ, cách hoạt động của bộ đệm và phạm vi tham số của một sản phẩm FCTEL cụ thể phải được kiểm tra trong tài liệu hướng dẫn của sản phẩm đó.
Mở ảnh gốc để xem chi tiết. Cuộn sơ đồ theo chiều ngang để đọc tất cả nhãn ở kích thước đầy đủ.

UART tạo khung ký tự; giao thức ứng dụng xác định thông điệp
UART thường bắt đầu một ký tự bằng một bit bắt đầu, gửi số bit dữ liệu đã thống nhất, có thể thêm bit chẵn lẻ và kết thúc bằng một bit dừng. Bộ nhận tái tạo ký tự theo tốc độ baud và định dạng đã cấu hình. Tốc độ baud, số bit dữ liệu, chế độ chẵn lẻ và số bit dừng phải khớp nhau. Vì vậy, mức tín hiệu không đúng, nhiễu hoặc lỗi lấy mẫu có thể gây lỗi ký tự trước khi yếu tố mạng có liên quan.
Với 8N1, một byte tám bit còn cần một bit bắt đầu và một bit dừng: tổng cộng mười chu kỳ bit. Ở tốc độ minh họa 9,600 bit/s, một ký tự chiếm khoảng 1.04 ms. Đây là ví dụ tính toán, không phải thông số hiệu năng sản phẩm. Ví dụ này giải thích vì sao thông lượng byte hữu ích thấp hơn tốc độ bit danh định và vì sao bộ đệm phải tiếp nhận các ký tự đến.
RS232, RS422 và RS485 mô tả các giao diện điện và cách bố trí kết nối khác nhau; UART mô tả định thời ký tự. Không yếu tố nào tự xác định một thông điệp ứng dụng. Một truy vấn nhiệt độ có thể chứa nhiều byte. Thiết bị phải xác định riêng ranh giới thông điệp bằng độ dài, dấu phân cách, định dạng cố định hoặc khoảng thời gian do giao thức quy định.
Cách máy chủ thiết bị nối tiếp kết nối hai cơ chế
Theo chiều nhận, giao diện nối tiếp trước tiên tái tạo các byte từ tín hiệu điện. Các byte đi vào FIFO hoặc bộ đệm phần mềm. Sau đó, cơ chế đóng gói chuyển một phần dữ liệu đến ngăn xếp mạng theo các điều kiện về độ dài hoặc thời gian chờ đã được triển khai. Theo chiều ngược lại, các byte rời bộ đệm nhận của mạng và được UART truyền từng ký tự. Mỗi chiều có cơ chế lưu đệm và lập lịch riêng.
Một thông điệp ứng dụng có thể trải dài qua nhiều đợt nhận dữ liệu nối tiếp, và một đợt có thể chứa nhiều thông điệp. Việc đóng gói cân đối giữa thời gian chờ và hiệu quả truyền; nó không tự động hiểu mọi giao thức lớp trên. Tài liệu công khai về máy chủ nối tiếp của FCTEL bao gồm các chế độ hoạt động máy chủ TCP và máy khách TCP. Phải kiểm tra trong tài liệu hướng dẫn của model liên quan để biết có cơ chế tạo khung cụ thể hay không, cũng như tên và phạm vi của các thiết lập.
Nếu nguồn nối tiếp tiếp tục gửi trong khi đường truyền lên bị chặn, mức sử dụng bộ đệm sẽ tăng. Cơ chế phản áp của TCP có thể hạn chế truyền trên mạng, nhưng không thể khiến một nguồn nối tiếp không có cơ chế điều khiển luồng phù hợp dừng lại. Cần đánh giá đồng thời dung lượng bộ đệm, cơ chế điều khiển luồng phần cứng hoặc phần mềm được hỗ trợ, hành vi của nguồn và chính sách ngắt kết nối. Cơ chế truyền tin cậy của TCP không đồng nghĩa với khả năng hoạt động không mất dữ liệu vô hạn trong mọi tình trạng tắc nghẽn.
Mở ảnh gốc để xem chi tiết. Cuộn sơ đồ theo chiều ngang để đọc tất cả nhãn ở kích thước đầy đủ.

TCP bảo toàn thứ tự byte, không bảo toàn ranh giới của từng lần gửi
TCP thể hiện một kết nối dưới dạng luồng byte có thứ tự. Số thứ tự xác định vị trí byte; cơ chế xác nhận, truyền lại và điều khiển luồng quản lý việc truyền tải. Một phân đoạn TCP là đơn vị truyền tải mạng, còn thông điệp nghiệp vụ thuộc về giao thức ứng dụng. Một lần gọi gửi ở phía gửi không bắt buộc phía nhận phải nhận đúng lượng dữ liệu đó trong một lần đọc.
Giả sử thiết bị tạo một thông điệp A dài sáu byte, tiếp theo là thông điệp B dài bốn byte. Việc truyền thành công cung cấp đúng mười byte đó theo đúng thứ tự. Chương trình có thể đọc hai byte đầu của A trước, rồi đọc tám byte còn lại, hoặc đọc cả mười byte cùng lúc. Các hiện tượng này thường được gọi là tách và gộp thông điệp. Bản thân chúng không cho thấy dữ liệu bị hỏng nếu các byte đầy đủ và đúng thứ tự.
Độ dài của một lần đọc phụ thuộc vào dữ liệu sẵn có, bộ đệm nhận, việc lập lịch luồng và các đối số của giao diện. Việc phân đoạn mạng cũng phụ thuộc vào đường truyền và ngăn xếp. Ứng dụng không thể suy ra độ dài thông điệp nghiệp vụ từ độ dài của một phân đoạn TCP đã bắt được, hoặc coi mỗi lần đọc trả về là một phản hồi của thiết bị. Khi kết nối đóng, ứng dụng vẫn phải xử lý dữ liệu hoàn chỉnh đã nhận và nhận diện thông điệp chưa hoàn chỉnh ở cuối.
Mở ảnh gốc để xem chi tiết. Cuộn sơ đồ theo chiều ngang để đọc tất cả nhãn ở kích thước đầy đủ.

Bộ phân tích cú pháp vững chắc duy trì trạng thái qua các lần đọc
Duy trì một bộ đệm byte tồn tại xuyên suốt các lần đọc. Mỗi lần đọc nối thêm dữ liệu. Vòng lặp phân tích cú pháp trước tiên kiểm tra xem đã có phần đầu hay chưa, sau đó áp dụng quy tắc độ dài hoặc kết thúc của giao thức. Chỉ thông điệp hoàn chỉnh mới được kiểm tra tính hợp lệ và chuyển đến lớp nghiệp vụ. Giữ lại các byte chưa hoàn chỉnh cho lần đọc tiếp theo; phân tích riêng từng thông điệp hoàn chỉnh mà không loại bỏ phần còn lại.
Đối với giao thức tùy chỉnh chứa dấu đồng bộ, độ dài, dữ liệu tải và tổng kiểm tra, hãy quy định rõ độ dài có bao gồm phần đầu hay không, thứ tự byte, kích thước tối đa cho phép và phạm vi dữ liệu được tính tổng kiểm tra. Sơ đồ sử dụng định dạng giả định để giải thích, không phải giao thức FCTEL. Khi triển khai, hãy dùng giao thức thực tế của thiết bị, giới hạn sự tăng trưởng của bộ đệm và từ chối các độ dài không thể hợp lệ. Xác định cách đồng bộ lại sau khi kiểm tra tính hợp lệ thất bại để một byte lỗi không làm lệch toàn bộ các thông điệp tiếp theo.
Giao thức dựa trên dấu phân cách phải xử lý cơ chế thoát hoặc các giá trị dấu phân cách nằm trong dữ liệu tải nhị phân. Giao thức có độ dài cố định phải tính đến các loại thông điệp có độ dài khác nhau. Đối với giao thức nối tiếp dựa trên định thời, cần phân biệt khoảng thời gian quan sát trên đường truyền nối tiếp với thời điểm dữ liệu đến mà ứng dụng mạng nhìn thấy. Việc lưu đệm và lập lịch có thể làm thay đổi các khoảng thời gian đó; khoảng cách giữa các lần đọc TCP không mặc nhiên là khoảng cách giữa các khung nối tiếp ban đầu.
Thời gian chờ đóng gói thay đổi điều gì
Thời gian chờ dài hơn có thể gộp nhiều byte nối tiếp hơn trước khi chuyển đi và giảm chi phí phụ của các lần truyền nhỏ, nhưng có thể làm chậm byte đầu tiên. Thời gian chờ ngắn hơn có thể chuyển tiếp byte sớm hơn và khiến ứng dụng nhận nhiều phần thông điệp chưa hoàn chỉnh hơn. Cả hai đều không thay thế việc phân tích cú pháp đúng. Hãy tối ưu độ trễ nghiệp vụ và tính toàn vẹn thay vì yêu cầu mỗi lần đọc phải có đúng một thông điệp.
Đối với giao tiếp yêu cầu–phản hồi, hãy xem xét riêng thời gian xử lý của thiết bị, truyền nối tiếp, lưu đệm tại máy chủ, thời gian khứ hồi mạng và lập lịch ứng dụng. Dùng các thử nghiệm có kiểm soát để đặt thời gian chờ bao quát các giai đoạn này. Cơ chế thử lại phải tuân thủ ngữ nghĩa nghiệp vụ: xác định xem các lệnh ghi hoặc lệnh thực hiện thao tác có an toàn khi lặp lại hay không, thay vì gửi lại mù quáng vô thời hạn sau khi hết thời gian chờ.
Thử nghiệm nghiệm thu phải bao quát nội dung, thời gian và khả năng khôi phục
Sử dụng số thứ tự và độ dài dễ nhận biết trong các thử nghiệm có kiểm soát. Bao quát các thông điệp đơn lẻ, thông điệp liên tiếp, đầu vào phân mảnh, dữ liệu tải dài và các khoảng dừng ngắn. Chạy cùng bộ phân tích cú pháp với các kích thước đọc được chủ động thay đổi, rồi kiểm tra số lượng thông điệp cuối cùng, thứ tự, dữ liệu tải và kết quả kiểm tra tính hợp lệ. Cách này cung cấp bằng chứng thuyết phục hơn một cửa sổ terminal chỉ trông có vẻ bình thường. Ghi lại các ví dụ làm đầu vào thử nghiệm, không phải số liệu đo của khách hàng.
Sau đó, thử nghiệm riêng các trường hợp định dạng nối tiếp không khớp, gián đoạn đường truyền lên, tắc nghẽn và kết nối lại. Phân biệt lỗi ký tự nối tiếp với truyền lại trên mạng, tràn bộ đệm với việc tách thông điệp bình thường, và hết thời gian chờ nghiệp vụ với lỗi toàn vẹn dữ liệu. Ghi lại số byte đầu vào, các thông điệp đã phân tích, nội dung còn lại trong bộ đệm, nguyên nhân lỗi và thời gian khôi phục; giữ lại các mốc thời gian tham chiếu dùng cho dữ liệu bắt gói và nhật ký nối tiếp.
Khi chọn máy chủ thiết bị nối tiếp FCTEL, hãy kiểm tra các giao diện thực tế, chế độ hoạt động, cơ chế điều khiển luồng và hành vi khi ngắt kết nối. Điểm phân biệt kỹ thuật cốt lõi là máy chủ kết nối và truyền tải dữ liệu, giao thức ứng dụng xác định thông điệp, còn bộ phân tích cú pháp tái tạo thông điệp qua các lần đọc. Phân định trách nhiệm rõ ràng giúp tránh nhầm hành vi bình thường của luồng dữ liệu với lỗi phần cứng.
Tài liệu tham khảo kỹ thuật: IETF RFC 9293, dịch vụ luồng byte TCP. Tài nguyên FCTEL liên quan: Bài viết kỹ thuật và tài liệu sản phẩm máy chủ thiết bị nối tiếp (tiếng Trung).


