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

Проблема с FFD RTU188

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


Присоединился: 09 Июль 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 9
Свойства публикации Свойства публикации   Ответить, цитируя автора - Andreyasm Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: Проблема с FFD RTU188
    Опубликовано: 15 Февраль 2006 08:34
Здравствуйте!

Используем в своих проектах контроллер RTU188bs с проц. RDC ,биос 2.4 от 31.08.05.
На всех контроллерах проевляется следующая ошибка:
при записи данных(переодически 1 в час) в FDD в нормальном режиме наблюдается
задержка 3-4 сек (наверно связанная со стиранием страницы), через некоторое случайное время пауза при записи проподает, хотя данные нормально пишутся и читаются, но если сбросить контроллер все
записанные данные(после проподания паузы) проподают!
Для записи данных использую функции ReadRam и WriteRam, для инициализации InitBackupRam.

В проекте используются прерывания 0x11(COM2),0x12(Timer1),0x14(COM1).


#include <sys\stat.h>
#include <string.h>
#include <stdio.h>
#include <fcntl.h>
#include <io.h>


#define MaxAdrRam 60000

#define lenbuf   100

int handle=0; //handle of file

//=======================================================
//============= CloseFile =========
//      close file 'flash.dat'
//in:
//out:
void far CloseFile(void)
{
close(handle); // close file
}

//=======================================================//================== flush
//        save data from dos buffer in FDD
//in:
//out: 1 - err write file
//     0 - OK
BYTE flush(int handle)
{
int duphandle;

/* make a duplicate file handle */
duphandle = dup(handle);

/* close the duplicate handle to flush the DOS buffer */
if (close(duphandle)==-1) return True;
else return False;
}

//=======================================================
//========================== InitBackupRam
//                  open and creat file 'flash.dat'
//in:
//out: 1 - err write file
//     0 - OK
BYTE far InitBackupRam(void)
{
DWORD i,Max_i;
BYTE buf[lenbuf];

if ((handle=open("data.dat", O_RDWR|O_BINARY))==-1)
{
    _fmode = O_BINARY;

     handle=creat("data.dat", S_IREAD |S_IWRITE);
     //clear buffer
    for (i=0;i<lenbuf;i++) buf=0;

     Max_i=MaxAdrRam/lenbuf;
     // save file
     for (i=0;i<Max_i;i++) write(handle, buf, lenbuf);
     close(handle);
     handle=open("data.dat", O_RDWR|O_BINARY);
}
return 0;
}

//=======================================================
//============================ ReadRam
//                     Read data in FDD
//in: linaddr - adres in flash
//     ptr - pointer data
//     qty - caunt data
//out: >0 - err read
//     0 - Ok
BYTE far ReadRam(WORD linaddr, BYTE *ptr, WORD qty)
{
int result=False;

if (handle==-1) result=True;
else //set offset
   {
    result=lseek(handle, linaddr, SEEK_SET);
    if (result==-1) result=True;//return True;
    else
     {
      ResetTimeWDT();
      result=read(handle, ptr, qty);
      if (result==-1) result=True;//return True;
     }
}
return result;
}

//=======================================================
//========================== WriteFlash
//                 Write data in FFD
//in: linaddr - adres in flash
//     ptr - pointer data
//     qty - caunt data
//out: >0 - error write
//     0 - Ok
BYTE far WriteRam(WORD linaddr, BYTE *ptr, WORD qty)
{
int result=False;
if (handle==-1) result=True;
else //set offset
{
     result=lseek(handle, linaddr, SEEK_SET);
     if (result==-1) result=True; //return True;
    else
     {
      ResetTimeWDT();
      result=write(handle, ptr, qty);
      if (result==-1) result=True;
      else flush(handle);
    }
}
return result;
}
Наверх
 Ответить Ответить

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

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