Xung kích hoạt cạnh

Một phần của tài liệu Hướng dẫn lập trình PIC với arduino (Trang 63 - 66)

Phiên bản 1.1 của phần mềm plcLib giới thiệu khả năng tạo ra các xung được kích hoạt cạnh, đầu ra của chỉ hoạt động trong một chu kỳ quét.

Điều này có thể hữu ích trong nhiều trường hợp, chẳng hạn như kích hoạt đầu ra một lần duy nhất, đảm bảo đầu ra kéo dài trong khoảng thời gian ngắn hơn đầu vào hoặc ngăn hệ thống dựa trên chốt bị khóa trong một vị trí do công tắc bên ngoài bị lỗi.

Một hệ thống kích hoạt cạnh đơn giản được hiển thị bên dưới.

Hình 19. Các xung đầu ra ngắn gọn có thể được tạo ra từ các cạnh tăng hoặc giảm của dạng

sóng đầu vào.

Điều này có thể được biểu diễn như thể hiện trong sơ đồ bậc thang sau, với các cạnh tăng hoặc giảm đầu vào X0 được sử dụng để đặt đầu ra Y0 và Y1 trong giây lát , tương ứng.

Hình 20. Các xung đầu ra trên Y0 và Y1 được tạo ra bởi các cạnh tăng hoặc giảm của dạng

sóng đầu vào X0. Dưới đây là một bản phác thảo tương đương.

#include <plcLib.h>

/* Programmable Logic Controller Library for the Arduino and Compatibles Generate rising-edge and falling-edge pulses using a digital input Connections:

Clock input - switch connected to input X0 (Arduino pin A0) Rising-edge output - LED connected to output Y0 (Arduino pin 3) Falling-edge output - LED connected to output Y1 (Arduino pin 5)

Software and Documentation:

http://www.electronics-micros.com/software-hardware/plclib-arduino/

*/

Pulse pulse1; // Create a pulse object called 'pulse1'

void setup() {

setupPLC(); // Setup inputs and outputs }

void loop() {

in(X0); // Read switch connected to Input 0 and pulse1.inClock(); // connect it to the clock input

pulse1.rising(); // Read rising edge

out(Y0); // Output rising edge for 1 scan cycle only

pulse1.falling(); // Read falling edge

out(Y1); // Output falling edge for 1 scan cycle only

delay(50); // Slow down scan cycle to enable viewing pulses // (remove this delay in the final code) }

Liệt kê 9. Tạo xung cạnh lên và xung xuống (Nguồn: Tệp> Ví dụ> plcLib> Xung>

PulseInput)

Kiểm tra danh sách trên, một đối tượng xung được gọi là 'xung1' được tạo ra đầu tiên. Đầu vào bên ngoài X0 sau đó là kết nối với đầu vào xung clock của xung đã tạo trước đó. Cuối cùng, các tín hiệu cạnh tăng và giảm là được sử dụng để điều khiển đầu

ra Y0 và Y1 tương ứng.

Các xung đầu ra chỉ kéo dài trong một chu kỳ quét duy nhất, do đó, độ trễ thời gian 50 mili giây đã được thêm vào phác thảo trên để 'kéo dài' các xung đầu ra đủ dài để có thể nhìn thấy khi kết nối với đèn LED. Sự chậm trễ này nên được gỡ bỏ sau khi kiểm tra để tránh làm chậm chu kỳ quét.

7.1 Tạo một bảng tin được kích hoạt cạnh

Một chốt đặt lại đơn giản có thể được tạo bằng một số phương pháp khác nhau, như được trình bày trong các Phần kết quả đầu ra . Với khả năng xảy ra các công tắc đầu vào bị lỗi đã đề cập trước đó, nó rất hữu ích để xem xét những gì sẽ xảy ra cho một mạch chốt dựa trên nếu cả hai Set và Thiết lập lại các đầu vào là được kích hoạt đồng thời hoặc nếu một trong các công tắc đầu vào bên ngoài bị kẹt ở vị trí 'Bật'?

Những vấn đề tiềm ẩn này có thể được khắc phục ở một mức độ lớn bằng cách sử dụng các tín hiệu được kích hoạt cạnh để thúc đẩy đầu vào chốt, như thể hiện trong sơ đồ bậc thang sau đây.

Hình 21. Sử dụng các đầu vào được kích hoạt cạnh để đặt hoặc đặt lại một đầu ra.

#include <plcLib.h>

/* Programmable Logic Controller Library for the Arduino and Compatibles

Set or reset an output using edge-triggered inputs

Connections:

Set input - switch connected to input X0 (Arduino pin A0) Reset input - switch connected to input X1 (Arduino pin A1)

Latched output - LED connected to output Y0 (Arduino pin 3) Software and Documentation:

http://www.electronics-micros.com/software-hardware/plclib-arduino/

*/

Pulse setPulse; // Create a pulse object to set the latch Pulse resetPulse; // Create a pulse object to reset the latch

void setup() {

setupPLC(); // Setup inputs and outputs }

void loop() {

in(X0); // Read switch connected to Input 0 and setPulse.inClock(); // connect it to the set pulse clock input

in(X1); // Read switch connected to Input 1 and resetPulse.inClock(); // connect it to reset pulse clock input

setPulse.rising(); // Read rising edge of X0

set(Y0); // Set Y0 to 1 on using rising edge of X0

resetPulse.rising(); // Read rising edge of X1

reset(Y0); // Reset Y0 to 0 on using rising edge of X1 }

Liệt kê 10. Đặt hoặc đặt lại đầu ra bằng đầu vào được kích hoạt cạnh (Nguồn: Tệp> Ví dụ>

plcLib>Pulse> SetResetEdge)

Một phần của tài liệu Hướng dẫn lập trình PIC với arduino (Trang 63 - 66)

Tải bản đầy đủ (DOCX)

(137 trang)
w