Cấu hình giao tiếp Point-to-Point (PtP) trên S7-1200
PLC13 tháng 7, 2026· 11 phút đọc · 2 lượt xem

Cấu hình giao tiếp Point-to-Point (PtP) trên S7-1200

Hướng dẫn cấu hình giao tiếp Point-to-Point (PtP) trên S7-1200: cổng RS232/RS485, lệnh SEND_PTP, RCV_PTP và ví dụ thực tế.

Không phải thiết bị ngoại vi nào cũng hỗ trợ các giao thức tiêu chuẩn như USS hay Modbus. Với máy in, đầu đọc mã vạch, đầu đọc RFID, camera/vision hệ thứ ba, modem radio, thiết bị GPS... bạn thường cần một giao thức tự định nghĩa để trao đổi dữ liệu dạng ký tự. Đây chính là lúc giao tiếp Point-to-Point (PtP) trên S7-1200 phát huy tác dụng.

1. PtP là gì?

PtP là hình thức giao tiếp nối tiếp dựa trên UART tiêu chuẩn, cho phép CPU S7-1200 gửi/nhận dữ liệu dạng ký tự qua các module giao tiếp RS232, RS422/RS485 (CM 1241) hoặc board RS485 (CB 1241). Đây là nền tảng chung mà cả giao thức USS lẫn Modbus trên S7-1200 cũng được xây dựng dựa trên đó.

Điểm mạnh của PtP là tính linh hoạt tối đa — bạn có thể tự thiết kế giao thức trao đổi dữ liệu riêng, phù hợp với bất kỳ thiết bị nào hỗ trợ giao tiếp nối tiếp. Đổi lại, PtP đòi hỏi phải lập trình xử lý giao thức khá chi tiết trong chương trình người dùng, không có sẵn thư viện xử lý như USS hay Modbus.

Theo tài liệu, PtP thường được dùng cho ba nhóm ứng dụng chính:

  • Gửi dữ liệu trực tiếp đến thiết bị ngoại vi như máy in

  • Nhận dữ liệu từ các thiết bị như đầu đọc mã vạch, đầu đọc RFID, camera/vision hệ thứ ba

  • Trao đổi hai chiều với các thiết bị như GPS, modem radio, camera hệ thứ ba

2. Hai nhóm lệnh dùng cho PtP

STEP 7 cung cấp các lệnh mở rộng để lập trình PtP, chia thành hai nhóm:

Nhóm lệnh cấu hình (Configuration instructions):

  • PORT_CFG — cấu hình thông số cổng (baud rate, parity...)

  • SEND_CFG — cấu hình thông số gửi dữ liệu

  • RCV_CFG — cấu hình thông số nhận dữ liệu

Nhóm lệnh giao tiếp (Communication instructions):

  • SEND_PTP — gửi dữ liệu qua cổng

  • RCV_PTP — nhận dữ liệu từ cổng

  • RCV_RST — reset bộ đệm nhận

  • SGN_GET / SGN_SET — đọc/ghi các tín hiệu RS232 cụ thể (RTS, DTR, DSR)

Bạn có thể cấu hình cổng theo hai cách:

  1. Qua Device configuration trong STEP 7 — thiết lập được lưu trong CPU, áp dụng lại sau mỗi lần mất điện hoặc chuyển từ RUN sang STOP.

  2. Qua lệnh PORT_CFG/SEND_CFG/RCV_CFG trong chương trình — thiết lập chỉ có hiệu lực khi CPU đang RUN, sẽ quay về thiết lập gốc trong Device configuration sau khi CPU chuyển sang STOP hoặc mất điện.

Tất cả các lệnh PtP hoạt động bất đồng bộ (asynchronous). SEND_PTP và RCV_PTP có thể chạy đồng thời, và bộ đệm gửi/nhận của module có dung lượng tối đa 1024 byte.

3. Kiến trúc polling: cách chương trình theo dõi trạng thái gửi/nhận

Vì các lệnh PtP hoạt động bất đồng bộ, chương trình phải gọi các lệnh này liên tục theo chu kỳ (polling) để kiểm tra trạng thái. Tài liệu mô tả hai kịch bản điển hình:

Với vai trò master:

  1. Gọi SEND_PTP để bắt đầu gửi yêu cầu.

  2. Tiếp tục gọi SEND_PTP ở các vòng quét sau để kiểm tra khi nào gửi xong.

  3. Khi gửi hoàn tất, chuẩn bị nhận phản hồi.

  4. Gọi RCV_PTP liên tục để chờ phản hồi từ thiết bị.

  5. Xử lý dữ liệu nhận được, sau đó quay lại bước 1.

Với vai trò slave:

  1. Gọi RCV_PTP ở mỗi vòng quét để chờ yêu cầu từ master.

  2. Khi nhận được yêu cầu, xử lý và tạo phản hồi.

  3. Gọi SEND_PTP để gửi phản hồi về master.

  4. Lặp lại việc gọi SEND_PTP cho đến khi gửi xong, rồi quay lại bước 1.

Lưu ý quan trọng: Ở vai trò slave, chương trình phải gọi RCV_PTP đủ thường xuyên để nhận được dữ liệu từ master trước khi master bị timeout. Cách làm được khuyến nghị là gọi RCV_PTP từ một cyclic OB với chu kỳ đủ nhanh — lý tưởng là chu kỳ cho phép gọi 2 lần trong khoảng thời gian timeout của master, để đảm bảo không bỏ sót dữ liệu.

