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

CoDeSys

 Ответить Ответить Страница  123>
Автор
Сообщение
sanwork Смотреть выпадающим
Действительный член
Действительный член


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

Ну, хорошо !  А как присоединить кусочек сотворенный на СИ или АСМе к проекту в CoDeSys под WinNT ?  То ли это OBJ COFF файл, или в каком другом виде, да и возможно ли это в полной мере, чтобы все об'явления, были видны во всех модулях, как при компоновке "нормальных" программ ?!

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

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


Присоединился: 29 Январь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 293
Свойства публикации Свойства публикации   Ответить, цитируя автора - _IP_ Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 27 Сентябрь 2006 11:46

Первоначально опубликовано sanwork

Ну, хорошо !  А как присоединить кусочек сотворенный на СИ или АСМе к проекту в CoDeSys под WinNT ?...

1) А зачем? Пишите прямо в CoDeSys на ST получите аналогичный результат.

2) См. описание внешних библиотек. Подробнее в документе C_in_CoDeSys_e.pdf. Для каждой аппаратной платформы есть свои тонкости. Для WinNT они описаны в документе C_IN_386_E.pdf. Маловероятно что это будет всем интересно, поэтому давайте в личку. Документы вышлем по e-mail.

 

 

 

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


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

Строгая типизация - разумная идеология, но - не единственная существующая. Бывает надо наоборот, иметь полный свободный доступ к каждому атому "железа", и уж особенно в промышленных контроллерах. Само собой - ошибки и run-time недоразумения - полностью на совести кодера.

Буду премного благодарен за писание  СИ_для_CoDeSys  под  Win NT.

ЕМЕЛ:  sanwork@gmail.com

 

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


Присоединился: 29 Январь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 293
Свойства публикации Свойства публикации   Ответить, цитируя автора - _IP_ Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 04 Октябрь 2006 15:03
Первоначально опубликовано sanwork

...Бывает надо наоборот, иметь полный свободный доступ к каждому атому "железа", и уж особенно в промышленных контроллерах.

В прямоадресуемой памяти входов, выходов и маркируемой можно объявлять любое число переменных любого типа на один адрес.

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

Про "уж особенно в промышленных контроллерах" не согласен. 'Защита от дурака' в ПЛК важна как нигде. Увы, мне приходилось сталкиваться с контроллерами (малоизвестной фирмы) в которых из прикладной программы можно стереть системное ПО под ноль! Напротив, в весьма уважаемых фирменных системах программирования ПЛК (Сименс, Шнайдер и др.) есть только весьма ограниченный набор необходимых команд. После длительной работы в C мне это казалось полной деградацией. Но когда в любой ситуации, вместо того чтобы просто загнуться, контроллер давал четкую диагностику проблемы и выходил в безопасное состояние, это вызывало восторг и уважение!

Для программистов микроконтроллеров (чипов) доступ всюду нужен и неизбежен. Для промышленных контроллеров он крайне вреден и опасен. Изготовитель контроллера должен делать ПО так, чтобы его нельзя было сбить из прикладной программы. Если для прикладного программирования ПЛК предлагается использовать язык C, то это не ПЛК а конструктор для радиогубителей.

Первоначально опубликовано sanwork

 Само собой - ошибки и run-time недоразумения - полностью на совести кодера.

Угу. (В CoDeSys есть указатели и оператор ADR на случай "свободного доступа").

Первоначально опубликовано sanwork

Буду премного благодарен за писание  СИ_для_CoDeSys  под  Win NT..

Ушло.

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


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

 

SIEMENS  так хорош (на пользовательском уровне) наверно как раз потому, что на системном уровне был полный доступ ко всем местам ...

CoDeSys, точнее - SP RTE, имеет замечательную возможность исполнять программу на уровне ядра Windows NT. Доступ к памяти и портам происходит корректно, во время действия драйвера 3SRTE.sys. RTE можно использовать даже "не по назначению". Какую нибудь прикладную программу, работающую с портами, можно поставить через CoDeSys на циклическую задачу, и как на тележке кататься по ядру Windows, на правах драйвера 0-го кольца, с гарантией от конфликтов.

Кстати по SP RTE. Можете ли подсказать как на этой платформе работать с RETAIN - переменными ?  На  SP PLCWinNT есть функции  SaveRetain, RestoreRetain  сохраняющие и загружающие  RETAIN - переменные, в SP RTE  они не поддерживаются.

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

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


Присоединился: 29 Январь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 293
Свойства публикации Свойства публикации   Ответить, цитируя автора - _IP_ Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 05 Октябрь 2006 12:00
Первоначально опубликовано sanwork

...по SP RTE...как на этой платформе работать с RETAIN - переменными ?

См. вкладку Ext. Config в настройках SP RTE (нужно щелкнуть мышкой по иконке и выбрать System…)

Раздел Retain:

