Thiết bị lập trình 12 Lệnh FN sử dụng <bit> làm ô nhớ trung gian, gặp lệnh này CPU xử lí hai nhiệm vụ (đồng thời): Kết quả lôgíc của lệnh trớc lệnh FN (bít RLO) tại vòng quét hiện hnh đợc ghi vo vị trí <bit> Tại vòng quét tiếp theo, lệnh FN so sánh nội dung bít RLO với nội dung của <bit> Nếu <bit> = 1 (do kết quả lôgic của lệnh trớc lệnh FN), (giả sử tại vòng quét tiếp theo, giá trị RLO = 0), thì sau lệnh FN, RLO sẽ = 1, còn giá trị <bit> = 0. Nếu RLO = 1 (do kết quả lôgic của lệnh FN), (giả sử tại vòng quét tiếp theo, giá trị <bit> = 0), thì sau lệnh FN, RLO sẽ = 0. Kết luận: Lệnh FN lm đầu ra Q4.0 lên mức lôgíc 1 trong khoảng thời gian 1 vòng quét, khi phát hiện đầu vo I1.0 chuyển mức lôgíc từ 1 về 0 Chuyển đổi một số sơ đồ mạch điện Sơđồ1 Sơđồ2 Sơ đồ 3 D M K K D K K M D K K M Sơ đồ 4 K K M D Thiết bị lập trình 1 Các bộ định thời gian Timer v các bộ đếm counter Thanh ghi tổng ACCU1 và ACCU2 Một số lệnh phụ trợ Các bộ định thời gian (Timer) Các bộ đếm (Counter) Thanh ghi tổng ACCU1 v ACCU2 Đây là hai thanh ghi đặc biệt nằm trong CPU của S7-300, có kích thớc 32 bít. Chúng đợc dùng làm bộ nhớ trung gian cho các phép tính liên quan đến byte, word và double word. Thanh ghi ACCU1 đợc dùng chính trong các lệnh, ACCU2 đợc dùng làm thanh ghi phụ hỗ trợ cho thanh ghi ACCU1. Byte cao Byte thấpByte thấpByte cao Từ cao Từ thấp Thiết bị lập trình 2 Một số lệnh phụ trợ Lệnh nạp dữ liệu: Cú pháp: Tác dụng: Lệnh chuyển hằng số hoặc nội dung của ô nhớ có địa chỉ ở <address> vo thanh ghi ACCU1, nội dung cũ trong ACCU1 đợc chuyển vo ACCU2 I, Q Hằng số dùng cho bộ đếmL C#100C# Hằng số dạng kí tựL AB Hằng số cơ số Binary (2)L 2#110000112# Hằng số cơ số Hex (16)L B#16#2E L W#A2EB 16# Ghi 5 (số nguyên 32 bit) vào ACCU1 L L#5L# Ghi 1 vào byte cao của từ thấp, 8 vào byte thấp của từ thấp ACCU1 L B#(1,8)B#( , ) Ghi 5 (số nguyên 16 bit) vào ACCU1 L +5 Giải thíchVí dụDữ liệu Thiết bị lập trình 3 Hằng số về thời gian giờ/phút/giây (32 bít) L T#0H_1M_10ST# Hằng số về năm/tháng/ngày (16 bit) L D#2000-6-20D# Hằng số là địa chỉ ô nhớ (con trỏ) L P#M10.2P# Hằng số dùng cho bộ timerL S5TIME#2SS5TIME# Giải thíchVí dụDữ liệu Lệnh so sánh dữ liệu (số nguyên 16 bít): Cú pháp: Tác dụng: Lệnh so sánh hai số nguyên nằm ở hai thanh ghi ACCU1 v ACCU2 110<=I 011>=I 100<I 001>I 101<>I 010==I Giá trị RLO ACCU2<ACCU1 Giá trị RLO ACCU2 = ACCU1 Giá trị RLO ACCU2>ACCU1 Lệnh Thiết bị lập trình 4 Lệnh chuyển kiểu dữ liệu : Cú pháp: BTI Tác dụng: Lệnh chuyển một số BCD nằm trong ACCU1 thnh số nguyên 16 bit, kết quả lu trở lại ACCU1 Các bộ định thời gian timer Các bộ timer có tác dụng tạo ra khoảng thời gian trễ giữa tín hiệu lôgíc đầu vào và tín hiệu lôgíc đầu ra. Quy luật trễ tuỳ thuộc vào từng loại timer. Các Timer đợc đánh địa chỉ từ T0 đến T255. Các bộ timer có thể sử dụng địa chỉ tuỳ ý, tuy nhiên khi một địa chỉ đã sử dụng rồi thì không thể khai báo sử dụng cho timer khác. Thời gian trễ t = độ phân giải x giá trị đặt Thiết bị lập trình 5 Giá trị đặt: Có thể đợc xác định dới hai dạng, và đợc lu vào thanh ghi ACCU1. Dạng 1: W#16#txyz Trong đó: t l độ phân giải (mã thập phân) xyz l giá trị thời gian (mã BCD) Dạng 2: S5T#aH_bM_cS_dMS Trong đó: H l giờ, M l phút, S l giây, MS l miligiây. a, b, c, d l các tham số thời gian Chú ý ở dạng 2, độ phân giải đợc CPU chọn tự động Độ phân giải: Có nhiều độ phân giải khác nhau và đợc lu vào thanh ghi ACCU1 dới dạng mã nhị phân, nằm ở vị trí bít 12 và 13. 31110s 2101s 101100ms 00010ms Mã thập phânMã nhị phânĐộ phân giải 10s đến 2h_46m_30s10s 1s đến 16m_39s1s 100ms đến 1m_39s_900ms100ms 10ms đến 9s_990ms10ms Giới hạn trễĐộ phân giải Thiết bị lập trình 6 Cấu hình thanh ghi ACCU1 khi làm việc với Timer: Từ bit 0 đến bít 11 dùng để lu giá trị thời gian dới dạng mã BCD, bít 12 và 13 dùng để lu độ phân giải. Thời gian trễ (0 999) Độ phân giải Từ bít 14 không dùng đến Các bớc khai báo sử dụng Timer: Khai báo tín hiệu enable Khai báo tín hiệu đầu vo Khai báo giá trị đặt Khai báo loại Timer đợc sử dụng Khai báo tín hiệu xoá timer Đọc dữ liệu thanh ghi T-word Khai báo tín hiệu enable (lệnh FR) Cú pháp: A <bit> (<bit> dùng lm tín hiệu enable) FR Timer (Timer tên địa chỉ bộ trễ) Chú ý: Tín hiệu enable có tác dụng reset bộ timer khi có tín hiệu đầu vo duy trì ở mức lôgíc 1 Thiết bị lập trình 7 Khai báo tín hiệu đầu vào Cú pháp: A <bit> (<bit> dùng lm tín hiệu đầu vo) Chú ý: Tín hiệu đầu vo bắt buộc phải có dùng để kích hoạt timer Khai báo giá trị đặt Cú pháp: L <hằng số> (<hằng số> dùng lm giá trị đặt) Chú ý: Có thể đợc khai báo dới 2 dạng Khai báo loại timer đợc sử dụng Khai báo tín hiệu xoá timer A <bit> (<bit> dùng lm tín hiệu reset) R Timer (Timer tên địa chỉ bộ trễ cần xoá) Tạo xung kéo dài (Extended Pulse Timer)SE Tạo xung thời gian (Pulse timer)SP Tắt trễ (Off-delay)SF Bật trễ có nhớ (Retentive on-delay)SS Bật trễ không nhớ (On-delay)SD Loại timerLệnh khai báo . C#100C# Hằng số dạng kí tựL AB Hằng số cơ số Binary (2)L 2#110000112# Hằng số cơ số Hex (16)L B#16#2E L W#A2EB 16# Ghi 5 (số nguyên 32 bit) vào ACCU1 L L#5L# Ghi 1 vào byte cao của từ thấp,. ) Ghi 5 (số nguyên 16 bit) vào ACCU1 L +5 Giải thíchVí dụDữ liệu Thiết bị lập trình 3 Hằng số về thời gian giờ/phút/giây (32 bít) L T#0H_1M_10ST# Hằng số về năm/tháng/ngày (16 bit) L D#200 0-6 -2 0D#. T#0H_1M_10ST# Hằng số về năm/tháng/ngày (16 bit) L D#200 0-6 -2 0D# Hằng số là địa chỉ ô nhớ (con trỏ) L P#M10.2P# Hằng số dùng cho bộ timerL S5TIME#2SS5TIME# Giải thíchVí dụDữ liệu Lệnh so sánh dữ liệu