Форум 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 / Algorithm Programming Languages » Передача Double_FLOAT

   
Автор / Author Тема / Topic: Передача Double_FLOAT
i.Sineev
Junior Member / Новичок
Участник № / Member № 4448


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

Есть ST программа обработки данных с устройства, аргумент A (тип LREAL, направление IN) привязан к Double_FLOAT каналу (к реальному значению), содержащему время устройства в формате TimeSpan.

ИЗ этой программы с определённым интервалом вызывается другая St программа - дешифратор, имеющая входной аргумент D (IN, LREAL), привязанный к аргументу C (IN/OUT, LREAL) пустого Call канала "аргументы дешифратора".

В главной программе к аргументу С канала "аргументы дешифратора" привязан аргумент B (OUT, LREAL).

Далее передаю нужный параметр, и вызываю дешифратор:

B = A;
дешифровать = 1; // отработать дешифратор

Тут появляется проблема: в дешифратор попадает обычный REAL вместо LREAL, как должно быть по логике программы. Из-за этого время с устройства можно получить с точностью до 30 мин, а надо с точностью до 1 сек.

Может есть какая-то особенность присваивания, или передачи параметров, о которой я не знаю?

Сообщения / Posts 28 | Из / 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 
Существует общее правило: если ни один из связанных аргументов не привязан к атрибуту канала, передаваемое значение не превышает 4 байта.
Вам для промежуточной передачи надо использовать канала класса DFLOAT.
Но, возможно, правильнее вообще избежать этой промежуточной передачи: слить обе программы и выдавать дешифрованный параметр при соблюдении условия "дешифровать=1".

Сообщения / Posts 17317 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
i.Sineev
Junior Member / Новичок
Участник № / Member № 4448


Icon 1 отправлено / posted      Профиль для / Profile for i.Sineev           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
2)
Вариант со слитием этих программ не подоходит, т.к. устройств около сотни, в дальнейшем может быть и больше, и у каждого своя программа обработки данных (хоть и логика работы этих программ почти одинаковая, есть в обработке данных, которые вынуждают придерживаться подхода раздельной обработки). Но есть группа параметров, которые регистрируются для всех устройств, для каждого параметра - своя программа-дешифратор. Т.е. если сливать программы обработки данных и дешифраторы каждая программа удлиннится в несколько раз на один и тот же кусок кода.

1) DFLOAT для промежуточной передачи пробовал использовать: в выключенном состоянии в реальное значение канала посылал нужное мне значение, но в реальном значении канала как был 0, так и оставался

Сообщения / Posts 28 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
i.Sineev
Junior Member / Новичок
Участник № / Member № 4448


Icon 1 отправлено / posted      Профиль для / Profile for i.Sineev           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Подскажите, как лучше организовать промежуточную передачу с помощью канала DFLOAT
Сообщения / Posts 28 | Из / 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 
Для каждого передаваемого параметра LREAL надо создать канал DFLOAT. В его атрибут ВХОД посылать нужное значение из одной программы и считывать другой программой из того же атрибута.
Сообщения / Posts 17317 | Из / 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