Tiếp theo bài viết trước, chúng tôi sẽ tiếp tục giới thiệu các bạn cách sử dụng chế độ Freeport trên S7-200…
Nội dung bài viết
Hướng dẫn khởi động Freeport mode
Như bài trước đã nhắc đến, các byte nhớ đặc biệt SMB30 và SMB130 được dùng để cấu hình cho port 0 và port 1 hoạt động ở chế độ Freeport, đồng thời cho phép chọn tốc độ truyền, bit chẵn/lẻ và số bit dữ liệu. Các byte điều khiển này được mô tả như bảng dưới đây:
Đối với port 0, một bit stop được thiết lập cho tất cả các cấu hình ngoại trừ trường hợp 7 bit dữ liệu không có parity, trường hợp này có 2 bit stop. Đối với port 1, một bit stop được thiết lập cho tất cả các cấu hình.
CHI TIẾT VỀ CÁC LỆNH ĐIỀU KHIỂN TRUYỀN THÔNG PORT
Transmit (XMT) và Receive (RCV)
Lệnh truyền ( Transmit intruction-XMT) và ngắt truyền : Lệnh truyền cho phép S7-200 truyền lên đến 255 ký tự thông qua cổng COM. Ngắt truyền thông báo cho chương trình trong PLC S7-200 khi truyền thông hoàn tất.
Lệnh nhận (Receive intruction- RCV): Lệnh nhận ký tự được truyền vào thông qua cổng COM sau đó ngắt cho chương trình khi nhận hoàn tất. ta dùng vùng nhớ SM để cấu hình lệnh RCV để khởi động và dừng dựa trên ký tự đặc biệt hay một khoảng thời gian on.
Các lệnh này có cú pháp như sau:
Lệnh XMT thực hiện truyền dữ liệu trong bộ đệm dữ liệu (data buffer) TBL. Phần tử đầu tiên trong bộ đệm xác định số byte cần truyền, PORT xác định cổng truyền thông sử dụng để truyền.Lệnh RCV khởi đầu hoặc kết thúc một dịch vụ nhận thông điệp (Receive Message Service). Điều kiện bắt đầu và kết thúc thông điệp cần được định nghĩa để dịch vụ nhận thông điệp có thể hoạt động. Các thông điệp nhận được thông qua cổng chỉ định PORT được lưu trong bộ đệm dữ liệu TBL. Byte đầu tiên trong bộ đệm dữ liệu xác định số byte nhận được.
Các thông số sử dụng trong các lệnh XMT và RCV:
Vào / Ra | Tóan hạng | Kiểu dữ liệu |
TABLE | VB, IB, QB, MB, SB, SMB, *VD , *AC | BYTE |
PORT | 0 hoặc 1 | BYTE |
Lệnh XMT cho phép gởi 1 bộ đệm gồm 1 hoặc nhiều ký tự, tối đa là 255 ký tự. Sau khi ký tự cuối cùng của bộ đệm được truyền, một ngắt phát (ngắt số 9 đối với port 0 , ngắt số 26 đối với port 1) sẽ được tạo ra nếu 1 thủ tục xử lý ngắt (interrupt routine) được gắn với sự kiện hoàn tất truyền dữ liệu (transmit completed event). Có thể thực hiện truyền dữ liệu mà không sử dụng ngắt (ví dụ khi truyền dữ liệu đến máy in) bằng cách theo dõi các bit SM4.5 hoặc SM4.6 để phát hiện việc truyền dữ liệu đã hoàn tất hay chưa. Dạng bộ đệm dữ liệu của lệnh XMT như sau
Count | M | E | S | S | A | G | E |
Với:
Count : số byte cần truyền
ME …: các ký tự trong thông điệp
Sử dụng ngắt điều khiển ký tự (Character Interrupt Control) để nhận dữ liệu
Lệnh RCV cho phép nhận 1 hoặc nhiều ký tự, tối đa là 255 ký tự. Sau khi nhận được ký tự cuối cùng, một ngắt thu ( ngắt 23 đối với port 0 và ngắt 24 đối với port 1) được tạo ra nếu có một thủ tục xử lý ngắt được gắn với sự kiện hoàn tất nhận dữ liệu (receive message complete event). Có thể nhận dữ liệu không dùng đến ngắt bằng cách theo dõi ô nhớ SMB86. Ô nhớ SMB86 sẽ khác 0 khi chức năng nhận dữ liệu không tích cực hoặc việc nhận dữ liệu đã kết thúc. Ô nhớ này bằng 0 khi đang nhận dữ liệu. Bộ đệm dữ liệu của lệnh RCV có dạng như sau:
Count | star char | M | E | S | S | A | G | E | end char |
Với Count: Số byte nhận được
Star char : ký tự bắt đầu.
M …E : các ký tự của thông điệp.
End char : ký tự kết thúc.
Để lệnh RCV có thể hoạt động, cần phải định nghĩa điều kiện bắt đầu và kết thúc một thông điệp. Các ô nhớ chuyên dụng từ SMB86 đến SMB94 (đối với port 0) và từ SMB186 đến SMB194 ( đối với port 1) được sử dụng để định nghĩa các điều kiện này. Cần lưu ý rằng chức năng nhận dữ liệu tự động kết thức khi có lỗi parity hoặc lỗi tràn (overrun).
Để linh hoạt trong hỗ trợ giao thức, có thể sử dụng ngắt điều khiển ký tự để nhận dữ liệu. Mỗi ký tự nhận được đều làm phát sinh một ngắt. Ký tự nhận được được đặt trong ô nhớ SMB2 và trạng thái parity (nếu có sử dụng) được đặt ở bít SM3.0 ngay trước khi thủ tục xử lý ngắt gắn với sự kiện nhận ký tự được thực thi. Các ô nhớ SMB2 và SMB3 được chia sẻ giữa port 0 và port 1. Khi nhận được 1 ký tự ở port 0, ngắt gắn với sự kiện này (ngắt số 8) được thực thi, SMB2 chứa ký tự nhận được ở port 0 và SMB3 chứa trạng thái parity của ký tự đó. Khi nhận được 1 ký tự ở port 1, thủ tục ngắt gắn với sự kiện này (ngắt 25) được thực thi, SMB2 chứa ký tự nhận được ở port 1 và SMB3 chứa trạng thái parity của ký tự đó.
Port 0 | Port 1 | Mô tả | ||||||||||
SMB86 | SMB186 |
|
||||||||||
SMB87 | SMB187 |
|
||||||||||
SMB88 | SMB188 |
|
||||||||||
SMB89 | SMB189 |
|
||||||||||
SMB90
SMB91 |
SMB190
SMB191 |
|
||||||||||
SMB92
SMB93 |
SMB192
SMB193 |
|
||||||||||
SMB94 | SMB194 |
|
Đến đây, Chúng tôi xin tạm dừng phần hướng dẫn truyền thông giữa PLC S7-200 thông qua Freeport. Mong rằng bài viết này sẽ hỗ trợ phần nào cho những khúc mắc của các bạn.
Mọi thông tin chi tiết về giải pháp và sản phẩm, xin vui lòng liên hệ với chúng tôi để được tư vấn miễn phí!
Bình luận