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

ADAM 4500

 Ответить Ответить Страница  12>
Автор
Сообщение
Wolf Смотреть выпадающим
Новичок
Новичок


Присоединился: 15 Сентябрь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 10
Свойства публикации Свойства публикации   Ответить, цитируя автора - Wolf Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: ADAM 4500
    Опубликовано: 22 Сентябрь 2004 09:58

Подскажите, где ошибка?

Пишу программу для ADAM4500 (на Си), использую заголовочный файл  ADAM4500.h, постоянно выводит ошибку в строках:

void far interrupt com1_intr(void);
void far interrupt com2_intr(void);

 

ALE TE IPSAM
Наверх
Максим Ананских Смотреть выпадающим
Действительный член
Действительный член
Аватар

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

А компилятор у Вас какой?

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


Присоединился: 15 Сентябрь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 10
Свойства публикации Свойства публикации   Ответить, цитируя автора - Wolf Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 22 Сентябрь 2004 14:51

Турбо Си

+ Microsoft Visual Studio.net (по умолчанию)

ALE TE IPSAM
Наверх
Максим Ананских Смотреть выпадающим
Действительный член
Действительный член
Аватар

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

Не знаю насчет Visual C++, но с точки зрения TurboC никакого криминала я не вижу. Напишите хоть, что за ошибку он выдает?

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


Присоединился: 15 Сентябрь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 10
Свойства публикации Свойства публикации   Ответить, цитируя автора - Wolf Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 23 Сентябрь 2004 07:35

bcc32 -g100 -j25 -O2 -k- -vi -tWC -c -IC:\CBuilderX\include -o"C:\Documents and Settings\Wolf\cbproject\ConsoleApp9\windows\Release_Build\Documents and Settings\Wolf\Рабочий стол\ADAM Utility\EXAMPLE\EXAMPLE2.obj"   "..\..\Рабочий стол\ADAM Utility\EXAMPLE\EXAMPLE2.C"

 

"adam4500.h": E2449 Size of 'far' is unknown or zero at line 28
"adam4500.h": E2141 Declaration syntax error at line 28
"adam4500.h": E2449 Size of 'far' is unknown or zero at line 29
"adam4500.h": E2141 Declaration syntax error at line 29

 

 

"EXAMPLE2.C": W8075 Suspicious pointer conversion in function main at line 48
"EXAMPLE2.C": W8012 Comparing signed and unsigned values in function main at line 49
"EXAMPLE2.C": W8065 Call to function 'comm_exit' with no prototype in function main at line 52
*** 4 errors in Compile ***
Build cancelled due to errors

 

Это из Borland Builder, в остальных, в том числе и в турбо си аналогично



ALE TE IPSAM
Наверх
Wolf Смотреть выпадающим
Новичок
Новичок


Присоединился: 15 Сентябрь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 10
Свойства публикации Свойства публикации   Ответить, цитируя автора - Wolf Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 23 Сентябрь 2004 07:56

И еще один вопрос:

Как правильно посылать команду с ADAM4500 на ADAM 4060?

Я , к примеру, просто отправляю на ком порт #2 (по RS485) команду $026(адресс устройства 02).

Эффекта почему-то нет, в чем может быть ошибка? Порт инициализируется.

И, вообще какая команда отвечает за переключение реле на ADAM4060?

 

ALE TE IPSAM
Наверх
Wolf Смотреть выпадающим
Новичок
Новичок


Присоединился: 15 Сентябрь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 10
Свойства публикации Свойства публикации   Ответить, цитируя автора - Wolf Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 23 Сентябрь 2004 10:12
Есть у кого-нибудь заголовочный файл tang.h?
ALE TE IPSAM
Наверх
Максим Ананских Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 14 Май 2003
Online Status: Offline
Публикации: 770
Свойства публикации Свойства публикации   Ответить, цитируя автора - Максим Ананских Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 23 Сентябрь 2004 13:38
Первоначально опубликовано Wolf

bcc32 -g100 -j25 -O2 -k- -vi -tWC -c -IC:\CBuilderX\include -o"C:\Documents and Settings\Wolf\cbproject\ConsoleApp9\windows\Release_Build\Documents and Settings\Wolf\Ðàáî÷èé ñòîë\ADAM Utility\EXAMPLE\EXAMPLE2.obj"   "..\..\Ðàáî÷èé ñòîë\ADAM Utility\EXAMPLE\EXAMPLE2.C"

Тогда нет ничего удивительного - ведь Вы пытаетесь создать приложение для Windows (-tWC), а нужно DOS EXE.

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


Присоединился: 15 Сентябрь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 10
Свойства публикации Свойства публикации   Ответить, цитируя автора - Wolf Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 29 Сентябрь 2004 07:54

#include <dos.h>
#include <io.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#define TIME_OUT 10000000
static int base0=0x3f8;  /* Port 1 base address (COM1) */
static int base1=0x2f8;  /* Port 2 base address (COM2) */
static char rec[8];   /* Receive buffer             */
static char cmd[20];                   /* Command buffer             */
static  char rab[20];

    static char bd[8]={'#','0','4','0','0','0','8',0x0d};
    static char bdrab[5]={0x23,0x04,0x00,0x07,0x0d};
