Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > Архив
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

Передача внутренних переменных ADAMa на

 Ответить Ответить Страница  123 5>
Автор
Сообщение
compm2001 Смотреть выпадающим
Участник
Участник


Присоединился: 09 Июнь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 78
Свойства публикации Свойства публикации   Ответить, цитируя автора - compm2001 Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: Передача внутренних переменных ADAMa на
    Опубликовано: 21 Июль 2005 08:45

Здравствуйте! Подскажите пожалуйста такой вопрос. Как сделать чтобы OPC сервер на ПК видел внутренние переменные контроллера (т.е. переменные программы на С++). К Адаму прилагается библиотека функций на С++, в том числе там есть функции касающияся ModbusOPC Server`а и ModbusOPC клиента. Уважаемый Petrov сообщил что "Надо будет переменные положить в определенные ячейки памяти, доступные по Модбасу. Входы/выходы должны быть уже там." Не могли бы Вы поподробнее рассказать про это. Заранее огромное спасибо.

Наверх
compm2001 Смотреть выпадающим
Участник
Участник


Присоединился: 09 Июнь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 78
Свойства публикации Свойства публикации   Ответить, цитируя автора - compm2001 Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 22 Июль 2005 11:33
Если это невозможно или Вы с таким не сталкивались, то подскажите как управлять выполнением программы на контроллере с ПК?
Наверх
remint Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 24 Февраль 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 185
Свойства публикации Свойства публикации   Ответить, цитируя автора - remint Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 22 Июль 2005 12:33
Первоначально опубликовано compm2001

Если это невозможно или Вы с таким не сталкивались, то подскажите как управлять выполнением программы на контроллере с ПК?

Я никогда не работал с вашим контроллером, и сейчас постараюсь просто порассуждать логически. У него должен быть какой-то механизм, для программистов, для обмена данными по Модбас. Какой это механиз? Очевидно, что или резидентный драйвер, или библиотека, которую необходимо компоновать со своим приложением. Если это так, то наверняка должно быть описание, какой интерфейс имеет драйвер или библиотека - по другому просто не может быть! И наверняка кроме описания будет еще и пример. Поищите на диске, который прилагался к контроллеру, наверняка найдете.

Вообще вижу ваши постоянные вопросы, и создается впечатление, что вы совсем не читате документацию. Многие люди программили этот контроллер - и наверняка находили ответы в ней. контроллеры делает серьезная фирма, у них вся документация должна быть. Я сам работал с серией i7188 - там куча материала прилагается на диске, документация, примеры. Нужно только посидеть вдумчиво, поизучать.

По поводу компилятора Borland С++ 3. Если сказано, что библиотека предназначена для Turbo C++ 3, то и надо использовать только его, ничего с этим не поделаешь. У борландовских компиляторов в досовские времена были вопросы по поводу несовмести библиотек от разных компиляторов. В первую очередь это было связано с библиотекарем, а не с самим компилятором. Я, помню, вытаскивал объектники из библиотек, декомпилировал в ассемблер, потом собирал заново библиотеку.

И напоследок. Я уже говорил ранее - пишете свою программу, так какие могут быть вопросы по поводу того, как с ней контактировать извне. Все зависит только от вас. Вам предложили вариант использования Модбас - почитайте доку, как работать с этой библиотекой, изучите заголовочный файл, примеры. Если этого не делать - как тогда можно писать программу?
Александр Бурмистров,
www.entels.ru
Наверх
compm2001 Смотреть выпадающим
Участник
Участник


Присоединился: 09 Июнь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 78
Свойства публикации Свойства публикации   Ответить, цитируя автора - compm2001 Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 22 Июль 2005 13:34
Здравствуйте ув. Remint! Очень рад вашему сообщению.
Я прочитал 490 стр. документации по ADAMу. Там есть всё. Начиная от того как его крепить и заканчивая рассмотрением каждой функции прилагаемой библиотеки с примером использования. В этой библиотеке имеются функции для реализации на стороне контроллера как ModbusTCP server так и ModbusTCP клиент. Еще загвоздка в том что у меня пока нет OPC сервера Modbus/TCP чтобы поэкспериментировать. Тот что на ftp у прософта не поддерживает TCP (очень долго мучался). Но время терять не хочется (ждать пока доставят OPC) вот я и спрашиваю как это вообще теоретически. Чтобы быть к этому готовым. Как я правильно понимаю и как сказал ув. Petrov, нужно переменные положить в определенную область памяти и тогда OPC сервер на ПК их увидит... Можно хоть немного растолковать это, уверен что этот вопрос мучает не только меня...
Наверх
KozlovKS Смотреть выпадающим
Prosoft.ru
Prosoft.ru


Присоединился: 21 Июнь 2003
Online Status: Offline
Публикации: 432
Свойства публикации Свойства публикации   Ответить, цитируя автора - KozlovKS Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 22 Июль 2005 13:43

Первоначально опубликовано compm2001

Еще загвоздка в том что у меня пока нет OPC сервера Modbus/TCP чтобы поэкспериментировать

www.google.com, поиск "modbus/tcp"+demo - думаю, можно подобрать.

Наверх
remint Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 24 Февраль 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 185
Свойства публикации Свойства публикации   Ответить, цитируя автора - remint Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 22 Июль 2005 13:54
Первоначально опубликовано compm2001

В этой библиотеке имеются функции для реализации на стороне контроллера как ModbusTCP server так и ModbusTCP клиент. Еще загвоздка в том что у меня пока нет OPC сервера Modbus/TCP чтобы поэкспериментировать. Тот что на ftp у прософта не поддерживает TCP (очень долго мучался). Но время терять не хочется (ждать пока доставят OPC) вот я и спрашиваю как это вообще теоретически.

Что "это"? Экспорт данных из своей программы, которые можно увидеть снаружи через библиотеку ModbusTCP? Так вы же просмотрели описание всех функций библиотеки адама - разве там нет ответа на этот вопрос?
Александр Бурмистров,
www.entels.ru
Наверх
compm2001 Смотреть выпадающим
Участник
Участник


Присоединился: 09 Июнь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 78
Свойства публикации Свойства публикации   Ответить, цитируя автора - compm2001 Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 22 Июль 2005 14:16
Первоначально опубликовано remint

Что "это"? Экспорт данных из своей программы, которые можно увидеть снаружи через библиотеку ModbusTCP? Так вы же просмотрели описание всех функций библиотеки адама - разве там нет ответа на этот вопрос?


Библиотека для написания программ на стороне контроллера. Ответа я не нашел.

Есть функция ADAMTCP_ModServer_Create
Description: Create a Modbus/TCP Server.
Syntax:
int ADAMTCP_ModServer_Create(int Host_port, unsigned long waittimeout, unsigned int numberConns, unsigned char * ptr_mem, int size_mem);

Host_Port - The port for Midbus/TCP server
Waittimeout - Time out value, 0~0xfffffffff milli-second
NumberConns - Maximum connections for client
ptr_mem - Share memory
size_mem - The size of share memory

Пример:
ADAMTCP_ModSrever_Create(502,5000,20,(unsigned char *)Share_Mem,sizeof(Share_Mem)))
Насколько я понимаю это как раз то что нужно?

Все что мне нужно это управлять ходом выполнения программы на контроллере с ПК. Т.е. хотелось бы менять значения переменных (С++ программы) на контроллере.


Как это обычно делают я не знаю. Вот решил попробовать при помощи OPC сервера для контроллера. Потому что он (OPC сервер) у нас будет. Подскажите как это делаете Вы.
Наверх
remint Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 24 Февраль 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 185
Свойства публикации Свойства публикации   Ответить, цитируя автора - remint Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 22 Июль 2005 14:59
Первоначально опубликовано compm2001


int ADAMTCP_ModServer_Create(int Host_port, unsigned long waittimeout, unsigned int numberConns, unsigned char * ptr_mem, int size_mem);

Host_Port - The port for Midbus/TCP server
Waittimeout - Time out value, 0~0xfffffffff milli-second
NumberConns - Maximum connections for client
ptr_mem - Share memory
size_mem - The size of share memory

Только одна функция, и все? Больше ничего нет для того, чтобы как-то передавать данные Модбас-серверу? Ясно, что вы должны как-то организовать массив переменных для него, который, видимо, можете читать/писать сами из своей программы, и с которым будет работать Модбас-сервер. Но можеть быть и по другому, конечно.
Если других функций нет, то значит надо как-то использовать ту память, что вы ему передаете через указаталь и ее размер. Есть какое-нибудь описание, зачем серверу передается эта память, для чего она ему? Может - как раз ее он будет использовать для массива переменных?

И нет ли там еще каких процедур для того, чтобы выделять процессорное время Модбас-серверу? В ДОСе часто так делается, это же не Windows, в ответ на функцию инициализации тут не получится запустить новый поток.
Александр Бурмистров,
www.entels.ru
Наверх
Максим Ананских Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 14 Май 2003
Online Status: Offline
Публикации: 770
Свойства публикации Свойства публикации   Ответить, цитируя автора - Максим Ананских Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 22 Июль 2005 14:59

Первоначально опубликовано compm2001

ADAMTCP_ModSrever_Create(502,5000,20,(unsigned char *)Share_Mem,sizeof(Share_Mem)))

Эта функция запускает сервис Modbus/TCP на 502 порте, с поддержкой до 20 клиентов. Вы передаете ей указатель на разделяемую область памяти, которая будет доступна клиентам по протоколу Modbus/TCP. Что за данные Вы там будете хранить - дело Ваше. Проверить работу можно любым бесплатным OPC сервером Modbus.

Инженер-системотехник
+7 (916) 477 3925
Наверх
compm2001 Смотреть выпадающим
Участник
Участник


Присоединился: 09 Июнь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 78
Свойства публикации Свойства публикации   Ответить, цитируя автора - compm2001 Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 22 Июль 2005 16:02
Первоначально опубликовано Максим Ананских

Первоначально опубликовано compm2001

ADAMTCP_ModSrever_Create(502,5000,20,(unsigned char *)Share_Mem,sizeof(Share_Mem)))


Эта функция запускает сервис Modbus/TCP на 502 порте, с поддержкой до 20 клиентов. Вы передаете ей указатель на разделяемую область памяти, которая будет доступна клиентам по протоколу Modbus/TCP. Что за данные Вы там будете хранить - дело Ваше. Проверить работу можно любым бесплатным OPC сервером Modbus.



Т.е. при помощи этой функции можно предоставить OPC серверу на ПК мои переменные? Если да, то можно небольшой пример показать, в первый раз всетаки...
Наверх
 Ответить Ответить Страница  123 5>

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz