Tiếp theo bài viết trước, BKAII sẽ tiếp tục giới thiệu các bạn cách sử dụng chế độ Freeport trên S7-200...

Khởi động chế độ Freeport trên S7-200

Các ô nhớ chuyên dụng 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:

Port 0 Port 1 Mô tả

Ô nhớ

SMB30

Ô nhớ

SMB130

 

SM30.6

SM30.7

SM130.6

SM130.7

pp : Chọn bit chẵn lẻ (parity)

00 = no parity

01 = even parity (parity chẵn)

10 = no parity

11 = odd parity (parity lẻ)

SM30.5 SM130.5

d : số bit dữ liệu trong 1 ký tự

0 = 8 bit cho 1 ký tự

1 = 7 bit cho 1 ký tự

SM30.2

đến

SM30.4

SM130.2 đến

SM130 .4

bbb: tốc độ truyền của chế độ Freeport

000 = 38400 baud (1920 baud đối với CPU 212)

001 = 19200 baud

010 = 9600 baud

011 = 4800 baud

100 = 2400 baud

101 = 1200 baud

110 = 600 baud

111 = 300 baud

SM30.0 và

SM30.1

SM130.0

SM130.1

mm : chọn giao thức .

00 = PPI chế độ slave

01 = chế độ Freeport

10 = PPI chế độ master

11 = dự trữ (mặc định là PPI chế độ slave)

 

Đố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.

 Transmit (XMT) và Receive (RCV)

Các lệnh Transmit và Receive được dùng để truyền và nhận dữ liệu ở chế độ Freeport. 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

Byte trạng thái nhận thông điệp:

n: 1 = thông điệp kết thúc do lệnh dừng của người sử dụng

r: 1 = thông điệp kết thúc: lỗi ở các thông số vào hoặc thiếu

các điều kiện bắt đầu hoặc kết thúc thông điệp..

e: 1 = Nhận được ký tự kết thúc

t: 1 = Thông điệp kết thúc do quá thời gian.

c: 1 = Thông điệp kết thúc do đã nhận được số ký tự tối đa.

p: 1 = Thông điệp kết thúc do lỗi parity

SMB87

SMB187

en Sc Ec Il c/m Tmr C Bk 0
Byte điều khiển nhận thông điệp

cn:     0 = không cho phép chức năng nhận

1 = Cho phép chức năng nhận .

Bit này được kiểm tra mỗi lần lệnh RCV được thực hiện

sc:     0 = Bỏ qua byte SMB88 hoặc SMB188

1= Sử dụng giá trị các byte SMB88 hoặc SMB188 để xác định khởi đầu thông điệp

il:      0 = Bỏ qua byte SMW90 hoặc SMW190

1= Sử dụng giá trị các byte SMW90 hoặc SMW 190 để xác định trạng thái nghỉ của đường truyền

c/m:   0 = Khoảng định thời là giữa các ký tự (inter – character timer)

1 = Khoảng định thời là của thông điệp (message timer)

tmr:   0 = bỏ qua SMW92 hoặc SMW192

1 = kết thúc nhận nếu vượt quá khoảng định thời trong SMW92 hay SMW192

bk:     0 = bỏ qua trạng thái dừng (break conditions)

1 = Sử dụng trạng thái dừng như khởi đầu của thông điệp. Các bit của byte điều khiển được sử dụng để định nghĩa các tham số dùng để nhận dạng thông điệp. Để xác định khởi đầu của thông điệp, các điều kiện bắt đầu thông điệp được AND luận lý và phải xuất hiện nối tiếp nhau (trạng thái nghỉ của đường truyền và ký tự bắt đầu ngay tiếp theo hoặc trạng thái dừng và ký tự bắt đầu ngay tiếp theo). Kết thúc của thông điệp được xác định bằng cách OR luận lý các điều kiện kết thúc thông điệp. Công thức để xác định điều kiện bắt đầu và kết thúc như sau:

Bắt đầu thông điệp = il *sc + bk *sc

Kết thúc thông điệp = ec + tmr + nhận được số ký tự tối đa

Một số ví dụ xác định điều kiện bắt đầu thông điệp:

1. Trạng thái nghỉ của đường truyền:

il = 0 ; sc = 0; bk = 0 ; SMW90 >0

2. Ký tự bắt đầu:

il = 0 ; sc = 1; bk = 0 ; bỏ qua SMW90

3. Trạng thái dừng:

il = 0 ; sc = 1; bk = 1 ; bỏ qua SMW90

4. Bất kỳ tín hiệu trả lời nào :

il = 1 ; sc = 0; bk = 0 ; SMW90 =0

(Thời gian định thời của thông điệp có thể được dùng để

kết thúc nhận thông điệp nếu không có tín hiệu trả lời )

5. Trạng thái dừng và ký tự bắt đầu:

il = 0 ; sc = 1; bk = 1 ; bỏ qua SMW90

6. Trạng thái nghỉ của đường truyền và ký tự bắt đầu:

il = 1 ; sc = 1; bk = 0 ; SMW90 >0

SMB88 SMB188 Ký tự bắt đầu thông điệp
SMB89 SMB189 Ký tự kết thúc thông điệp

SMB90

SMB91

SMB190

SMB191

Khoảng thời gian nghỉ của đường truyền tính bằng ms. Ký tự đầu tiên nhận được sau khoảng thời gian này bắt đầu 1 thông điệp mới. SMB90 (SMB190) là byte cao và SMB91 (SMB191) là byte thấp.

SMB92

SMB93

SMB192

SMB193

Khoảng thời gian giới hạn giữa các ký tự trong thông điệp hoặc của cả thông điệp tính bằng ms. Nếu khoảng thời gian này bị vượt quá, việc nhận thông điệp sẽ kết thúc. SMB92 (SMB192) là byte cao và SMB93 (SMB193) là byte thấp.
SMB94 SMB194

Số ký tự lớn nhất có thể nhận (từ 1 đến 255 byte)

Lưu ý: Giá trị này cần được đặt bằng kích thước lớn nhất có thể

của bộ đệm cả khi không được sử dụng làm điều kiện kết thúc

thông điệp

 

Đến đây, BKAII xin tạm dừng phần hướng dẫn truyền thông giữa PLC S7-200 thông qua Freeport, chúc các bạn thực hành thành thạo và có nhiều giải pháp hay.

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 BKAII để được tư vấn miễn phí!

Xem thêm:

"BKAII - Thiết bị truyền thông TỐT nhất với giá CẠNH TRANH nhất!"


Bài viết mới cập nhật...

 
 

Số lượng người đang truy cập...

Đang có 928 khách và không thành viên đang online