đồ án đếm xung cho PLC s7 . xử lý tốc độ cao đồ án đếm xung cho PLC s7 . xử lý tốc độ cao đồ án đếm xung cho PLC s7 . xử lý tốc độ cao đồ án đếm xung cho PLC s7 . xử lý tốc độ cao đồ án đếm xung cho PLC s7 . xử lý tốc độ cao
Trang 1taitrancdt@gmail.com
Đếm xung tốc độ cao HSC
HSC: high speed count
Xung tốc độ cao được đọc thông qua những Modul đọc xung tốc độ cao hoặc có thể được đọc thông qua CPU có tích hợp sẵn những I/O có khả năng đọc xung tốc
độ cao như CPU 312C, 313C, …
Việc đọc xung tốc độ cao là hết sức cần thiết cho những ứng dụng đọc xung
Encode, hay đọc xung của những Input tốc độ cao
Tùy thuộc từng loại CPU cũng như Modul đọc xung tốc độ cao mà có những cách thức đấu nối dây khác nhau
1- Khai báo phần cứng (CPU-313C2DP)
- Khai báo phần cứng cho plc 313-C2DP
- Khai báo phần count
Trang 2Chú ý địa chỉ mặc định in/ out là 768
Quy đổi 768 sang mã hexa mục đích để điền vào
LADDR: địa chỉ của kênh đọc xung tốc độ cao
Trang 3taitrancdt@gmail.com
Vào chương trình và gọi hàm SFB47
Hàm đọc xung tốc độ cao: SFB 47
Trang 4??? : nơi chứa dữ liệu ( thường là các DB)
Dữ liệu được lưu vào theo nguyên tắc:
LADDR: địa chỉ của kênh đọc xung tốc độ cao ( mặc định W#16#300) CHANNEL: số kênh; 0-1: CPU 312C, 0-2: CPU 313C, 0-3: CPU 314C SW_GATE: bit cho phép đếm
CTRL_DO: cho phép ngõ ra
SET_DO: điều khiển ngõ ra
JOB_REQ: bắt đầu job
JOB_ID: mặc định W#16#0000
JOB_VAL: giá trị cho việc ghi dữ liệu cho bộ đếm
STS_GATE: trạng thái cổng bên trong
STS_STRT: trạng thái cổng bên ngoài
STS_LTCH: trạng thái ngõ vào chốt
STS_DO: trạng thái ngõ ra
STS_C_DN: trạng thái hướng ngược
STS_C_UP: trạng thái thuận
COUNTVAL: giá trị đếm hiện tại
LATCHVAL: giá trị chốt hiện tại
JOB_DONE: có sự kiện mới bắt đầu
JOB_ERR: trạng thái lỗi
JOB_STAT: giá trị lỗi
STS_CMP: trạng thái so sánh
STS_OFLW: trạng thái tràn trên
Trang 5taitrancdt@gmail.com
STS_UFLW: trạng thái tràn dưới
STS_ZP: trạng thái zero
JOB_OVAL: giá trị đếm ngõ ra
RES_STS: bit reset lỗi
Bạn có thể tìm hiểu thêm trong help
Chúc bạn thành công!
Trang 6Bài tập ví dụ HSC:
Hàm SFB47 “COUNT” là hàm đếm tốc độ cao của S7-300
Để lấy hàm SFB47 ta vào Libraries=>system Function block=>SFB47 COUNT TEC_FUNC
Ví dụ được làm trên CPU 313C-2DP(tốc độ đếm đến 30kH, và có 3 kênh: 0,1,2) Ngõ vào mật định là I124, I125 ngõ ra mật định là Q124, Q125
Được khai báo:
LADDR (địa chỉ của COUNT,xem trong phần cứng): bắt đầu là 768 đổi ra số HEX
là 300.(có thể thay đổi tuy thuộc phần cứng)
CHANNEL (kênh của HSC): chọn kênh 0
JOB_ID(địa chỉ chức năng làm việc của HSC):trong bài chon giá trị 0001 để viết giá trị đếm
JOB_VAL( giá trị ngõ vào để làm việc dạng Dint): chọn MD4
SW_GATE(chân cho phép HSC đếm): M1.0
CTRL_DO, SET_DO, JOD_RED: là những chân điều khiển ngõ ra
COUNTVAL ( ngõ ra hiển thị giá trị đếm): được lưu vào MD8
LATCHVAL (chân hiển thị giá trị chốt khi chôt bên ngoài phần cứng): được lưu vào MD20
JOD_STAT (Chân hiển thị báo giá trị lỗi): được hiển thị ra vùng nhớ MW4
Các chân còn lại của ngõ ra dùng để hiển thị quá trình làm việc và giá trị lỗi của
Trang 7taitrancdt@gmail.com
HSC được lưu dưới dạng bit
Lưu ý :
Để HSC chạy thì phần cứng phải được khai báo Khai báo theo từng kênh và từng chế độ của HSC.Trong phân cứng chúng ta vào: count
Và để điều khiển HSC nhận xung đếm lên xuống chúng ta phải xem phần cứng hỗ trợ của CPU mình đang sử dụng Với CPU313C_2DP
sử dụng kênh 0 nên chân nhận xung là I124.0, chân đảo hướng I124.1, chân chốt
dữ liệu I125.4, chân cho phép và cho phép HSC là I124.2
Khi chân làm việc: JOB_DONE=1
Khi cho phép đếm: SW_GATE=1