This is topic Програмирование циклов в Техно ST in forum Языки программирования в TRACE MODE 6 / Algorithm Programming Languages at Форум TRACE MODE: техническая поддержка.
Вопрос 1: Как реализовать работу программы методом циклов??? На языке Си понятно, а как на Техно ST? Например, в первом цикле "Исходном" проверяется условие насоса и вентилятора =0, если соответствует, тогда переходим в цикл "Проверка", где проверить состояние дискретных датчиков на равенство =1, если равно то перейти в следующий цикл "Управление", где нужно послать 1 на включение насоса и вентилятора. После включения проверить одновременно состояние этих механизмов (проверка равенства =1), после этого переходим в другой цикл "Проверка 1", где проверяем другие дискретные датчики на равенство =1. Если в условиях любой из датчиков =0 то надо возвратится в цикл "Исходное". И все начинается с начала...
Вышлите пример работы с циклами и каким то таймером ( подсчет по 1 сек) на ел. почту.
Вопрос 2:
Программа циклограммы работы должна находится первой среди программ или ризница не имеется ??? Допустим в циклограмме будет описываться работа объекта с разных циклов, "Проверка", "ПУСК", "Управление" , "Регулирование" , "Аварийный останов" или так далее...
Posted by Abram Shnider (Участник № / Member № 4534) on :
Насколько я понимаю, программы в TM6 выполняются в цикле по умолчанию. Следовательно, предлагаю Вам построить конструкцию из вложенных операторов if-then-else. Если я Вас правильно понял, то Вы хотите получить период отработки программы по таймеру... Тут могу сказать только то, что TM6 точно может отрабатывать программу каждую секунду (пробовал каждый цикл воспроизводить текущее количество секунд с начала суток).
Posted by sinegub_mihail (Участник № / Member № 4460) on :
таймер нужен для счета времени цикла а также задержки или контроля входных сигналов или управления исполнительными механизмами. Вот например цикл "Проверка герметичности клапанов" на языке Си реализуем так: #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; /* указываем следующий цикл */
Posted by sinegub_mihail (Участник № / Member № 4460) on :
наименование циклов указывается в заголовочном файле но не в этой программе...
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
sinegub_mihail, вышлите, пожалуйста, Ваше описание задачи и преполагаемое Вами решение на адрес техподдержки. Как бы общо не выглядел вопрос с организацией обработки данных, его решение в каждом конкретном случае может быть разным.
Posted by sinegub_mihail (Участник № / Member № 4460) on :
как в программе на языке 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
Posted by Abram Shnider (Участник № / Member № 4534) on :
Если я правильно Вас понимаю, то подойдет следующая конструкция: