Последние сообщения

#71
Вопросы по zWorkbench / Re: панель Z037
Последний ответ от Khanas - 23 мая 2025, 15:46:28
Лучше всегда обновлять
#72
Вопросы по zWorkbench / Re: панель Z037
Последний ответ от Aidar - 23 мая 2025, 15:39:35
все нашел связь по 485. Да часто нужно переписывать прогу. Ядро обязателно нужно обновлять или не обязателбно?
#73
Общие вопросы / Re: Как попробовать СТ
Последний ответ от Deomik - 23 мая 2025, 13:38:56
Благодарю, на выходных буду пробовать
#74
M245 / Re: МОРГАЕТ ЭКРАН
Последний ответ от Khanas - 23 мая 2025, 09:30:23
Цитата: Dimma_Borgir от 18 мая 2025, 22:06:31
Цитата: Nikolai от 19 апреля 2024, 19:26:54Необходимо обновить ядро до последнего.
Добрый вечер!
Контроллер М245-06, обновил до версии 3.9 из ZWorkbench 2.3.262.8. Так же продолжает моргать 9 раз.
Есть еще какие-нибудь варианты устранения данной неисправности?

Есть. Перепаять кварц или выкинуть контроллер в помойку, ну либо вернуть по рекламации, если не на авито покупали, конечно.
#75
Общие вопросы / Re: Как попробовать СТ
Последний ответ от absolodilov - 23 мая 2025, 09:14:47
Добрый день.

Необходимо установить последний beta релиз zWorkbench.
Ссылка на страницу загрузки: https://zentec.ru/forum/index.php?topic=230.0
Установленную версию необходимо предварительно удалить.
#76
deBuilder / Re: Проект-основа. Вентиляция ...
Последний ответ от Deomik - 23 мая 2025, 09:09:50
Ссылка на документацию к проекту, битая.
#77
Общие вопросы / Как попробовать СТ
Последний ответ от Deomik - 23 мая 2025, 09:04:23
Доброе время суток, есть в наличии контроллер М100-5, хочу попробовать написать программу на СТ, но как написано в хелпе не получается организовать модуль СТ, нет в списке. Что я делаю не так?
#78
deBuilder / Приточка с резервированием.
Последний ответ от Deomik - 23 мая 2025, 09:01:43
Коллеги, может есть у кого проект для приточной вент системы ВоКал с полным резервом на такую же вент систему? Для собственного развития.
#79
Новости / Исправлено поведение переменн...
Последний ответ от Artem - 22 мая 2025, 21:20:47
В последней версии программы было исправлено поведение переменных VAR_OUTPUT и VAR_TEMP. Более подробное описание в разделе -
https://zentec.ru/forum/index.php?topic=822.0
#80
Вопросы по zWorkbench / Язык ST
Последний ответ от Artem - 22 мая 2025, 21:14:35
Исправлено поведение переменных VAR_OUTPUT и VAR_TEMP в соответствии с логикой, что это временные переменные, они не должны сохранять свои значения между вызовами.
Раньше, если модуль не записывает эти переменные, в них оставались старые значения, записанные этим модулем, или другим FBD_блоком этого же модуля,
или они могли использоваться произвольно и случайно, что вызывало нарекания.
Теперь, перед выполнением модуля при каждом вызове, в эти переменные записываются значения 0, чтобы явно стереть непредсказуемые значения, которые там могут быть.
Однако, некоторые программисты специально использовали указанное нестандартное поведение переменных, сохранявших свои значения, поэтому такие модули могут перестать работать, как ожидается.

Для исправления ситуации требуется:

  • перенести переменные, которые должны сохранять свои значения между вызовами, из секции VAR_TEMP в секцию VAR.
  • для каждой переменной из секции VAR_OUTPUT, которая так же должна сохранять значение между вызовами - создать двойника в секции VAR,
    с каким-то другим именем, с которым выполнять все действия в модуле. Перед окончанием работы модуля - безусловно присвоить
    переменной VAR_OUTPUT значение переменной VAR.

Например:
Модуль, ранее написанный:
PROGRAM My_RS;

VAR_INPUT
s: BOOL;
r: BOOL;
END_VAR

VAR_OUTPUT
q: BOOL;
END_VAR

IF s THEN q := TRUE;
END_IF
IF r THEN q := FALSE;
END_IF

// А если r = FALSE и s = FALSE - значение q не определено, но в большинстве случаев, оно сохранялось, если FBD-блок этого модуля единственный!

END_PROGRAM

Модуль, исправленный:
PROGRAM My_RS;

VAR_INPUT
s: BOOL;
r: BOOL;
END_VAR

VAR_OUTPUT
q: BOOL; // Имя переменной оставляем как было, иначе поменяется название выхода FBD-блока!
END_VAR

VAR
q_: BOOL := FALSE; // Явно указываем начальное значение (не обязательно, иначе будет 0)
END_VAR

IF s THEN q_ := TRUE; // Переменная из секции VAR!
END_IF
IF r THEN q_ := FALSE; // Переменная из секции VAR!
END_IF
// А если r = FALSE и s = FALSE - значение q теперь будет равно 0!

q := q_; // Безусловно записать выходное значение

END_PROGRAM