Форум TRACE MODE: техническая поддержка Послать новую тему / Post New Topic  Послать ответ / Post A Reply
мой профиль / my profile авторизация / login | регистрация / register | поиск / search | часто задаваемые вопросы / faq | начало / forum home

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ТЕХНИЧЕСКАЯ ПОДДЕРЖКА / TECHNICAL SUPPORT TRACE MODE 6 » TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version » особенности вызова fbd-функций

   
Автор / Author Тема / Topic: особенности вызова fbd-функций
merny
Active Forum Member / Активный участник форума
Участник № / Member № 2290


Icon 1 отправлено / posted      Профиль для / Profile for merny           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
внутри st-программы понадобилось реализовать схему с триггером и формирователем импульса. решено было создать функцию в виде fbd-программы (функции), которая вызывалась бы из основной программы с набором аргументов.
в описании на блок формирователя сказано
Этот блок формирует прямоугольный импульс длиной в один такт пересчета при изменении значения младшего разряда INP с 0 на 1
но это должно быть справедливо лишь для основной программы. для функции все совсем по-другому
- функция может быть вызвана при отработке программы, а может и не быть вызвана. и сколько для не будет длиться такт пересчета?
- одна и та же функция может вызываться для аналогичных, но разных задач и с разными аргументами. при этом обращение идет к одной и той же программной структуре. не будет ли трактоваться изменение чужих переменных в роли тех же аргументов как повод для срабатывания формирователей и триггеров?
- повторный вызов функции не будет ли трактоваться ею как новый такт пересчета?
- если некая переменная используется как аргумент (вход формирователя) при вызове fbd-функции то будет ли как-либо трактоваться функцией изменение переменной в теле программы вне вызова функции или этот вопрос лишен смысла?

и отдельный вопрос по полноценной fbd-программе:
при последовательном включении формирователя импульса и триггера (формирователь генерирует импульс, сбрасывающий триггер) когда будет происходить переключение триггера: во время текущего пересчета или на следующей итерации? влияет ли на это наличие между формирователем и триггером дополнительных блоков вроде логических или побитовых вентилей типа И, ИЛИ и им подобных?


еще возник один небольшой вопрос по работе ГЭ кнопка:
есть ГЭ кнопка на экране
для нее запрограммированы следующие действия:
по нажатию кнопки происходит посылка числа (0 или 1 в зависимости от обстоятельств) в аргумент экрана
по отпусканию кнопки происходит запись в тот же аргумент нуля.
т.е. в этом аргументе всегда должен быть 0, за исключением некоторых случаев, когда левая кнопка мыши нажата и не отпущена. в реальности при отпускании левой кнопки значение аргумента не меняется (оно выведено в ГЭ текст).
правда проект отрабатывается на ноутбуке и вместо мыши у него тачпад, но левая кнопка тачпада при нажатии действует так как и положено
в чем здесь может быть дело?

Сообщения / Posts 70 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Из документации;
"Кроме входов/выходов, некоторые встроенные FBD-блоки имеют внутренние переменные, недоступные пользователю. Переменные FBD-блока (входы/выходы и внутренние) являются глобальными, т.е. сохраняют свое значение между вызовами программы, в том числе при RUN=1."
"Следующие функции (функции-блоки) могут быть вызваны в основной программе только однократно:
содержащие глобальные переменные программы;
содержащие FBD-блоки с внутренними переменными (см. Редактирование FBD-программ ). "

Т.о., любые пользовательские функции, в которых имеются собственные статические переменные, могут корректно вызываться в материнской программе только однократно.
Это снимает вопросы о "разных аргументах" и "чужих переменных".
Пользовательские функции определены только в рамках материнской программы.
"Разные задачи" - это, прежде всего, разные материнские программы. Между глобальными переменными разных программ нет связей. Глобальные переменные программы определены также для всех пользовательских функций программы.

Тактом пересчета пользовательской функции является ее вызов в материнской функции. Не было вызова - не было такта пересчета.

Единичный импульс блока rTRIG будет отрабатываться последующими блоками программы только в пределах того такта, в котором он сформирован.

Надо промоделировать работу кнопки в режиме эмуляции в РПД (редактор шаблонов экранов).
Если на соответствующий аргумент экрана нет постороннего воздействия, то при отжатии ЛК в аргументе должен устанавливаться 0.

Сообщения / Posts 17111 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
merny
Active Forum Member / Активный участник форума
Участник № / Member № 2290


Icon 1 отправлено / posted      Профиль для / Profile for merny           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
понятно
с кнопкой все прояснилось, там было 2 состояния указано, т.е. на отпускание реагировать и не должна

Сообщения / Posts 70 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
   

Quick Reply
Сообщение / Message:

HTML код не разрешен. / HTML is not enabled.
UBB код разрешен. / UBB Code is enabled.

Значки Graemlins / Instant Graemlins
   


Послать новую тему / Post New Topic  Послать ответ / Post A Reply Закрыть тему / Close Topic   Feature Topic   Переместить топик / Move Topic   Удалить топик / Delete Topic Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
 - Printer-friendly view of this topic
Перейти к / Hop To


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2