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

Разработка ПО для RTU188

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


Присоединился: 20 Сентябрь 2006
Online Status: Offline
Публикации: 11
Свойства публикации Свойства публикации   Ответить, цитируя автора - basal Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: Разработка ПО для RTU188
    Опубликовано: 20 Май 2007 16:17

Ситуация следующая..RTU188-BS, программа, написанная на borland pascal 7.0. Все нормально работает, если скомпиллированный файл меньше 6 кбайт. Если файл превышает этот размер, то портится информация по приемо-передатчикам, формируемая RTU188. Причем, программа не зависает, все прерывания отрабатываются штатно. Впечатление такое, что не хватает памяти и данные портятся из-за сохранений регистров в стек, но в программе описано переменных на 600 слов и, кажется, что со стеком они не должны пересекаться. Впору вызывать шамана с бубном( Может кто знает в чем дело?

 

Наверх
sanwork Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 08 Март 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 440
Свойства публикации Свойства публикации   Ответить, цитируя автора - sanwork Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 21 Май 2007 14:03

Попробуйте поупражняться с директивой {$M stack, heap_min, heap_max}. По умолчанию  stack_size стоит 16384.

С уважением, SAN

Наверх
Андрей Лахтин Смотреть выпадающим
Новичок
Новичок


Присоединился: 06 Март 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 14
Свойства публикации Свойства публикации   Ответить, цитируя автора - Андрей Лахтин Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 04 Июнь 2007 17:11

Если среди Ваших обработчиков прерываний есть таймерный и он построен по схеме {шагХ; вызов старого обработчика; шагУ}, то могут пригодиться мои воспоминания. Была, помнится, в 2001г. у RTU-188 фишка - отложенная запись на флешь, случающаяся аккурат в обработчике таймера (IRQ0). То есть прога успешно закрывает модифицированный файл, но реальная запись на флешь не происходит. А где-то через время ХХХ родной FBIOS-овский обработчик INT8 вдруг решает произвести реальную запись кэша на флешь и на этой операции сильно задерживается. Правда, прерывания он при этом разрешает, поэтому почти для всех ничего не заметно. Время идет, IRQ0/INT8 возникает снова и снова, и наконец запись заканчивается и происходит возврат из того самого обработчика, который инициировал запись. Все это время вызова INT8 были по сути вложенными в тот самый задержанный вызов и если Ваш обработчик по замыслу должен был выдавать строгую последовательность ...шагХ-шагУ-шагХ-шагУ-шагХ-шагУ..., то реально может случиться ...шагХ-шагХ-шагУ-шагХ-шагУ-шагУ..

Наверх
 Ответить Ответить

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

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