Вопрос 1: Как реализовать работу программы методом циклов??? На языке Си понятно, а как на Техно ST? Например, в первом цикле "Исходном" проверяется условие насоса и вентилятора =0, если соответствует, тогда переходим в цикл "Проверка", где проверить состояние дискретных датчиков на равенство =1, если равно то перейти в следующий цикл "Управление", где нужно послать 1 на включение насоса и вентилятора. После включения проверить одновременно состояние этих механизмов (проверка равенства =1), после этого переходим в другой цикл "Проверка 1", где проверяем другие дискретные датчики на равенство =1. Если в условиях любой из датчиков =0 то надо возвратится в цикл "Исходное". И все начинается с начала...
Вышлите пример работы с циклами и каким то таймером ( подсчет по 1 сек) на ел. почту.
Вопрос 2:
Программа циклограммы работы должна находится первой среди программ или ризница не имеется ??? Допустим в циклограмме будет описываться работа объекта с разных циклов, "Проверка", "ПУСК", "Управление" , "Регулирование" , "Аварийный останов" или так далее...
Сообщения / Posts 105 | Из / From: Украина
| IP / IP: IP адрес / IP address |
Abram Shnider
Active Forum Member / Активный участник форума
Участник № / Member № 4534
отправлено / posted
Насколько я понимаю, программы в TM6 выполняются в цикле по умолчанию. Следовательно, предлагаю Вам построить конструкцию из вложенных операторов if-then-else. Если я Вас правильно понял, то Вы хотите получить период отработки программы по таймеру... Тут могу сказать только то, что TM6 точно может отрабатывать программу каждую секунду (пробовал каждый цикл воспроизводить текущее количество секунд с начала суток).
Сообщения / Posts 78 | Из / From: РФ
| IP / IP: IP адрес / IP address |
sinegub_mihail
Forum Haunter / Завсегдатай форума
Участник № / Member № 4460
отправлено / posted
таймер нужен для счета времени цикла а также задержки или контроля входных сигналов или управления исполнительными механизмами. Вот например цикл "Проверка герметичности клапанов" на языке Си реализуем так: #include "zio8252.h" #include "zstdio.h" #include "cycles.h" #include "const.h"
extern void Control_False_Plam_1_2(); /* Контроль ложного пламени 1,2 */
if ( f_timer_cycle == OFF ) /* если время цикла истекло */ { Valve_Cut_Off_1 = OFF; /* Кл. отсекателя 1 */ Next_Cycle = Cycle_tr4; /* указываем следующий цикл */ } }
void Control_Cycle_tr4() /* Цикл tr4 - Утечка? Закр. */ { Control_False_Plam_1_2(); /* контроль ложного пламени 1,2 */
if ( f_timer_cycle == OFF ) /* если время цикла истекло */ { Valve_Security = OFF; /* Кл. безопасности */ Next_Cycle = Cycle_t1; /* указываем следующий цикл */
Сообщения / Posts 105 | Из / From: Украина
| IP / IP: IP адрес / IP address |
sinegub_mihail
Forum Haunter / Завсегдатай форума
Участник № / Member № 4460
отправлено / posted
наименование циклов указывается в заголовочном файле но не в этой программе...
Сообщения / Posts 105 | Из / From: Украина
| IP / IP: IP адрес / IP address |
отправлено / posted
sinegub_mihail, вышлите, пожалуйста, Ваше описание задачи и преполагаемое Вами решение на адрес техподдержки. Как бы общо не выглядел вопрос с организацией обработки данных, его решение в каждом конкретном случае может быть разным.
Сообщения / Posts 17321 | Из / From: Россия
| IP / IP: IP адрес / IP address |
sinegub_mihail
Forum Haunter / Завсегдатай форума
Участник № / Member № 4460
отправлено / posted
как в программе на языке ST с оператором if-then-else добавить несколько проверок переменных на равенство в одной строке при одном условии присвоении переменной значения, пример:
if Газ_низко == 0 then Клапан_1 =0; elsif Газ_высоко == 0 then Клапан_1 =0; elsif Вода_больше == 0 then Клапан_1 =0; else Клапан_1 =1; end_if;
END_PROGRAM
Нужно на равенство (в одну строку )добавить все входные ( Вода_меньше, Взрыв, Вентилятор_вкл) при условии что выходе присвоение значения переменной будет только Клапан_1
Сообщения / Posts 105 | Из / From: Украина
| IP / IP: IP адрес / IP address |
Abram Shnider
Active Forum Member / Активный участник форума
Участник № / Member № 4534
отправлено / posted
Если я правильно Вас понимаю, то подойдет следующая конструкция:
отправлено / posted
IF ((Газ_низко == 0) || (Газ_высоко == 0) || (Вода_больше == 0)) THEN Клапан_1 = 0; ELSE Клапан_1 = 1; END_IF;
Сообщения / Posts 17321 | Из / From: Россия
| IP / IP: IP адрес / IP address |