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

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

  1. #141

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

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

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

  2. #142

    По умолчанию

    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
    что у меня не так? Подскажите пожалуйста

  3. #143

    По умолчанию

    Доброе утро. Что можно проверить:
    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 в 11:58.

  4. #144

    По умолчанию

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

  5. #145

    По умолчанию

    что-то делаю не так...
    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)

  6. #146

    По умолчанию

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

  7. #147

    По умолчанию

    procedure TForm1.FormCreate(Sender: TObject);
    begin

    V := CreateOleObject('OPC.Automation'); V.Connect('OWEN.RS485');
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    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);
    end;

    ошибка в строке:Item1.Read(V.OPCGroups.GetOPCGroup('Group1' ).OPCItems.Item('Com1/MVA8(11bit adr=40)/General_ID/VER'),Val1); - параметр задан неверно

  8. #148

    По умолчанию

    Точно сказать не могу, т.к. с OWEN.RS485 не работал (не было пока надобности). Поэтому, может и не в тему (вдруг пригодится...), но я в первую очередь постарался подцепиться к серверу через Kassl-овский dOPC Explorer и посмотрел, как отражаются там нужные переменные. В Delphi они будут выглядеть точно также. Может быть там все дело в какой-нибудь точке. И еще...может я не прав, но может параметр General_ID стоит поменять на General_IDs? Вы в любом случае напишите, получилось что-нибудь или нет. Может тоже придется с этим столкнуться.

    P.S. Насчет General_ID точно обманул. Посмотрел по Explorer - переменная так и отражается. Проверьте соответствие типа обьявленной переменной Val1. Может быть все-таки не string?
    Последний раз редактировалось AWA1971; 21.04.2010 в 13:50.

  9. #149

    По умолчанию

    var
    V:variant;
    val1:string;

    FormCreate:
    V := CreateOleObject('OPC.Automation');
    V.Connect('OWEN.RS485');
    V.OPCGroups.add('Group1');
    V.OPCGroups.GetOPCGroup('Group1').OPCItems.AddItem ('Com1/MVA8(8bit adr=40)/General_ID/VER', 1);
    Button1Click:
    val1:=V.OPCGroups.item('Group1').OPCItems.Item('Co m1/MVA8(8bit adr=40)/General_ID/VER').value;
    edit1.Text:=val1;

    и в edit1 пусто, в kassl строки пишутся со '/', т.е. также, и значения читаются. меня начало смущать CreateOleObject('OPC.Automation'); может необходимы какие либо действия на самой виндой?

  10. #150

    По умолчанию

    Может модуль какой не подключен? Примерный перечень:
    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls, ComObj, OleCtrls, ExtCtrls;

    Что касается CreateOleObject('OPC.Automation'), то если в трее появляется иконка "485", то свою задачу он выполняет. Попробуйте обьявить Val1:variant. Может еще какой-нибудь тип. Просто нет у меня МВА (да и все ОВЕНовское в работе), попробывать читать-писать, соответственно, не могу.
    Народ, да помогите же человеку! Ведь в мелочи какой-нибудь дело то.

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

Ваши права

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