Форум 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 » Пользовательские FBD в МикроМРВ

   
Автор / Author Тема / Topic: Пользовательские FBD в МикроМРВ
HELLA
Forum Haunter / Завсегдатай форума
Участник № / Member № 104


Icon 1 отправлено / posted      Профиль для / Profile for HELLA           Редактировать/удалить сообщение / Edit/Delete Post 
Просьба сообщить тип компилятора и его настройки
(тип проекта и опции и- как понимать "сегмент стека не должен равняться сегменту данных (SS<>DS); ") для создания пользовательских FBD в МикроМРВ.
Заранее благодарны.

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


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
Рекомендуемый компилятор: MSVC 1.52 или Borland под MS-DOS.
Тип проекта - "MS-DOS Application".
Насчет стека - у компилятора есть такая опция: "SS!=DS, DS NOT loaded on function entry".
Модель памяти "Large". И обязательно поддержка in-line сопроцессора (не эмуляция!).

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


Icon 1 отправлено / posted      Профиль для / Profile for HELLA           Редактировать/удалить сообщение / Edit/Delete Post 
Компилятор BORLAND C++ v.5.02 да и другие
выдают много ошибок по строке {NULL,NULL}:

MODULE_ENTRY_POINT module_entry_point_table [] = {

{"FBD_DLL", FBD_DLL },

{"zFBD_DLL_info", zFBD_DLL_info },

{NULL, NULL }

};
nfo :Compiling E:\documents\text_on_cpp\testapp.cpp
Error: testapp.cpp(55,7):Undefined symbol 'NULL'
Error: testapp.cpp(55,14):Multiple declaration for 'NULL'
Error: testapp.cpp(55,14):Size of 'NULL' is unknown or zero
Error: testapp.cpp(55,14):Declaration syntax error
Error: testapp.cpp(55,14):Unexpected }
Error: testapp.cpp(57,2):Unexpected }
Error: testapp.cpp(69,15):Declaration terminated incorrectly
Error: testapp.cpp(75,7):Undefined symbol 'i'
Error: testapp.cpp(75,14):Expression syntax
Error: testapp.cpp(77,6):Expression syntax
Error: testapp.cpp(85,14):Undefined symbol '_off'
Error: testapp.cpp(95,35):Expression syntax
Error: testapp.cpp(101,14):Expression syntax
Error: testapp.cpp(103,5):Expression syntax
Error: testapp.cpp(125,6):Undefined symbol '_seg'
Warn : testapp.cpp(135,6):Unknown assembler instruction
Warn : testapp.cpp(141,2):Parameter 'argv' is never used
Warn : testapp.cpp(153,2):Parameter 'l' is never used
Warn : testapp.cpp(153,2):Parameter 'rl' is never used
Error: testapp.cpp(167,8):Call to undefined function 'strcpy'
Компилятор возможно не тот...

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


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
Прошу прощения, перепутал разработку драйвера RWH для МикроМРВ с DLD-блоком.
В принципе - требования те же, но вот возникает сомнения, что 5-я версия Borland-компилятора подойдет. Дело в том, что специфика написания FBD-блока для МикроМРВ, довольно сильно ориентирована на MSVC (версии 1.5 - не выше), и если RWH еще можно было бы написать в Borland'е, то FBD-блок как DLD - врядли.

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


Icon 1 отправлено / posted      Профиль для / Profile for HELLA           Редактировать/удалить сообщение / Edit/Delete Post 
Добрый день!
Как задать параметр
LFBD=I – загрузка необходимого файла *.dld до загрузки базы каналов. Параметр I – это число в шестнадцатеричном формате, каждый бит которого указывает имя загружаемого dld-файла.
У нас три скомпилированных файла fbd0-fbd2.dld.
Профайлер ругается FBD_DLL not found fbd1.dll
Система ругается This program requires Microsoft
Windows.
Между тем все fbd.dll наличествуют в директории
проекта;даже после удаления всех fbd-программ
проект не запускается.

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


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
Вы эти dld получили путем переименования dll?
В MS-DOS dll работать естественно не будут! DLD должны создаваться специально как MS-DOS приложение, а не Win32 DLL.

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


Icon 1 отправлено / posted      Профиль для / Profile for HELLA           Редактировать/удалить сообщение / Edit/Delete Post 
Добрый день!
Все dld получили путем переименования
*.exe.Немного подумав,мы получили работающую
FBD использовав листинг примера.
Тут все дело в опциях компилятора
С++ 1.52:Code generation-CPU.
Если задать его -8086/8088 ,то работает.
Но при попытке установить -80386 и попытке
использовать переменные типа double выдается
сообщение:
This program requires Microsoft.
Весь вопрос в том,как заставить FBD программу
вычислять полином аппроксимации кривой термопары
используя коэффициенты типа К0=-9.4111517845е-4
и т.д.,иными словами ,обеспечить необходимую
точность вычислений,имея контроллер на процессоре
486DX4(M7).
Windows.

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


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
Попробуйте поставить в настройках компилятора 80286 и использование "in-line инструкций сопроцессора", а не его эмуляцию.

Не понял насчет приписки "Windows" в конце Вашей фразы - это к чему?

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


Icon 1 отправлено / posted      Профиль для / Profile for HELLA           Редактировать/удалить сообщение / Edit/Delete Post 
1.Приписка WINDOWS случайна.
2.Проект примера работает при опциях
компилятора
С++ 1.52:Code generation-CPU.
8086/8088 ,80186/188, и -286.
Суммирование по двум входам
rf[0]=f[0]+f[1] работает.
Не проходит конструкция

float const K0=1.1234567890;
rf[0]=K0*f[0]+f[1]
Выдается результат 2.0000,равный значению второго
входа f[1],привязанного к константе =2
Та же конструкция в отладчике работы *.dll
работает.

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


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


Icon 1 отправлено / posted      Профиль для / Profile for HELLA           Редактировать/удалить сообщение / Edit/Delete Post 
Выслал на hotline1@adastra.ru
В данном варианте при нуле на 1 входе FBD0.dld и
двойке на втором входе - на выходе 3.88612е-019.
При изменении первого входа есть изменения
но не соответствуют реалиям.

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


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
Это происходит потому что при использовании опции "SS!=DS, DS NOT loaded on function entry" стэк памяти констант программы не грузит адрес сегмента и получается, что все переменные, объявленные или инициированные как константы "теряют" свою адресацию. Реультат - из памяти берется значение не по тому адресу.
Используйте другую опцию компилятора: "SS!=DS, DS loaded on function entry" - должно заработать нормально.

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


Icon 1 отправлено / posted      Профиль для / Profile for HELLA           Редактировать/удалить сообщение / Edit/Delete Post 
Добрый день!
Все заработало.
Большое спасибо!

Сообщения / Posts 139 | Из / 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