IEC-61131-3
Ladder diagram
Function block diagram
Sequential Function Chart
Instruction List
Structured Text
Переменные
Structured Text
poST
1.06M
Категория: ПрограммированиеПрограммирование

IEC-61131-3

1. IEC-61131-3

2.

3. Ladder diagram

Ladder Diagram, или LD —
представляет собой
программную реализацию
электрических схем на базе
электромагнитных реле.

4.

5.

6. Function block diagram

Function Block Diagram, или FBD — алгоритмы конструируются
посредством использования функциональных блоков

7. Sequential Function Chart

SFC описывает последовательность
состояний, блоков действий для
каждого состояния и условий
переходов.

8.

9. Instruction List

Низкоуровневый однорегистровый
ассемблероподобный язык

10. Structured Text

Высокоуровневый
паскалеподобный язык
программирования.

11. Переменные

• VAR — локальные переменные.
• VAR_INPUT — входные переменные.
• VAR_OUTPUT — выходные переменные.
• VAR_IN_OUT — входные и выходные переменные.
• VAR_GLOBAL — глобальные переменные.
• VAR_EXTERNAL — внешние переменные (использование
глобальных переменных).
• VAR_TEMP — временные переменные (без сохранения состояния
между вызовами).

12. Structured Text

• Iteration loops (REPEAT-UNTIL; WHILE-DO)
• Conditional execution (IF-THEN-ELSE; CASE)
• Functions (SQRT(), SIN())
Список типов данных стандарта для любого из языков, вне зависимости от
производителя ПО или ПЛК можно посмотреть на английской Википедии:
https://en.wikipedia.org/wiki/IEC_61131-3 или в ГОСТе в разделе 6:
https://meganorm.ru/Data2/1/4293755/4293755016.pdf
Но могут встречаться и модификации
Относительно удобный список стандартных функций по их категориям есть
тут: https://www.fernhillsoftware.com/help/iec-61131/commonelements/functions.html

13. poST

process-oriented Structured Text
Основная идея – добавление нового уровня абстракции: процессов и
состояний.
Основное определение – гиперпроцесс. Это множество
взаимодействующих процессов с общей памятью и средствами
синхронизации исполнения.
Процесс – это конечный автомат, работа которого зависит его текущего
состояния. Процессы могут переходить в другое состояние, запускать и
останавливать другие процессы или проверять их активность. Есть
средства временного контроля нахождения в данном состоянии.

14.

PROGRAM program
PROGRAM program
VAR_INPUT
VAR_INPUT
sensor : BOOL;
END_VAR
sensor : BOOL;
END_VAR
VAR_OUTPUT
control : BOOL;
END_VAR
VAR_OUTPUT
control : BOOL;
END_VAR
PROCESS process
STATE Wait
VAR CONSTANT
_P_PROCESS_S_WAIT : INT := 0;
_P_PROCESS_S_WORK : INT := 1;
_STOP : INT := 254;
_ERROR : INT := 255;
END_VAR
IF sensor THEN
control := TRUE;
SET NEXT;
END_IF
END_STATE
VAR
_global_time : TIME;
_g_p_process_time : TIME;
_g_p_process_state : INT := _P_PROCESS_S_WAIT;
END_VAR
_global_time := TIME();
STATE Work
IF sensor THEN
RESET TIMER;
END_IF
TIMEOUT T#2s THEN
control := FALSE;
SET STATE Wait;
END_TIMEOUT
CASE _g_p_process_state OF
_P_PROCESS_S_WAIT:
IF sensor THEN
control := TRUE;
_g_p_process_time := _global_time;
_g_p_process_state := _P_PROCESS_S_WORK;
END_IF
_P_PROCESS_S_WORK:
IF sensor THEN
_g_p_process_time := _global_time;
END_IF
IF (_global_time - _g_p_process_time) >= T#2s THEN
control := FALSE;
_g_p_process_state := _P_PROCESS_S_WAIT;
END_IF
END_STATE
END_PROCESS
END_PROGRAM
END_CASE
END_PROGRAM

15.

CONFIGURATION Elevator
VAR_GLOBAL

END_VAR
RESOURCE r1 ON TestCPU
VAR_GLOBAL CONSTANT

END_VAR
VAR_GLOBAL

END_VAR
TASK T1 (INTERVAL := T#100ms, PRIORITY :=1);
PROGRAM simulator WITH T1: Simulator (
PROCESS ACTIVE door0Sim : DoorSim (open := open0, doorclosed => door0closed),
PROCESS ACTIVE door1Sim: DoorSim (open := open1, doorclosed => door1closed),
PROCESS ACTIVE door2Sim: DoorSim (open := open2, doorclosed => door2closed),
PROCESS ACTIVE elevatorSim: ElevatorSim (ELEV_DOWN_COORD := ELEV_DOWN_COORD_CONSTANT),
PROCESS ACTIVE floor0SensorSim: FloorSensorSim (UPPER_LIMIT := MAX_FLOOR0_COORD, LOWER_LIMIT := MIN_FLOOR0_COORD, onfloor => onfloor0),
PROCESS ACTIVE floor1SensorSim: FloorSensorSim (UPPER_LIMIT := MAX_FLOOR1_COORD, LOWER_LIMIT := MIN_FLOOR1_COORD, onfloor => onfloor1),
PROCESS ACTIVE floor2SensorSim: FloorSensorSim (UPPER_LIMIT := MAX_FLOOR2_COORD, LOWER_LIMIT := MIN_FLOOR2_COORD, onfloor => onfloor2)
);
END_RESOURCE
END_CONFIGURATION
English     Русский Правила