Страница 15 из 25 ПерваяПервая ... 51314151617 ... ПоследняяПоследняя
Показано с 141 по 150 из 248

Тема: драйвер Delphi

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Написано для PLCWinNT (реального ПЛС под рукой не было). Но принцип, думаю будет понятен. Смотрите описание в папке - вроде ничего не забыл.

    P.S. Переменные могут обозначаться по другому: «PLC1:.INP1», «PLC1:.PLC_PRG.INP1» или «.PLC_PRG.INP1» – думаю, разберетесь. Удачи
    Вложения Вложения
    Последний раз редактировалось AWA1971; 08.04.2010 в 11:07.

  2. #2

    По умолчанию

    Этот вариант OPC-клиента подходит и для Delphi и для Lasarus. Для него не надо копировать ***_TLB в каталог с проектом. Все, что надо, подключается в коде.
    Вложения Вложения

  3. #3

    По умолчанию

    что-то делаю не так...
    V: Variant;
    Item1:Variant;
    Val1:string;

    V := CreateOleObject('OPC.Automation');
    V.Connect('OWEN.RS485');
    V.OPCGroups.Add('Group1');
    Item1:= V.OPCGroups.GetOPCGroup('Group1').OPCItems.AddItem ('Com1/MVA8(11bit adr=40)/General_ID/VER', 1);
    Item1.Read(V.OPCGroups.GetOPCGroup('Group1').OPCIt ems.Item('Com1/MVA8(11bit adr=40)/General_ID/VER'),Val1); // здесь возникает ошибка!
    edit1.Text:=vartostr(Item1.Value);

    ошибка "параметр задан неверно" в edit1.Text пусто, хотя в логе OWEN.RS485:
    09:55:52.261 COM1: адрес 40(11) чтение VER данные: << 35 2E 37 76
    09:55:52.301 COM1: ВРЕМЯ ОПРОСА ВСЕХ ТЕГОВ 140(+-10ms)
    09:55:53.236 COM1: адрес 40(11) чтение VER данные: << 35 2E 37 76
    09:55:53.276 COM1: ВРЕМЯ ОПРОСА ВСЕХ ТЕГОВ 110(+-10ms)

  4. #4

    По умолчанию для тех, кто не хочет возиться к кодом

    есть довольно дешевый российский Opc-продукт. месяц пользуете бесплатно, потом покупаете у автора за 50 американских денег. в архиве присутствует описание и пример использования.

    И еще...Господа дельфийцы! Тут не раз уже упоминались собственные протоколы, ModBus, сокеты и т.д. Но только упоминались. До описания и примеров дело почему то не доходит. Россия большая да и не все форумчане в России живут. Ну не конкуренты мы друг другу. Никак под это определение не подходим. Одна ветка на всем форуме, а мы сами себе помочь не можем... И чего ради? Чтобы в собственных возникающих проблемах самим копаться? А если для другого это давно уже не проблема? Что от него, убудет что ли, если поделится? Уверен, что нет. Так что предлагаю подавить жабу, которая нас всех душит и поделиться с остальными. Лог-файлы, собственные компоненты, создание и подключение к БД - все, что, возможно для вас уже далеко не открытие Америки, другим пока - китайская грамота. Делитесь, господа, делитесь. Вам же тоже когда то помогали...
    Вложения Вложения
    Последний раз редактировалось AWA1971; 08.04.2010 в 13:53.

  5. #5

    По умолчанию

    procedure TForm1.Button6Click(Sender: TObject);
    var
    Item1,Item2:Variant;
    Val1,Val2:boolean;
    begin
    NewServer:=CoOPCServer.Create;
    NewServer.Connect('dOPCSim.Kassl.Simulation',NewSe rver.ServerNode);
    NewServer.OPCGroups.Add('Group1');
    Memo1.Lines.Add(NewServer.OPCGroups.Item('Group1') .Name);

    Item1:=NewServer.OPCGroups.GetOPCGroup('Group1').O PCItems.AddItem('int1', 1); //добавляем Item

    Item1.Read(NewServer.OPCGroups.GetOPCGroup('Group1 ').OPCItems.Item('int1'),Val1); //читаем значения

    end;

    Ошибка: Variable 'Val1' might not have been initialized
    что у меня не так? Подскажите пожалуйста

  6. #6

    По умолчанию

    Доброе утро. Что можно проверить:
    1. Запущена ли программа (в CodeSys или PLC). Это на всякий случай, просто меня разок так перемкнуло, что полчаса искал ошибку, так и не нажав «Онлайн» -> «Старт».
    2. Правильно ли обозначена переменная (Вы писали, что работали с dOPC - посмотрите, как название переменной отражается в dOPC Explorer, может быть ".PLC_PRG.int1" или "PLC1:.int1"). Обратите внимание на точку перед названием переменной.
    3. Тип переменной в CoDeSys и Delphi совпадает? У меня в CodeSys было BOOL, а в Delphi, соответственно, - boolean.
    4. Если переменная Val1 в Delphi еще где то используется, то может стоит вынести ее в глобальные переменные, а не привязывать к одной процедуре.

    P.S. Не мое, конечно, дело, но почему Вы не используете кодесисовский OPC-сервер? Бесплатно, нормально работает и есть возможность установить клиенту без самой CoDeSys. Впрочем - дело хозяйское. Удачи.
    Последний раз редактировалось AWA1971; 09.04.2010 в 10:58.

  7. #7

    По умолчанию

    Пример попроще, без дополнительных манипуляций с библиотеками. На ПЛК назначаете входу имя INP1, выходу - OUT1. Конфигурируете (если кто не знает как -на этой ветке в примерах есть описание) При подаче сигнала на вход ПЛК - загорается соответствующая надпись в Delphi. При нажатии кнопки "Изменить переменную OUT1"- срабатывает выбранный Вами выход на ПЛК. Единственное, в зависимости от того, глобальные или локальные будут переменные и как все это дело сконфигурировано, переменные для Delphi могут читаться по разному. Выше я уже приводил варианты. Поэкспериментируйте и все получится.
    Вложения Вложения
    Последний раз редактировалось AWA1971; 11.04.2010 в 23:58.

  8. #8

    По умолчанию

    Цитата Сообщение от AWA1971 Посмотреть сообщение
    Пример попроще, без дополнительных манипуляций с библиотеками. На ПЛК назначаете входу имя INP1, выходу - OUT1. Конфигурируете (если кто не знает как -на этой ветке в примерах есть описание) При подаче сигнала на вход ПЛК - загорается соответствующая надпись в Delphi. При нажатии кнопки "Изменить переменную OUT1"- срабатывает выбранный Вами выход на ПЛК. Единственное, в зависимости от того, глобальные или локальные будут переменные и как все это дело сконфигурировано, переменные для Delphi могут читаться по разному. Выше я уже приводил варианты. Поэкспериментируйте и все получится.
    можно немного подробнее по этому примеру?
    1) V := CreateOleObject('OPC.Automation'); - что это за обьект, откуда он берется???
    2) V.Connect('CoDeSys.OPC.02'); - откуда это имя, где его определять?
    3) Этот пример требует работающего на ПК OPC-сервера или общается с контроллером вместо него?
    4) какое отношение к обмену имеет CodeSys? Она так же должна быть установлена и запущена на этом ПК??

    Простите за ламерские вопросы, они возникают из-за нехватки теории. Обещаю разобравшись выложить подробное описание с примером для остальных

  9. #9

    По умолчанию

    Цитата Сообщение от michaeladm Посмотреть сообщение
    можно немного подробнее по этому примеру?
    1) V := CreateOleObject('OPC.Automation'); - что это за обьект, откуда он берется???
    2) V.Connect('CoDeSys.OPC.02'); - откуда это имя, где его определять?
    3) Этот пример требует работающего на ПК OPC-сервера или общается с контроллером вместо него?
    4) какое отношение к обмену имеет CodeSys? Она так же должна быть установлена и запущена на этом ПК??

    Простите за ламерские вопросы, они возникают из-за нехватки теории. Обещаю разобравшись выложить подробное описание с примером для остальных
    или хотя бы намеком на то, где можно прочитать о том откуда берутся 'OPC.Automation', 'CoDeSys.OPC.02', .OPCGroups.Add('Group1') и т.д. и что там есть еще

  10. #10

    По умолчанию

    попробуйте вызывать чтение отдельной кнопкой - возможно после подключения не сразу прочитываются данные из по Rs485
    Часто задаваемые вопросы по кодесис
    1) Почему программа не работает - Следует выполнить "Онлайн ->Старт"
    2) Где скачать CoDeSys, таргеты, прошивки, библиотеки - http://www.owen.ru/catalog/codesys_v3/opisanie

Страница 15 из 25 ПерваяПервая ... 51314151617 ... ПоследняяПоследняя

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •