Похожие презентации:
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 programPROGRAM 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 ElevatorVAR_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
Программирование