int sravn(char rab[20])
{
 int i=0;
 {
  if (rab=='0')
  {
                 return(0);
  }
  else if (rab=='m')
  {
   return(2);
  }
  else if (rab=='q')
  {
   return(3);
                }
  else if (rab=='r')
  {
                  return(4);
  }
  else if (rab=='b')
  {
   return(5);
                }
  else
  {
   if (rab=='s')
   {
    return(1);
                        }
                }
 }
}
void main()
{
 int i;
        int r=0;                                          
 int timeout;    /* counter for timeout         */
 int flag;       
 /* Set up Port 1 (COM1) */
 outport((base0+2),0x01);  /* enable FIFO                 */
 outp(base0+3,0x80);   /* set DLAB=1                  */
 outp(base0  ,0x012); outp(base0+1,0x0); /* set buad = (115200)9600     */
 outp(base0+3,0x03);   /* set data=8 stop=1 no parity */
 outp(base0+1,0x00);   /* disable COM1 interrupt      */


 /* Set up Port 2 (COM2) */
 outport((base1+2),0x01);  /* enable FIFO                 */
 outp(base1+3,0x80);   /* set DLAB=1                  */
 outp(base1  ,0x012); outp(base0+1,0x0); /* set buad = (115200) 9600    */
 outp(base1+3,0x03);   /* set data=8 stop=1 no parity */
 outp(base1+1,0x00);                     /* disable COM2 interrupt      */
VV: printf("\n Vvedite comandu \n");
 gets(rab);
        sravn(rab);
 if (sravn(rab)==1)
 {
  printf("\n Vruchuyu stroku(Stroku) ili iz Bazu Dannuh(Baza)?");
  gets(rab);

  if (sravn(rab)==1)
  {
   goto SEND;
  }
  
  else if (sravn(rab)==5)
  {            /*****BD*************************/
                             /* Send string on Port 1 (COM1) */
                        r=0;
   i=0;
   flag=1;
   while (flag)
   {
    outportb(base0,bd);  /* Send data                    */
    if (bdrab == 0x0d)
    flag=0;
    i++;
                                r=1;
   }
   goto VV;               
  }
        }
 else if (sravn(rab)==2)
  {
                 printf("\n ********************************************************************");
   printf("\n **********MANUAL po komandam programmu******************************");
   printf("\n **********Man(manual, etc.)->Vuvodit etot tekst*********************");
   printf("\n **********Send(snd.,etc.)->Otpravit komandu na kontroller***********");
   printf("\n **********Stroku(Str.,etc.)->Vvod stroki dlya otpravki vruchnuyu8***");
   printf("\n **********Baza(BD.,etc.)->Otpravka komandu iz Bazu Dannuh komand****");
   printf("\n **********Receive(etc.)->Priem dannuh*******************************");
   printf("\n **********q(guit,etc.)->Exit****************************************");
                        printf("\n ********************************************************************");
                        goto VV;
  }
 else if (sravn(rab)==3)
  {
   return;
  }
 else if (sravn(rab)==4)
  {
   goto RECEIVE;
                }
 else
 {
  printf("\n Komanda ne opoznana");
  goto VV;
 }

SEND: printf("\nEnter string (max 15 char) or Q to quit:");
 gets(cmd);

 while (cmd[0] != 'q' && cmd[0] != 'Q')
 {
  /* Send string on Port 1 (COM1) */
  i=0;
  cmd[strlen(cmd)] = 0x0d;
  flag=1;
  while (flag)
  {
   outportb(base0,cmd);  /* Send data */
   if (cmd == 0x0d)
    flag=0;
   i++;
  }

  /* Receive data on Port 2 (COM2) */
RECEIVE: i=0;
  flag=1;
  timeout=TIME_OUT;
  while (flag)
  {
   /* Check for received data on port 2 */
IF:  if ((inportb(base1+5) & 1) !=0)
   {
    rec=inportb(base1); /* Receive data */
    if (rec == 0x0d)
    {
     rec[i+1]='\0';
     flag=0;
     printf("\nReceived data : %s\n",rec);
    }
    i++;
   }
   else
   { /* Check timeout */
    timeout--;
    if (timeout == 0)
    {
     flag = 0;
     printf("\nTimeout error\n");
    }
   }
  } /* End of receive data while() */
   goto VV;
 }  /* End of "Enter string" while() */
}   /* End of main() */


Привожу листинг программы, основанной на Example1, поставляемом в комплекте с ADAM4500, программа посылает данные на порт, данные(проверил) "достигают" ADAM4060, но реакции никакой, я считаю, что возможно неправильный синтаксис, какие будут мнения?...

ALE TE IPSAM
Наверх
Wolf Смотреть выпадающим
Новичок
Новичок


Присоединился: 15 Сентябрь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 10
Свойства публикации Свойства публикации   Ответить, цитируя автора - Wolf Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 30 Сентябрь 2004 09:09

посылаю команды(типа #040006) на Com port 1 (К которому подключен ADAM4060) из Windows все работает нормально, как только отсылаю данные на тотже порт, открытый из под доса, то никаког эффекта, самое интересное, что данные в порт отправляются...

В чем может быть проблема?

ALE TE IPSAM
Наверх
 Ответить Ответить Страница  12>

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

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