This is topic Связь Trace Mode 6.07 и Delphi in forum Общие вопросы / Common questions at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/45/t/000171.html

Posted by iliouchine (Участник № / Member № 4686) on :
 
Добрый день. У меня возник такой вопрос. Можно ли связать Trace Mode 6.07 с Delphi и как это организовать. Основная задача сейчас, которая меня интересует, это переброс вычисленных значений переменных в файл Delphi. Как это можно реальзовать? Желательно получение в итоге файла с расширением dll. Спасибо.
 
Posted by Romсheg (Участник № / Member № 3792) on :
 
[Усмешка / Big Grin] вы сами поняли, что спросили?

Лучше поясните, что вообще вы хотите сделать, а то по описанию - Вы пытаетесь скрестить носорога с петухом, да так, чтобы полученный гибрид вам еще и яйца нес... [Улыбка / Smile]
 
Posted by iliouchine (Участник № / Member № 4686) on :
 
Спасибо за ответ. Поясню более подробно, какая имеется проблема. Просто есть 2 проекта. Один составлен в Delphi, другой на Trace Mode 6.07. Необходимо, чтобы вычисленные данные в Trace Mode 6.07 использовались в другой программе, написанной на Delphi. К примеру есть две переменные, вычисленные в программме в Trace Mode 6.07 в реальном времени передавались либо в файл, доступный для прочтения в Delphi, либо хотя бы в текстовый файл, откуда можно было забрать эти переменные. То есть алгоритм написан на языке Техно ST, а передать вычисленные значения переменных в реальном времени нужно в программу, написанную на Delphi. Так понятнее написано, ничего скрещивать не собираюсь, просто использовать данные одной системы в другой. Можно даже назвать это в каком то смысле конвертацией.
 
Posted by Romсheg (Участник № / Member № 3792) on :
 
Не важно на чем приложение написано, вам надо из ТМ6 данные в другое внешнее приложение передать. Сделать такое можно следующими путями:
1) через штатные интерфейсы вашего внешнего приложения (которое на Дельфи). Если в нем есть расшаренные функции для внешних вызовов в формате WinAPI, то вы можете напрямую их вызывать из программы ST в МРВ ТМ6 через механизм внешней библиотеки. Либо написать свою шлюзовую dll с функцией Shared Memory, которая будет некоторым транзактором данных между двумя приложениями.
Если вышесказанное вам на 50 или более % не понятно, то лучше не спрашивайте меня как это сделать, это не для любителей метод - тут надо будет быть профи в программировании. [Улыбка / Smile]
2) через стандартные логические протоколы. Ваше внешнее ПО поддерживает какой-либо протокол, например - ModBusTCP или ODBC? Если да - из проекта ТМ6 обращаемся по этому интерфейсу к нему. Если это приложение само в себе - что-то вроде черного ящика, то идем дальше.
3) через внешний файл - файл может формировать сам ТМ6: у канала Call есть режим работы в котором он может значения своих аргументов сохранять\подчитывать через внешний текстовый файл (читайте справку). Структура этого файла простейшая, так что если у вас есть исходный код вашего внешнего приложения, то легко сделаете его поддержку на подчитывание. Тогда из МРВ формируете таким каналом данные по аргументам, привязанным к нужным параметрам проекта в файл, а в приложении подчитываете этот файл.

[Пдмигивание / Wink]
 
Posted by iliouchine (Участник № / Member № 4686) on :
 
Большое спасибо за ответ и за помощь. Теперь хоть более понятно, как можно осуществить связь с другим проектом. Если у вас есть программа-пример по организации записи в файл атрибута WFile канала CALL, то буду очень признателен. Просто уже пробывал организовывать привязку канала Float с вычисленной выходной переменной в Trace Mode 6.07 к атрибуту WFile канала CALL. В итоге, как в справке написано создается файл канала CALL, но привязанное значение вычисленной выходной переменной там отсутствует, то есть текстовый файл пустой. Какого типа должны быть связанные каналы, а именно CALL и Float, чтобы значения перекидывались в текстовый файл. В принципе, я думаю, если эти значения можно будет перебрасывать в текстовый файл, то проблемы связи с Delphi не будет. Но первые два способа тоже буду пробывать, но через внешний файл просто проще будет, хотя бы для начала. Удачного дня.
 
Posted by Romсheg (Участник № / Member № 3792) on :
 
По вопросам работы канала Call - это уже лучше к техподдержке, у них наверняка есть и примеры проектов и ответы, почему у вас не работает как надо. [Пдмигивание / Wink]
 
Posted by iliouchine (Участник № / Member № 4686) on :
 
Большое спасибо. Удачи.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Аргумент канала CALL надо привязать к каналу FLOAT с вычисленной переменной.

В атрибут WFile канала CALL надо посылать управление из программы или с экрана. Надо иметь в виду, что этот атрибут обнуляется автоматически по исполнении экспорта.
Если Вы будете осуществлять программное управление экспортом в текстовый файл, необходимо предусмотреть, чтобы управление осуществлялось однократно по выбранному Вами событию.
Один из вариантов - условный оператор в ST-программе, в котором при фиксации условия оператор THEN выдает нужное управление, а оператор ELSE никакого управления не выдает.
 
Posted by iliouchine (Участник № / Member № 4686) on :
 
Спасибо.
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2