Просмотр полной версии : язык St
Всем доброго дня! Почитав форум и попробовав свои силы в CoDeSys понял, что хоть язык ST и позволяет реализовывать циклы repeat, while и т.д., но, как правило, их использование приводит к зависанию контроллера. Может кто-нибудь разъяснит мне каким образом реализуется каждый из циклов на примере какого-нибудь простого примера. Заранее благодарю. (Прошу сильно не материть - я не программист, я только учусь:) )
а зачем конкретно вам нужны эти циклы? обрисуйте задачу.
Задача примерно такая: необходимо включать и отключать насос в зависимости от уровня воды в резервуаре. Видимо я ещё не перестроил мозги и описываю задачу примерно так:
while уровень<2 do
насос:=true;
end_while;
if уровень>9 then
насос:=false;
end_if;
понимаю, что где-то что-то не так, вот и хочу разобраться как лучше реализовывать циклы в CoDeSys...
Малышев Олег
19.05.2010, 10:39
Задача примерно такая: необходимо включать и отключать насос в зависимости от уровня воды в резервуаре. Видимо я ещё не перестроил мозги и описываю задачу примерно так:
while уровень<2 do
насос:=true;
end_while;
if уровень>9 then
насос:=false;
end_if;
понимаю, что где-то что-то не так, вот и хочу разобраться как лучше реализовывать циклы в CoDeSys...
подключите util.lib
HYST_PUMP:HYSTERESYS;
HYST_NASOS(in:=level,low:=2,high:=9,OUT=>pump);
хм, спасибо за ответ. попробую.
Или по шагам, без стандартного блока, как учебный пример.
VAR
Pump_ON: BOOL
END_VAR
if Pump_ON then
if level > 9 then
Pump_ON := false;
OUT:= false;
END_IF;
ELSE
if level < 2 then
Pump_ON := true;
OUT:= true;
END_IF;
END_IF;
Главное, при переходе от классического программирования, запомните, запишите большими буквами, и т.п. - цикл "крутит" для Вас сам ПЛК!, не пытайтесь в него вмешаться!
спасибо за внимание, кое что для себя прояснил.
Почитав форум и попробовав свои силы в CoDeSys понял, что хоть язык ST и позволяет реализовывать циклы repeat, while и т.д., но, как правило, их использование приводит к зависанию контроллера.
Это что правда?
lara197a
20.05.2010, 08:01
нет,это все нормально работает и зависит только от организации циклов. если условия приведут к бесконечному циклу, то плк перезагрузится.
Очевидно, что да. В CoDeSys несколько по иному реализуются циклы, поскольку основной цикл крутит сам ПЛК.
Николаев Андрей
21.05.2010, 16:16
ПЛК не зависает.
Просто если программу пишут люди, не совсем освоившиеся с принципами программирования на языках МЭК - они загоняют контроллер в цикл, который и так уже организовуется самим контроллером.
И когда ПЛК видит, что его пытаются "повесить" бесконечным циклом - перезагружается по WatchDog...
Есть следующий обрывок кода, который выводит дату и время в формате ЧЧ.ММ.ГГГГ Часы:Минуты
'echo -n "$$(date $'+%F %T$');" >> '
Вопрос: "Как к ним приписать еще секунды?"
Есть следующий обрывок кода, который выводит дату и время в формате ЧЧ.ММ.ГГГГ Часы:Минуты
'echo -n "$$(date $'+%F %T$');" >> '
Вопрос: "Как к ним приписать еще секунды?"
в КДС2.3 нет bash оболочки, такой вопрос лучше по гуглить
У меня КДС 3.5. Просто не в ту тему написал случайно. В 3.5 возможно ли такое реализовать?
Евгений Кислов
14.12.2016, 19:45
У меня КДС 3.5. Просто не в ту тему написал случайно. В 3.5 возможно ли такое реализовать?
Можно. См. документ СПК. Системное время.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot