10. Tạo ra các dạng sóng lặp lại
10.1 Tạo xung thủ công
Một cặp bộ định thời gian trễ được kết nối chéo có thể được sử dụng để tạo xung lặp lại, như thể hiện trong ví dụ sau.
#include <plcLib.h>
/* Programmable Logic Controller Library for the Arduino and Compatibles Repeating pulse using a pair of linked on-delay timers
Connections:
Input - switch connected to input X0 (Arduino pin A0) Output - LED connected to output Y0 (Arduino pin 3)
Software and Documentation:
void setup() {
setupPLC(); // Setup inputs and outputs void loop() {
in(X0); // Read Input 0 (enable) andNotBit(Y0); // And with inverted output timerOn(TIMER0, 900); // 900 ms (0.9 s) delay set(Y0); // Set Output 0 on time- out
Listing 17. Xung lặp lại bằng cách sử dụng một cặp bộ định thời gian trễ được
liên kết (Source: File > Examples > plcLib> Waveforms > PulsedOutputManual)
Khi chương trình đang chạy, bạn sẽ thấy rằng liên tục nhấn enable đầu vào (X0) làm cho đầu ra (Y0) bật trong 0,1 giây, sau đó tắt 0,9 giây theo một trình tự lặp lại..
Chương trình sử dụng một cặp bộ định thời gian trễ, cộng với một chốt cài đặt lại dựa trên đầu ra Y0. Bộ hẹn giờ đầu tiên được bật ban đầu, giả sử đầu ra Y0 bằng 0 và đầu vào cho phép cũng được bật. Đầu ra bộ hẹn giờ đầu tiên tăng cao sau 900 ms, lần lượt đặt đầu ra Y0 thành 1. Tại thời điểm này, bộ định thời trễ thứ hai được bật và bắt đầu đếm. Sau 100 ms nữa, đầu ra bộ định thời thứ hai được đặt, điều này làm cho đầu ra Y0 bị xóa và toàn bộ chu kỳ bắt đầu lại.
Đây là một ví dụ về Máy trạng thái hữu hạn (FSM) rất đơn giản, là cơ sở của biểu đồ chức năng tuần tự.
Đừng lo lắng nếu ví dụ trên có vẻ khá phức tạp, vì chức năng tương tự này được cung cấp bởi lệnh timerCycle (), sẽ được thảo luận tiếp theo.