Если активны обе опции Do not allocate retainmemory in RAM и Retainmemory on physical address, то все переменные, имеющие флаг “RETAIN” в CoDeSys, будут сохраняться непосредственно в статическом ОЗУ. Для этого в PC должна быть установлена SRAM на фиксированном адресе шины.


Retain are saved by IOdriver обычно не используется и применяется чтобы разрешить работать специализированным драйверам, поддерживающим SRAM. (Например, мы использовали плату Automata CAN PCI 1 2NNV которая имеет энергонезависимую память и сотв-й драйвер.)


Опция Retain are saved to file on exit не требует аппаратной поддержки, но предполагает корректное завершение работы PC. Для гарантийного сохранения переменных необходимо использовать блок бесперебойного питания (USP).

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


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

Все предложенные способы требуют какого нибудь внешнего события, а RETAIN надо сохранять из программы. Правда есть внутренние команды - INTERN SaveRetain / LoadRetain, которые действуют из консоли PLC Browser. Но вопрос - как можно их использовать в тексте программы ?

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

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


Присоединился: 29 Январь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 293
Свойства публикации Свойства публикации   Ответить, цитируя автора - _IP_ Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 09 Октябрь 2006 20:26
Первоначально опубликовано sanwork

Все предложенные способы требуют какого нибудь внешнего события...

Не понял, какого внешнего события? Например, если мы постоянно держим эти переменные в статическом батарейном ОЗУ, то их значения автоматически сохраняются при выключенном питании. Ни каких внешних событий нет. Команда сохранения в этом случае вообще бессмысленна, поскольку данные и так всегда хранятся в энергонезависимой памяти. Если используем сохранение в файл, то оно происходит автоматом при завершении программы. При рестарте, значения переменных восстанавливаются.

Первоначально опубликовано sanwork

...а RETAIN надо сохранять из программы

В МЭК программе я должен только объявить RETAIN и все. Так сделано во всех типах ПЛК с CoDeSys. Зачем вообще нужно сохранять RETAIN переменные некими командами из программы? Т.е. зачем брать на себя функцию, которую обязана выполнять система исполнения? Так можно дойти и до взвода сторожевого таймера из прикладной программы и т.п. Если реально нужно управлять сохранением и восстановлением значений определенных данных, то не проще ли их просто явно записывать в файл в нужное время, без всяких RETAIN?

Команды в PLC Browser предназначены для тестовых целей. Вызывать их из программы пока ни у кого необходимости не было.

 

 

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


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

Надо сохранить переменные, скажем, на диске, а не в статическом ОЗУ. (зачем добывать экзотическую плату, когда диск пустует ). Но при об'явлении переменных в RETAIN области они, собственно говоря - почему то не сохраняются .. ?!  И потом, возникает вопрос :  если сохранение данных доверено машине, то когда , собственно, она решит их сохранить ? При выключении или пропаже питания ? но при этом нужен UPS, то есть опять же  некое специальное устройство (или внешнее событие типа NMI).

Есть очень простой способ развязать эти проблемы - сохранять переменные в нужный момент: например , при изменении значения какой нибудь величины просто тут же сохранить ее !  Но для этого надо иметь в распоряжении сами эти команды, которые пока что то не доступны.

Подскажите !

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

 

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


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

Надо сохранить переменные, скажем, на диске, а не в статическом ОЗУ. (зачем добывать экзотическую плату, когда диск пустует

Работа с диском происходит не в реальном времени. Т.е. после каждого изменения значений переменных на диск писать не реально. Плата легко решает эту проблему.

Прежде чем записывать образ значений переменных на диск нужно остановить контроллер, дабы они не менялись во время записи. Т.е. делать это нужно при завершении работы SP RTE: остановить прикладную программу, сохраниться и закрыться. Чтобы всегда корректно завершиться, нужен UPS.

Первоначально опубликовано sanwork

 Но при об'явлении переменных в RETAIN области они, собственно говоря - почему то не сохраняются .. ?!

Загрузите самую свежую версию SP RTE и установите опции, как описано выше, должно работать.

Первоначально опубликовано sanwork

...если сохранение данных доверено машине, то когда , собственно, она решит их сохранить ? При выключении или пропаже питания ?

При корректном завершении работы приложения. Ограничений на размер RETAIN памяти нет. Т.е. по сигналу авария питания PC нельзя было бы гарантировать, что соответствующий файл будет успешно записан. UPS даже самый дешевый позволяет корректно закрыться. Без него можно так вырубить компьютер, что он и загружаться перестанет.

Первоначально опубликовано sanwork

 Есть очень простой способ развязать эти проблемы - сохранять переменные в нужный момент: например , при изменении значения какой нибудь величины просто тут же сохранить ее !?

Пока файл будет писаться на диск эта переменная может измениться раз 10. Т.е. такой метод мог быть приемлемым в PLC WinNT, где контроллер допустимо тормознуть на момент записи, для SP RTE так делать нельзя.

Igor Petrov
Наверх
 Ответить Ответить Страница  123>

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

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