PDA

Просмотр полной версии : Как избавится от автозапуска программы?



Аркадий
04.04.2008, 16:21
Добрый день.
подскажите, как запретить автоматический запуск программы?
постоянно перегружается из-за ошибки в программе. как выйти из этой ситуации кроме перешивки?

default_prg записываемая в контроллер после данных это boot project?
галочка Create boot project не установлена.
прилагаю лог загрузки контроллера. можно сказать из-за чего происходит перезагрузка? (ватчдог? )
и еще, там есть какая то ошибка в начале разбора конфигурации. что это?

Филоненко Владислав
04.04.2008, 21:00
При перезагрузке удерживайте кнопку пуск - программа не запустится. Причины для сбоя могут быть разными, ошибка в программе, несовместимость таргета и прошивки и пр.

Аркадий
10.04.2008, 09:10
про пуск понятно. а все таки, default.prg записываемая в последнюю очередь это что, программа для автозапуска?

причину нашел тогда. это присваивание переменной dword значения
16#1 0000 0000. где то у вас ошибка в прошивке.. посмотрите.. должен просто присвоиться 0 в этом случае. а тут такие фатальные последствия...

Филоненко Владислав
10.04.2008, 10:07
Какие могут быть ошибки в прошивке, если Вы пытаетесь записать 5 байт в 4-х байтовую переменную? Как повёл себя компилятор CoDeSys в этом случае - не знаю.

Аркадий
10.04.2008, 13:17
я не пытаюсь скопировать область памяти 5 байт в выделенные 4. оператор присваивания должен корректно обрабатывать входные значения.
компилятор Кодесис насколько я знаю не генерирует машинный код. операция присваивания выполняется исполняющей системой в контроллере?
просто при выполнении такого на PLCWinNT все работает, присваивается 0 как положено.

Филоненко Владислав
10.04.2008, 14:52
Компилятор Вы не знаете - он генерит бинарный код. На то и компилятор!
А архитектуры Intel и ARM отличаются, однако...

Аркадий
10.04.2008, 15:41
Компилятор Вы не знаете - он генерит бинарный код. На то и компилятор!
А архитектуры Intel и ARM отличаются, однако...

Не всякий компилятор генерит машинный код.. пример .NET.
Т.е. компилятор кодесис генерит непосредственно машинный код на основе таргета? Я думал что в промежуточный код, одинаковый для всех платформ.
Видел тему просто здесь, в которой объясняли на что идет память контроллера. Там под исполняющую систему кодесис отводилось не один мб. Тогда интересно что делает исполняющая система, если в контроллер пишется уже исполняемый код.
Это я из любопытства, тот пример не более чем пример, думал может Вам интересно будет.

Игорь Петров
10.04.2008, 16:49
Т.е. компилятор кодесис генерит непосредственно машинный код на основе таргета?
Да.

Я думал что в промежуточный код, одинаковый для всех платформ.
Нет. В конкурирующих МЭК системах применяется такой подход. Но это сразу замедляет выполнение в 10 раз. CoDeSys изначально был ориентирован на машиностроительные компании. Для них скорость выполнения прикладного ПО очень важна.

Тогда интересно что делает исполняющая система, если в контроллер пишется уже исполняемый код.
Такое название сложилось исторически. Исполняющая система делает тоже, что и ОС в компьютере (загрузка, управление задачами, поддержка оборудования, файловой системы, TCP/IP и др. и пр.). Обычная программа в Windows - это тоже исполняемый код.

Аркадий
10.04.2008, 17:02
Спасибо, все понятно.