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

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ТЕХНИЧЕСКАЯ ПОДДЕРЖКА / TECHNICAL SUPPORT TRACE MODE 5 » Языки программирования (IL/FBD) / Algorithm Programming Languages » Сохранение данных в DLL-модулях

   
Автор / Author Тема / Topic: Сохранение данных в DLL-модулях
Сафронов
Forum Haunter / Завсегдатай форума
Участник № / Member № 408


Icon 1 отправлено / posted      Профиль для / Profile for Сафронов           Редактировать/удалить сообщение / Edit/Delete Post 
Сораняются ли значения выходов пользовательских функциональных блоков, написанных на Си, между двумя вызовами программы ? Локальные переменные для сохранения данных использовать не получается, т.к. функциональные блоки используются в нескольких FBD, а входы все заняты. Или подскажите другой способ сохранения данных от вызова к вызову.
Сообщения / Posts 136 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 2 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
А что мешает использовать static переменные в самом коде FBD-блока? Здесь на форуме совсем недавно даже исходный код на Си++ приводился ( здесь), который реализовывал очень большую задержку значения. Так вот в нем его внутренний массив значений как раз как static обозначался, чтобы не потерять данные от вызова к вызову блока.
Сообщения / Posts 17106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Сафронов
Forum Haunter / Завсегдатай форума
Участник № / Member № 408


Icon 1 отправлено / posted      Профиль для / Profile for Сафронов           Редактировать/удалить сообщение / Edit/Delete Post 
Мещает то, что функциональные блоки используются в нескольких FBD, и переменные static будут общими для всех FBD, что в данном случае недопустимо (данные должны сохраняться для каждой FBD отдельно).
Сообщения / Posts 136 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 2 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
В этом случае без внутреннего разделения этих ресурсов никак нельзя. [duno / незнайка]
Это потребует дополнительного входа у блока.

Сообщения / Posts 17106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Сафронов
Forum Haunter / Завсегдатай форума
Участник № / Member № 408


Icon 1 отправлено / posted      Профиль для / Profile for Сафронов           Редактировать/удалить сообщение / Edit/Delete Post 
Подскажите, пожалуйста, как инициализировать static переменные нулями при первом включении функционального блока.
Сообщения / Posts 136 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 2 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
Есть три варианта по мере усложнения:
1) Обнулить его при объявлении, например так: static int MyArray[800]={0};
2) Обнулить его в функции DllMain - вызывается при первом вызове DLL.
3) Создать простенький класс и обнулять массив через конструктор класса при его инициализации.

Сообщения / Posts 17106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Сафронов
Forum Haunter / Завсегдатай форума
Участник № / Member № 408


Icon 1 отправлено / posted      Профиль для / Profile for Сафронов           Редактировать/удалить сообщение / Edit/Delete Post 
При обнулении при объявлении данных МикроМРВ прекращает работу на первом цикле с выводом на терминал сообщения:
run-time error M6101:MATH
-floating-point error:invalid.
Объявление static переменных делалось в двух вариантах:
1)в теле процедуры ФБ;
2)вне его.
Инициализация внутри main результата не дала. При первом подключении ФБ данные не равны 0.
Что мы делаем не так ?
Запускался МикроМРВ релизов 5.11 и 5.12.

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


Icon 2 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
Трудно сказать, что Вы делаете не так, ведь код блока на С++ Вы писали, а не мы... [duno / незнайка]
Сообщения / Posts 17106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Сафронов
Forum Haunter / Завсегдатай форума
Участник № / Member № 408


Icon 1 отправлено / posted      Профиль для / Profile for Сафронов           Редактировать/удалить сообщение / Edit/Delete Post 
Если в текст ФБ, помещенный в справке, вставить инициализацию при объявлении данных static float, то МикроМРВ прекращает работу на первом цикле так же, как и в случае применения ФБ, написанного нами.
Сообщения / Posts 136 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 2 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
Я привел Вам пример на 800 элементов просто как пример, наверняка у Вас не хватает стэка, чтобы разместить в нем данные Вашего массива - вот система ДОС и "вылетает"... На сколько элементов у Вас массив и какая его размерность?
Сообщения / Posts 17106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 4 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
И еще - обязательно в настройках компилятора должно стоять, что "SS!=DS, DS loaded on function entry"!
Сообщения / Posts 17106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Сафронов
Forum Haunter / Завсегдатай форума
Участник № / Member № 408


Icon 1 отправлено / posted      Профиль для / Profile for Сафронов           Редактировать/удалить сообщение / Edit/Delete Post 
Массив данных состоит из 5 элементов типа float. Требования приведенные в справке к написанию ФБ мы соблоюдаем.
Сообщения / Posts 136 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
Пришлите, пожалуйста, на адрес hotline@adastra.ru Ваш вариант модификации нашего примера FBD-блока для анализа.
Сообщения / Posts 17106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Сафронов
Forum Haunter / Завсегдатай форума
Участник № / Member № 408


Icon 1 отправлено / posted      Профиль для / Profile for Сафронов           Редактировать/удалить сообщение / Edit/Delete Post 
Текст ФБ отправили.
Сообщения / Posts 136 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
Текст получили.
Комментарии отправлены почтой.

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

   Закрыть тему / 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