Показано с 1 по 4 из 4

Тема: МВА8, С++, modbus

  1. #1

    По умолчанию МВА8, С++, modbus

    Добрый день.
    Подключаю мва8 напрямую к процессору и библиотеки модбас использовать немогу.
    Нужен простой опрос состояния входов платы, изначально в конфигураторе я ее настрою.
    Работа будет проходить так: отправил посылку(одна стандартная для опроса входов)-получил ответ.
    Можете мне помочь в следующем.
    1. Ткните в место с примерами на с++, или другом языке.
    2. Возможно дадите строку команды для опроса готовую ?
    Спасибо.

  2. #2

    По умолчанию

    я опрашивал так на С++ builder
    void __fastcall TForm1::chanel1Click(TObject *Sender)
    {int j;
    char t,d;
    char buff[17];
    AnsiString f;
    float x;
    // объединение
    union {
    unsigned char c[4];
    float count;
    } cnt;
    // канал 1 // 1 0 0 3 0 0 0 3 0 0 0 2 E 8 d a
    char canal1[16] = {0x31,0x30,0x30,0x33,0x30,0x30,0x30,0x33,0x30,0x30 ,0x30,0x32,0x45,0x38,0x0d,0x0a};

    ApdComPort1->Output = ":";
    for(j=0;j<16;j++)
    {ApdComPort1->Output = canal1[j];}
    strcpy(buf,s.c_str()); // копируем строку в буфер
    Edit1->Text=buf;

    for(int s=0;s<17;s++)
    // дешифровать входные данные
    { t=buf[s];
    if(t==':')d=':';
    if(t=='0')d=0x00;
    if(t=='1')d=0x01;
    if(t=='2')d=0x02;
    if(t=='3')d=0x03;
    if(t=='4')d=0x04;
    if(t=='5')d=0x05;
    if(t=='6')d=0x06;
    if(t=='7')d=0x07;
    if(t=='8')d=0x08;
    if(t=='9')d=0x09;
    if(t=='A')d=0x0A;
    if(t=='B')d=0x0B;
    if(t=='C')d=0x0C;
    if(t=='D')d=0x0D;
    if(t=='E')d=0x0E;
    if(t=='F')d=0x0F;
    buff[s]=d;}

    unsigned char ch1=(buff[1]<<4)+buff[2]; // адрес
    Edit3->Text = IntToStr(ch1);
    unsigned char ch2=(buff[3]<<4)+buff[4]; // функция
    Edit4->Text = IntToStr(ch2);
    unsigned char ch3=(buff[5]<<4)+buff[6]; // количество регистров
    Edit5->Text = IntToStr(ch3);
    unsigned char ch4=(buff[7]<<4)+buff[8]; // данные
    Edit6->Text = IntToStr(ch4);
    unsigned char ch5=(buff[9]<<4)+buff[10]; // данные
    Edit7->Text = IntToStr(ch5);
    unsigned char ch6=(buff[11]<<4)+buff[12]; // данные
    Edit8->Text = IntToStr(ch6);
    unsigned char ch7=(buff[13]<<4)+buff[14]; // данные
    Edit9->Text = IntToStr(ch7);
    unsigned char ch8=(buff[15]<<4)+buff[16]; // контрольная сумма
    Edit9->Text = IntToStr(ch8);

    // заносим в объединение
    cnt.c[0]=ch5;
    cnt.c[1]=ch4;
    cnt.c[2]=ch7;
    cnt.c[3]=ch6;
    x=cnt.count;
    f=FormatFloat("00.00",x);
    Edit4->Text = f;
    s=""; // обнуляем строку
    }

  3. #3

    По умолчанию

    теперь использую библиотеку owen.dll. всё работает не только с мва но трм151 трм202

  4. #4

    По умолчанию

    Благодарю.
    Пока сделал опрос на DCON, по вашей наводке попробую на мод бас.

Похожие темы

  1. МВА8 и ModBus-RTU
    от porex в разделе Мх110
    Ответов: 24
    Последнее сообщение: 04.10.2013, 17:53
  2. МВА8 modbus
    от igkondrat в разделе Мх110
    Ответов: 5
    Последнее сообщение: 30.01.2013, 13:49
  3. проблемка МВА8+ModBus
    от Igor_85 в разделе Помощь Разработчикам
    Ответов: 6
    Последнее сообщение: 01.12.2009, 18:30
  4. Modbus RTU и МВА8
    от Анастасия в разделе Мх110
    Ответов: 2
    Последнее сообщение: 30.06.2008, 07:13
  5. МВА8 + OPC ModBus
    от SeZon в разделе Помощь Разработчикам
    Ответов: 4
    Последнее сообщение: 21.09.2007, 11:56

Ваши права

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