TÌM HIỂU VỀ BỘ ĐẾM TỐC ĐỘ CAO TRONG PLC S7-200
1. Định nghĩa bộ đếm tốc độ cao ( High-speed counter defination ) :
Lệnh dùng định nghĩa bộ đếm tốc độ cao HDEF(High speed counter Defination) sẽ
cho phép chọn chế độ hoạt động của một bộ đếm tốc độ cao cụ thể (HSCx). Chế độ
hoạt động sẽ quyết định xung vào, chiều đếm, tín hiệu bắt đầu, và chức năng reset của
một bộ đếm tốc độ cao.
Bạn sử dụng một lệnh định nghĩa bộ đếm tốc độ cao cho mỗi bộ đếm tốc độ cao.
Các điều kiện gây ra lỗi sẽ set bit ENO = 0
0003 ( đầu vào xung đột )
0004 ( lệnh trong chương trình ngắt không hợp lệ )
000A ( bộ đếm cần được định nghĩa lại )
2. Bộ đếm tốc độ cao ( High speed counter – HSC ) :
Lệnh khai báo bộ đếm tốc độ cao HSC cấu hình và điều khiển bộ đếm tốc độ cao nhờ
vào các bit nhớ đặc biệt của bộ đếm tốc độ cao đó. Tham số N chỉ ra bộ đếm tốc độ
cao đang sử dụng là bộ đếm bao nhiêu. Bộ đếm tốc độ cao có thể được cấu hình lên
tới 12 chế độ hoạt động khác nhau (tham khảo bảng 6-26)
Mỗi bộ đếm được cung cấp đầu vào cho xung clock, điều khiển hướng đếm, tín hiệu
reset và bắt đầu mà bộ đếm đó hỗ trợ. Đối với những bộ đếm 2 pha thì cả hai đầu vào
xung có thể chạy ở tốc độ cực đại của chúng. Trong chế độ nhân tốc thì bạn có thể
chọn chế độ nhân 1 hoặc nhân 4 tốc độ cực đại. Tất cả các bộ đếm chạy ở tốc độ cực
đại mà không ảnh hưởng tới bộ đếm khác.
Điều kiện gây ra lỗi sẽ set ENO = 0
0001 ( lệnh HSC đặt trước HDEF )
0005 ( sử dụng đồng thời HSC/PLS )
Bộ đếm tốc độ cao đếm các sự kiện mà tốc độ của nó vượt khỏi tầm kiểm soát của
vòng quét S7-200. Tấn số đếm lớn nhất có thể của bộ đếm tùy thuộc vào loại CPU mà
bạn sử dụng. CPU 221 và CPU 222 hỗ trợ 4 bộ đếm tốc độ cao : HSC0, HSC3, HSC4
và HSC5. Hai loại CPU này không hỗ trợ bộ đếm HSC2 và HSC1. CPU 224, CPU
224XP và CPU 226 hỗ trợ cả 6 loại bộ đếm tốc độ cao từ HSC0 đến HSC5.
Về cơ bản thì bộ đếm tốc độ cao hoạt động tương tự như nguyên lý cơ bản của bộ
đếm trong S7-200. Ở đây có thể tưởng tượng rằng một encoder sẽ cung cấp đầu vào
Bạn có thể dùng HSC winzard để cấu hình cho bộ đếm tốc độ cao. HSC winzard sử
dụng các thông tin: loại và chế độ hoạt động của bộ đếm, giá trị đặt trước của bộ đếm,
giá trị tức thời của bộ đếm và khởi tạo hướng đếm. Để sử dụng HSC winzard bạn vào
Tool Instruction Winzard HSC
Để lập trình được một bộ đếm tốc độ cao bạn cần làm những bước sau đây:
1. Chỉ định bộ đếm và chọn chế độ đếm
2. Thiết lập byte điều khiển
3. Nạp giá trị bắt đầu cho bộ đếm ( starting value )
4. Nạp giá trị đặt trước cho bộ đếm ( target value )
5. Gán và cho phép chương trình ngắt
6. Khởi động bộ đếm ( tích cực bộ đếm )
I. Chỉ định chế độ hoạt động và các đầu vào :
Sử dụng lệnh định nghĩa bộ đếm tốc độ cao HDEF để chọn chế độ đếm (mode) và các
đầu vào sử dụng.
Bảng 6-26 mô tả các đầu vào sử dụng cho xung clock, điều khiển hướng và điều khiển
bắt đầu được gắn với mỗi bộ đếm cụ thể. Cùng một đầu vào không thể được sử dụng
cho hai chức năng khác nhau, nhưng nếu có bất kỳ đầu vào nào không được dùng bởi
chế độ hoạt động hiện thời của bộ đếm thì có thể được sử dụng cho các mục đích
khác. Ví dụ : nếu HSC0 hoạt động ở mode 1, điều này có nghĩa là I0.0 và I0.2, I0.1 có
thể được sử dụng cho các ngắt cạnh xung hoặc có thể được sử dụng cho HSC3.
Tip: Chú ý rằng tất cả các chế độ hoạt động của HSC0 ( trừ mode 12 ) luôn luôn sử
dụng I0.0 và tất cả HSC4 luôn luôn sử dụng I0.3, vì vậy những đầu vào này không
bao giờ được phép sử cho các yêu cầu khác khi các bộ đếm này được sử dụng.
Ví dụ cho chế độ đếm của HSC :
- Giản đồ thời gian ở hình 6-22 đến 6-26 biểu diễn chức năng khác
nhau của các bộ đếm tùy thuộc vào chế độ hoạt động của nó
Hình 6-22 biểu diễn HSC hoạt động ở mode 0, 1 hoặc 2. Ở đây giá trị bắt đầu được
nạp là 0, giá trị đặt trước là 4, hướng đếm được set là đếm lên và bit cho phép bộ đếm
được tích cực. Khi giá trị đếm tức thời bằng giá trị đặt trước thì ngắt xảy ra và trong
chương trình ngắt ta thực hiện việc thay đổi hướng đếm cho counter vì vậy sau ngắt
giá trị bắt đầu và giá trị đặt trước được nạp tương ứng là 0 và 9, hướng đếm lên và bit
cho phép được tích cực. Với các mode đếm này ta đếm sự kiện ở đầu vào A và B với
tốc độ nhân 4. Nghĩa là với một xung ở A và một xung ở B ta sẽ có được số đếm là 4
như trong hình vẽ. Cũng giống như ở chế độ quadrate nhân 1x thì tùy vào sự xuất hiện
của xung ở A hay B trước mà bộ đếm sẽ đếm lên hay xuống. Cũng có ngắt được phát
sinh khi giá trị đếm bằng giá trị đặt.
Hoạt động của tín hiệu Reset và tín hiệu Start :
Hoạt động của tín hiệu Reset và tín hiệu Start được biểu diễn cụ thể trong hình 6-27
và nó được áp dụng cho tất cả các chế độ hoạt động có sử dụng đầu vào tín hiệu Reset
và Start. Trong hình tất cả các tín hiệu đầu vào Start và Reset đều được cho tích cực ở
mức cao.
Ở hình phía bên tay trái là chế độ hoạt động chỉ với tín hiệu Reset. Giá trị đếm của bộ
đếm sẽ trong khoảng -2.147.483.648 +2.147.483.648 khi đầu vào Reset đang ở
mức không tích cực (0). Khi đầu vào Reset được tích cực (1) thì một ngắt reset được
phát sinh và giá trị bộ đếm được xóa về 0 và sẽ tiếp tục giữ giá trị 0 khi mà tín hiệu
reset còn tích cực (1). Khi chân tín hiệu reset được vô hiệu hóa (0) thì giá trị bộ đếm
sẽ nằm trong khoảng -2.147.483.648 +2.147.483.648.
Ở hình phía bên tay phải biểu diễn chế độ hoạt động với cả hai tín hiệu Reset và
Start. Sẽ có các trường hợp sau có thể xảy ra :
- Start không tích cực (0) : thì giá trị bộ đếm sẽ không thay đổi bất chấp giá trị
của tín hiệu Reset
- Tín hiệu Start tích cực (1) : khi tín hiệu Start tích cực bộ đếm bắt đầu đếm và
giá trị thay đổi và giá trị bộ đếm trong khoảng -2.147.483.648 +2.147.483.648 nếu
chân Reset là không tích cực (0) và sẽ là 0 nếu chân Reset tích cực (1). Nếu chân
Reset tích cực thì giá trị bộ đếm xóa về 0 và có ngắt phát sinh.
Có tất cả 4 bộ đếm mà chúng có 3bit điều khiển được sử dụng để cấu hình trạng thái
tích cực cho tín hiệu đầu vào Reset và Start của bộ đếm và để cấu hình chế độ đếm 1x
hoặc 4x ( dành cho quadrate mode ). Các bit này nằm trong byte điều khiển và được
sử dụng khi lệnh HDEF được thực thi. Những bit này được mô tả trong bảng 6-27.
Tip: Bạn cần thiết lập các bit điều khiển này ở trạng thái mong muốn trước khi bạn
IV. Gán chương trình ngắt :
Tất cả các chế độ hoạt động của bộ đếm tốc độ cao đều cung cấp một sự kiện ngắt khi
giá trị tức thời của HSC bằng với giá đị được nạp trước của nó. Ở các chế độ hoạt
động với việc sử dụng tín hiệu reset từ bên ngoài thì có thêm một ngắt khi tín hiệu
reset được tích cực. Tất cả các chế độ hoạt động của bộ đếm tốc độ cao ngoại trừ
mode 0,1,2 cung cấp một sự kiện ngắt khi chiều đếm được thay đổi. Mỗi sự kiện ngắt
này có thể được cho phép hoặc cấm một cách riêng biệt nhau. Để có sự thảo luận kỹ
hơn về cách sử dụng các chương trình ngắt chúng ta cần tham khảo thêm tài liệu về
phần lệnh ngắt và lệnh giao tiếp.
Tip : Một lỗi nghiêm trọng có thể xảy ra nếu ta đồng thời nạp giá trị mới cho bộ đếm
hoặc cấm sau đó cho phép bộ đếm hoạt động trong khi thực thi chương trình ngắt của
ngắt ngoài với tín hiệu reset.
Byte trạng thái :
Byte trạng thái cho mỗi bộ đếm tốc độ cao sẽ cung cấp các bit nhớ nhằm xác định
hướng đếm và khi nào giá trị tức thời lớn hơn hoặc bằng với giá trị đặt trước. Bảng 6-
31 định nghĩa những bit trạng thái này cho mỗi bộ đếm cụ thể .
5. Các ví dụ về trình tự lập trình cho bộ đếm tốc độ cao :
HSC1 được sử dụng như một ví dụ mẫu cho các bài toán dưới đây. Việc khởi tạo
được thực hiện với giả thuyết rằng S7-200 vừa mới được thiết lập ở chế độ RUN vì
thế bit nhớ cho vòng quét đầu tiên đã tích cực. Trong các trường hợp khác, phải nhớ
rằng lệnh HDEF chỉ có thể được thực thi một lần cho mỗi bộ đếm tốc độ cao sau khi
đã chuyển sang chế độ RUN. Nếu ta thực thi HDEF cho một bộ đếm tốc độ cao 2 lần
thì một lỗi thồi gian thực sẽ xảy ra và nó sẽ không thay đổi thiết lập ban đầu của bộ
đếm.
Tip: mặc dù các ví dụ dưới đây chỉ ta cách chuyển hướng đếm, giá trị tức thời, giá trị
đặt trước một cách riêng lẻ nhau, nhưng bạn có thể thay đổi tất cả chúng hoặc kết hợp
chúng trong một lần thay đổi bằng cách thiết lập các giá trị ở byte SMB47 và sau đó
thực thi lệnh HSC.
Khởi tạo Mode 0,1 hoặc 2 :
Các bước được trình bày bên dưới mô tả cách thiết lập HSC1 ở chế độ đếm Single
reset (sự kiện ngắt số 15) cho một chương trình ngắt.
8. Thực thi lệnh ENI để cho phép các ngắt xảy ra
9. Thực thi lệnh HSC để S7-200 lập trình cho HSC1.
10. Thoát khỏi chương trình con.
Khởi tạo Mode 3,4 hoặc 5 :
Dưới đây là các bước thực hiện việc cấu hình cho HSC1 cho chế độ Single Phase
Up/Down Counter với tín hiệu điều khiển hướng bên ngoài (Mode 3,4 hoặc 5)
1. Sử dụng bit cho trạng thái on ở vòng quét đầu tien SM0.1 để gọi chương
trình con mà trong đó việc khởi tạo bộ đếm được tiến hành. Vì bạn sử
dụng một lệnh gọi chương trình con nên các vòng quét sau sẽ không gọi
chương trình con này nữa, điều này giúp giảm thiểu thời gian thực thi của
một vòng quét đồng thời cho ta một chương trình có cấu trúc tốt
2. Trong chương trình con ta nạp cho byte điều khiển SMB47 giá trị tùy
thuộc vào chế độ mà ta muốn thiết lập. Ví dụ như :
SMB47 = 16#F8 sẽ cho ta kết quả như sau
- Cho phép bộ đếm
- Ghi một giá trị tức thời cho bộ đếm
- Ghi giá trị đặt trước cho bộ đếm
- Thiết lập hướng đếm cho HSC là đếm lên
- Thiết lập tín hiệu Reset và Start tích cực ở mức cao
3. Thực thi lệnh HDEF với đầu vào của HSC được thiết lập là 1 và chế độ
hoạt động MODE được thiết lập theo một trong các lựa chọn sau : 3 (cho
chế độ không cho phép Reset và Start bên ngoài), 4(cho phép Reset bên
ngoài nhưng không cho phép Start), 5 ( cho phép cả Start và Reset bên
ngoài)
4. Nạp cho SMD48 (giá trị ở dạng double word) với giá trị bắt đầu mong
muốn ( nạp giá trị 0 nếu muốn xóa)
5. Nạp cho SMD52 (giá trị ở dạng double word) với giá trị đặt trước mong
muốn.
6. Để có thể biết được khi nào giá trị tức thời bằng giá trị đặt trước ta lập
hoạt động MODE được thiết lập theo một trong các lựa chọn sau : 6 (cho
chế độ không cho phép Reset và Start bên ngoài), 7(cho phép Reset bên
ngoài nhưng không cho phép Start), 8 ( cho phép cả Start và Reset bên
ngoài)
4. Nạp cho SMD48 (giá trị ở dạng double word) với giá trị bắt đầu mong
muốn ( nạp giá trị 0 nếu muốn xóa)
5. Nạp cho SMD52 (giá trị ở dạng double word) với giá trị đặt trước mong
muốn.
6. Để có thể biết được khi nào giá trị tức thời bằng giá trị đặt trước ta lập
trình một chương trình ngắt bằng cách gán một ngắt bằng sự kiện ngắt khi
CV=PV (sự kiện ngắt số 13) cho một chương trình ngắt. Tham khảo thêm
phần hướng dẫn chương trình ngắt để có thêm thông tin chi tiết về xử lý
ngắt.
7. Để có thể phát hiện sự thay đổi hướng đếm ta cần lập trình một chương
trình ngắt bằng cách gán sự kiện ngắt khi hướng đếm thay đổi (sự kiện
ngắt thứ 14) cho một chương trình ngắt.
8. Để có thể phát hiện được một sự kiện reset bên ngoài xảy ra ta cần lập
trình một chương trình ngắt bằng cách gán sự kiện ngắt ngoài ở tín hiệu
reset (sự kiện ngắt số 15) cho một chương trình ngắt.
9. Thực thi lệnh ENI để cho phép các ngắt xảy ra
10. Thực thi lệnh HSC để S7-200 lập trình cho HSC1.
11. Thoát khỏi chương trình con.
Khởi tạo Mode 9,10 hoặc 11 :
Các bước thực hiện dưới đây mô tả cách cấu hình bộ đếm HSC1 với chế độ hoạt động
A/B Phase Quadrate Counter (Mode 9,10 hoặc 11)
1. Sử dụng bit cho trạng thái on ở vòng quét đầu tien SM0.1 để gọi chương
trình con mà trong đó việc khởi tạo bộ đếm được tiến hành. Vì bạn sử
dụng một lệnh gọi chương trình con nên các vòng quét sau sẽ không gọi
chương trình con này nữa, điều này giúp giảm thiểu thời gian thực thi của
một vòng quét đồng thời cho ta một chương trình có cấu trúc tốt
ngắt thứ 14) cho một chương trình ngắt.
8. Để có thể phát hiện được một sự kiện reset bên ngoài xảy ra ta cần lập
trình một chương trình ngắt bằng cách gán sự kiện ngắt ngoài ở tín hiệu
reset (sự kiện ngắt số 15) cho một chương trình ngắt.
9. Thực thi lệnh ENI để cho phép các ngắt xảy ra
10. Thực thi lệnh HSC để S7-200 lập trình cho HSC1.
11. Thoát khỏi chương trình con.
Khởi tạo Mode 12 :
Các bước thực hiện dưới đây mô tả cách cấu hình bộ đếm HSC0 với chế độ hoạt động
đếm xung do bộ phát xung PTO0 phát ra (Mode 12)
1. Sử dụng bit cho trạng thái on ở vòng quét đầu tien SM0.1 để gọi chương
trình con mà trong đó việc khởi tạo bộ đếm được tiến hành. Vì bạn sử
dụng một lệnh gọi chương trình con nên các vòng quét sau sẽ không gọi
chương trình con này nữa, điều này giúp giảm thiểu thời gian thực thi của
một vòng quét đồng thời cho ta một chương trình có cấu trúc tốt
2. Trong chương trình con ta nạp cho byte điều khiển SMB37 giá trị tùy
thuộc vào chế độ mà ta muốn thiết lập. Ví dụ như :
SMB37 = 16#F8 sẽ cho ta kết quả như sau
- Cho phép bộ đếm :
- Ghi một giá trị tức thời cho bộ đếm
- Ghi giá trị đặt trước cho bộ đếm
- Thiết lập hướng đếm cho HSC là đếm lên
- Thiết lập tín hiệu Reset và Start tích cực ở mức cao
3. Thực thi lệnh HDEF với đầu vào của HSC được thiết lập là 0 (bộ đếm 0)
và chế độ hoạt động MODE được thiết lập 12 (mode 12)
4. Nạp cho SMD38 (giá trị ở dạng double word) với giá trị bắt đầu mong
muốn ( nạp giá trị 0 nếu muốn xóa)
5. Nạp cho SMD42 (giá trị ở dạng double word) với giá trị đặt trước mong
muốn.
6. Để có thể biết được khi nào giá trị tức thời bằng giá trị đặt trước ta lập
1. Nạp cho SMB47 giá trị để có thể thực hiện việc nạp
SMB47 = 16#A0 Cho phép bộ đếm ghi giá trị đặt trước mới
2. Nạp cho SMD52 một giá trị đặt trước mong muốn
3. Thực thi lệnh HSC để S7-200 lập trình cho bộ đếm HSC1
Cấm bộ đếm tốc độ cao (bất kỳ mode nào)
Các bước thực hiện dưới đây sẽ cấm HSC1 (có thể áp dụng ở mọi chế độ)
1. Nạp cho SMB47 giá trị để cấm bộ đếm
SMB47 = 16#00 Cấm bộ đếm
2. Thực thi lệnh HSC để cấm bộ đếm
Ví dụ lập trình bộ đếm tốc độ cao :
Ví dụ khởi tạo HSC0 hoạt động ở Mode 0:
Chương trình chính :
Chương trình con khởi tạo HSC0 ở Mode0
Ví dụ khởi tạo HSC1 hoạt động ở Mode 0 :
Chương trình chính :
Chương trình con khởi tạo HSC1 hoạt động ở mode 0
class="bi x3 y8c w6 h7"