Страница 3 из 23 ПерваяПервая 1234513 ... ПоследняяПоследняя
Показано с 21 по 30 из 241

Тема: примеры для программирования

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

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

    По умолчанию Не подключается к com порту

    Добрый день! Подскажите пожалуйста, использую ТРМ202 и преобразователь АС4, Пишу на делфи, при попытке подключится появляется к порту появляется ошибка "Не удалось открыть порт (функция!)', 'Ошибка!', MB_OK". Через конфигуратор работает все отлично. Может быть где то нужно указывать адрес устройства? Если у когог то есть примеры реализации на делфи, скиньте gj;fkeqcnf на почту szimogorov@yandex.ru В качестве примера взял код с этой темы

    Код:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    const
    // Определения четности (Без)
            prty_NONE:integer=0;
    // Определения количества Бит данных
            databits_8:integer=1;
    // Определения количества стоп Бит
            stopbit_1:integer=0;
    // Вид конвертора RS485 (Автоматический конвертор)
            RS485CONV_AUTO:integer=1;
    
    
    type
    TProcOpenPort=function (n,speed,part,bits,stop,vid:DWORD):integer;stdcall;
    TProcSetupPort=function (n,speed,part,bits,stop,vid:DWORD):integer;stdcall;
    TProcClosePort=function :integer;stdcall;
    TProcSetApiMode=function (n:DWORD):integer;stdcall;
    TProcReadIEEE32=function (adr,adr_type:DWORD;command:pchar;var value:single;var time:integer;index:integer):integer;stdcall;
        TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        Edit1: TEdit;
        Edit2: TEdit;
        Label1: TLabel;
        Label2: TLabel;
        procedure FormCreate(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
    Form1: TForm1;
    hLibInst:cardinal;
    func_avail:boolean;
    OpenPort:TProcOpenPort;
    SetupPort:TProcSetupPort;
    ClosePort:TProcClosePort;
    ReadIEEE32:TProcReadIEEE32;
    SetApiMode:TProcSetApiMode;
    
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
     hLibInst:=LoadLibrary('owen_io.dll');
     if(hLibInst<>0)
       then
        begin
         func_avail:=true;
         OpenPort:=GetProcAddress(hLibInst,'OpenPort');
         if(not Assigned(OpenPort)) then
           begin
            func_avail:=false;
            exit;
           end;
         ClosePort:=GetProcAddress(hLibInst,'ClosePort');
         if(not Assigned(ClosePort)) then
           begin
            func_avail:=false;
            exit;
           end;
         SetupPort:=GetProcAddress(hLibInst,'SetupPort');
         if(not Assigned(SetupPort)) then
           begin
            func_avail:=false;
            exit;
           end;
         ReadIEEE32:=GetProcAddress(hLibInst,'ReadIEEE32');
         if(not Assigned(ReadIEEE32)) then
           begin
            func_avail:=false;
            exit;
           end;
         SetApiMode:=GetProcAddress(hLibInst,'SetApiMode');
         if(not Assigned(SetApiMode)) then
           begin
            func_avail:=false;
            exit;
           end;
          end
     else
      func_avail:=false;
    end;
    
    // ОТКРЫВАЕМ COM-ПОРТ #1
    procedure TForm1.Button1Click(Sender: TObject);
    var
     op_succ:integer;
    begin
     if func_avail then
       begin
         SetApiMode(1);
         op_succ:=OpenPort(0,2,0,databits_8,stopbit_1,RS485CONV_AUTO);
         if (op_succ<>0) then
           Application.MessageBox('Не удалось открыть порт', 'Ошибка!', MB_OK)
         else
           begin
            SetupPort(0,2,0,databits_8,stopbit_1,RS485CONV_AUTO);
           end;
        end
     else
          Application.MessageBox('Не удалось открыть порт (функция!)', 'Ошибка!', MB_OK);
    end;
    
    // ЗАКРЫВАЕМ COM-ПОРТ #1
    procedure TForm1.Button2Click(Sender: TObject);
    var
     cp_succ:integer;
    begin
     if func_avail then
       begin
       cp_succ:=ClosePort();
        if (cp_succ<>0) then
          Application.MessageBox('Не удалось закрыть порт', 'Ошибка!', MB_OK);
       end
     else
          Application.MessageBox('Не удалось закрыть порт (функция!)', 'Ошибка!', MB_OK);
    end;
    
    // ПО ИДЕЕ ЧИАТЕМ С ПЕРВОГО ВХОДА ТРМ251
    procedure TForm1.Button3Click(Sender: TObject);
    var
     iee:integer;
     val:single;
     tm:integer;
    begin
      iee:=ReadIEEE32(16,0,'rEAd',val,tm,-1);
      Edit1.Text:=FloatToStr(val);
      Edit2.Text:=IntToStr(iee);
      end;
    
    
    end.

  2. #2

    По умолчанию

    Подскажите, пожалуйста, где можно посмотреть пример использования библиотек для чтения измерений с МВА8 и управления МВУ8, подключенных через АС4, в VisBasic ?

  3. #3

    По умолчанию

    В состав библиотеке есть описание и там примеры. Конкретно АС4 или другой преобразователь неважно. Смотрите в описании прибора какой тип имеет нужный ва параметр и используете из библиотеки ту функцию, которая читает этот параметр.

  4. #4

    По умолчанию

    Здравствуйте!

    Т.к. в выложенной на сайте библиотеки нет примеров использования программирования МДВВ, сбросьте мне, пожалуйста, их на почту. В описании прибора значится информация, что в поставку библиотека входит.

    Моя почта: kashlev_alex@rambler.ru

    Заранее спасибо за ответ!

  5. #5

    По умолчанию

    owen_io.dll - универсальная библиотека для связи с приборами по протоколу ОВЕН. Чтобы работать с конкретным прибором достаточно знать имя параметра и формат данных. Список оперативных параметров приведен в руководстве по эксплуатации прибора. Так же в составе дистрибутива библиотеки есть файл tags.txt, в котором указано, какие функции библиотеки использовать для работы с параметрами приборов.

    Для работы с оперативными параметрами МДВВ используются следующие функции:

    r.ОЕ - ReadIEEE32, WriteIEEE32
    r.Cn - ReadUInt
    r.Cou - ReadUInt, WriteWord

  6. #6

    По умолчанию

    Спасибо за быстрый и понятный ответ!

  7. #7
    незарегистрированный
    Гость

    По умолчанию контрольная сумма

    Подскажите, пожалуйста. Как посчитать контрольную сумму в запросе параметра?

  8. #8

    По умолчанию

    Код:
    unsigned short owenCRC16(unsigned char* packet, size_t length)
    {
    	size_t i, j;
    	unsigned short crc;
    
    	assert(packet);
    
    	crc = 0;
    	for (i = 0; i < length; ++i)
    	{
    		unsigned char b = packet[i];
    		for (j = 0; j < 8; ++j, b <<= 1)
    		{
    			if ((b ^ (crc >> 8)) & 0x80)
    			{
    				crc <<= 1;
    				crc ^= 0x8F57;
    			}
    			else
    				crc <<= 1;
    		}
    	}
    	return crc;
    }

    http://www.owen.ru/forum/showthread....F1%F3%EC%EC%E0

  9. #9

    По умолчанию

    Как проверирть релейные выходу ПЛК63 -М -рррррр? В эмуляторе все отлично. Физически не контачит. Я просто пытаюсь проверить замыкание - размыкания реле. Без питания и нагрузки. Все мертво. Что я делаю не так?

  10. #10

    По умолчанию

    Здравствуйте.
    Немогу найти пример работы с ПЛК (использую 154) посредством библиотеки owen_io.
    Вопрос в том как с помощью Бейсика обратиться к переменным, с запросом чтение/запись, определенных в ПЛК в OWEN(slave).

Страница 3 из 23 ПерваяПервая 1234513 ... ПоследняяПоследняя

Ваши права

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