4. Cấu hình vật lý cổng RS232/RS485

Khi cấu hình cổng qua Device configuration, các thông số cần thiết lập gồm:

  • Baud rate

  • Parity (chẵn/lẻ/không)

  • Số bit dữ liệu mỗi ký tự

  • Số bit stop

  • Flow control (chỉ áp dụng cho RS232)

  • Wait time

Với module CM 1241 RS422/485, ngoài các thông số trên còn có thêm hai lựa chọn riêng:

  • Operating mode: chọn chế độ RS422 hay RS485 tùy theo cấu hình mạng.

  • Receive line initial state: chọn kiểu phân cực (bias) — không phân cực, phân cực thuận (forward bias), hoặc phân cực nghịch (reverse bias, dùng để phát hiện đứt cáp).

Quản lý flow control

Flow control giúp cân bằng tốc độ gửi/nhận để không bị mất dữ liệu. Module CM 1241 RS232 hỗ trợ cả flow control phần cứng lẫn phần mềm; CM/CB RS485 không hỗ trợ flow control; riêng chế độ RS422 của module CM 1241 RS422/485 hỗ trợ flow control phần mềm.

Với flow control phần cứng kiểu RTS switched, module chỉ truyền dữ liệu khi tín hiệu CTS đang active; nếu CTS không active trong thời gian chờ (wait time) đã cấu hình, module sẽ hủy việc truyền và báo lỗi về chương trình. Cách này phù hợp với các thiết bị như modem radio dùng tín hiệu RTS để kích hoạt máy phát — nhưng không phù hợp với modem điện thoại thông thường (nên dùng chế độ RTS always on cho trường hợp này).

5. Ví dụ thực tế: giao tiếp giữa S7-1200 và PC qua terminal emulator

Tài liệu đưa ra một ví dụ cụ thể: CPU S7-1200 giao tiếp với PC (qua terminal emulator như HyperTerminal) thông qua module CM 1241 RS232, với chương trình nhận ký tự từ PC rồi gửi ngược (echo) lại. Các bước chính gồm:

  1. Đấu nối phần cứng: Vì cả hai cổng RS232 (của CM 1241 và của PC) đều là thiết bị DTE, cần đảo chân 2 và 3 (dùng cáp NULL modem hoặc adapter NULL modem).

  2. Cấu hình module trong Device configuration: thiết lập thông số cổng, cấu hình gửi (transmit) và cấu hình nhận (receive) — ví dụ quy định bắt đầu nhận bản tin khi đường truyền im lặng tối thiểu 50 bit-time, và kết thúc bản tin khi gặp ký tự line feed hoặc đủ 100 byte.

  3. Lập trình chương trình STEP 7: tạo một Data Block toàn cục làm bộ đệm, dùng RCV_PTP để nhận dữ liệu và SEND_PTP để gửi phản hồi ngược lại.

  4. Cấu hình terminal emulator trên PC: đặt cổng COM1, baud 9600, 8 data bit, không parity, 1 stop bit, không flow control, giả lập terminal ANSI.

  5. Chạy thử: download chương trình xuống CPU ở chế độ RUN, kết nối terminal emulator, gõ ký tự và quan sát CPU gửi ngược lại đúng ký tự đã nhập.

6. Một số lưu ý khi triển khai PtP trong thực tế

  • Chọn đúng loại cáp/adapter khi dùng RS232 — quên đảo chân 2-3 là lỗi rất phổ biến khi đấu nối hai thiết bị DTE với nhau.

  • Đặt điều kiện kết thúc bản tin (receive message end) phù hợp với giao thức của thiết bị đối tác — ví dụ theo số byte cố định, theo ký tự kết thúc, hoặc theo khoảng lặng trên đường truyền.

  • Luôn dùng DB (instance data block) riêng cho mỗi lệnh PtP — điều này đảm bảo mỗi lệnh xử lý đúng trạng thái của tham số REQ, tránh xung đột khi có nhiều thiết bị giao tiếp cùng lúc.

  • Tính toán chu kỳ gọi RCV_PTP đủ nhanh ở vai trò slave — để không bỏ lỡ dữ liệu và tránh gây timeout phía master.

Kết luận

PtP là công cụ mạnh nhưng đòi hỏi người lập trình phải tự thiết kế và xử lý giao thức trao đổi dữ liệu — phù hợp khi thiết bị đối tác không hỗ trợ USS hay Modbus. Nắm vững kiến trúc polling, cách cấu hình cổng vật lý, và cách xử lý điều kiện bắt đầu/kết thúc bản tin sẽ giúp bạn triển khai PtP ổn định cho các ứng dụng đọc mã vạch, kết nối máy in, hay giao tiếp với các thiết bị đo lường tùy chỉnh.

Ở bài viết tiếp theo, chúng ta sẽ tìm hiểu cách sử dụng Web Server tích hợp trên S7-1200 để giám sát và điều khiển từ xa ngay trên trình duyệt.

Chưa biết chọn UPS công suất bao nhiêu?
Nhập danh sách thiết bị, công cụ sẽ tính tự động và gợi ý model phù hợp.
Tính công suất miễn phí

Cần tư vấn giải pháp UPS?

UPSsmart hỗ trợ tư vấn miễn phí, không ràng buộc.