Поправил скрипт, поправил неточности в библиотеке

This commit is contained in:
2026-07-31 11:20:45 +03:00
parent d3da512178
commit 3d52fdec57
44 changed files with 1956 additions and 51 deletions
+55
View File
@@ -0,0 +1,55 @@
(*
===============================================================================
Project : PLC_Library
Device : -
Path : Общие
Name : STACK_I16
Type : FUNCTION_BLOCK
Exported : 2026-07-31 11:16:16
===============================================================================
*)
FUNCTION_BLOCK STACK_I16
(* стек на 16 элементов типа INT*)
VAR_INPUT
Din : INT; (* Переменная для записи в стек *)
E : BOOL := TRUE;(* Включение стека *)
POP : BOOL; (* Извлечение из стека *)
PUSH : BOOL; (* Запись в стек *)
RST : BOOL; (* Обнуление стека *)
END_VAR
VAR_OUTPUT
Dout : INT;
EMPTY : BOOL := TRUE;
FULL : BOOL;
END_VAR
VAR
stack: ARRAY[0..n] OF INT;
pt : INT;
END_VAR
VAR CONSTANT
n : INT := 15; (* changing this value will chage the number of stored elements in the fifo *)
END_VAR
(*----- IMPLEMENTATION -----*)
IF RST THEN
(* asynchronous reset for the fifo *)
pt := 0;
EMPTY := TRUE;
FULL := FALSE;
Dout := 0;
ELSIF E THEN
IF NOT EMPTY AND POP THEN
pt := pt - 1;
Dout := stack[pt];
EMPTY := pt = 0;
FULL := FALSE;
END_IF;
IF NOT FULL AND PUSH THEN
stack[pt] := Din;
pt := pt + 1;
FULL := pt > n;
EMPTY := FALSE;
END_IF;
END_IF;
END_FUNCTION_BLOCK