может вопрос покажется глупым но как организовать программную перезагрузку плк скажем по времени или если он завис?
Вид для печати
может вопрос покажется глупым но как организовать программную перезагрузку плк скажем по времени или если он завис?
Eсли по времени надо - сделать чтоб он завис (while true do;end_while)
Eсли завис - то можно не беспокоится, cистема сама перезагрузит
А зачем надо перезагружать по времени ?
просто бывают иногда глюки не завис, работа идет, но программа не выполняется.
Reset_PLC : BOOL := FALSE;
IF Reset_PLC = TRUE THEN
WHILE TRUE DO;
END_WHILE
END_IF
Не подскажете, поему у меня после выполнения данного кода, плс150 перегружается
но потом говорит что в нем нет программы? что может быть?
Спасибо.
http://www.kipshop.ru/CoDeSys/steps/codesys_v23_ru.pdf страница 129 читаем пункт “Online” “Create bootproject”
Спасибо, осилил.
Вот еще такой вопросик.
При пропадании питания на плк, плк начинает сохранять ретайны.
Ну пока в моем случаи это происходит где-то 30сек.
Если я включу питания через 10 сек то плс просто работает дальше, ну а мне надо чтобы
он сбросился . При пропадании питания я его загоняю в чудо цикл и он как я и хочу перезапускается.
Таким образом я жертвую ретайновыми переменными а они мне нужны.
Если я просто буду свои переменные хранить в файле, ну допустим создам my_prog.cfg
Ну и буду туда писать и читать.
Это нормально? Есть подводные камни? (Ну или надводные)
Спасибо.
При кратковременном пропадании питания не обязательно использовать чудо цикл.
Добавьте в конфигурацию модуль статистики.
Вложение 10815
При пропадании питания будет сброшен бит PWR, следовательно можно в программе предусмотреть определенные действия для этого случая, например остановить процесс управления, перевести выходы ПЛК в определенные состояния, записать переменные в файл, и т.д.
Если питание восстановится до полного выключения ПЛК, то и бит PWR установится в 1. Это можно использовать для перезапуска программы управления с начального состояния, и не нужен полный рестарт ПЛК.
Мне нужна полная перезагрузка ПЛК для следующих нужд.
При любом включении - лампочки должны работать одинаково – меня просто пользователи
замучают почему лампочка старт не гаснет и.т.д при быстром восстановлении питания.
Вот вроде ерунда, но все же. Для особо одаренных при старте плк он у меня 6 раз пикает,
типа я стартовал, при быстром восстановлении пиканье нет т.к плк еще работает.
Системное событие мне не подходит.
Ретайны у меня будут писаться очень редко, только в момент настройки работы программы из вне.
Просто будут приходить несколько АСКИ строк по сети, ну а плк их будет писать в файл, от туда
дергать и уже работать по этим правилам.
Да и про батарейку тут начитался, так и не понял выдит она из строя через год-два или нет.
Ну а носиться по всей стране с паялом и сумкой АКБ как-то не хочется.
Как я понимаю с файликом все будет ок, спасибо.
Бит PWR в модуле статистики ни какого отношения к системным событиям не имеет.
По фронту этого бита можно "пикать" 6 раз. Я же говорил, что по фронту бита PWR нужно делать рестарт программы. В том числе и лампочки могут гаснуть или включаться точно так же как и при включении ПЛК.
Не получается PWR.
1.Выключаю плк на 60сек – включаю – лампочка старт не горит чуть ждем загорелась.
2.Выключаю плк на 10сек – включаю – лампочка старт горит.
Пикать по выклу питания понятно, а как лампу старт погасить? Вот и приходится в чудо цикл пускать по PWR off.
Лампа СТАРТ, как погасить?
Спасибо.
Ну так Ваш код, Вы и решайте а хотите чтоб помогли,так исходник выкладывайте,как организовали управление ламплчки от питания
Меня вроде как-то все уже устраивает, но возможно я делаю это все через не тот проход.
Так, что еще раз.
Если мы достали наш плс из коробки, в плс есть программа.
Включаем питания – Загорается лампочка ПИТАНИЕ в этот момент как я понимаю программа еще не работает.
Ждем несколько секунд загорается лампочка старт. – Программа пошла работать.
Что я делаю при кратковременном отключении питания.
Start_Ctr := TRUE;
(* Тут делаем сброс ПЛК для того чтобы при отключении питания ПЛК сбросился сразу а не через 30 секунд *)
(* !!!!! При этом не сохраняются RETAIN переменные так что будет необходимо писать их в файл а от тудо в программу !!!!! *)
IF Power_Status = FALSE THEN
Start_Ctr := FALSE;
Reset_PLC.Reset_PLC := TRUE;
END_IF
Просто вешаю контроллер и он переходит в то состояние как будто мы его достали из коробки и включили.
Если я этого делать не буду то лампа старт горит сразу после включения питания. (при кратковременном пропадании)
Что в принципе меня беспокоит, это загон контроллера в чудо цикл перезагрузки. Вроде не так страшно, но
Все же не через функцию.
Если можно как-то погасить и потом зажечь лампочку старт при коротком пропадание питания, подскажите
плиз как.
Спасибо.
если речь не о лампе а о светодиоде старт на панели плк, то ни как программно Вы её не погасите, это делает ОС контроллера, только перегрузкой
Ну вроде я так и думал.
Спасибо.
Что в принципе меня беспокоит, это загон контроллера в чудо цикл перезагрузки. Вроде не так страшно, но
Все же не через функцию.
Не будет ли влиять частая перезагрузка плс на ресурс или работу плс?
На самом деле не так часто, но при конфигурирование с веб интерфейса или тсп клиента у пользователя может
Тут не получиться, там не получиться, - Допустим 100раз за день. Понимаем что дней таких мало (Ну потолок 10 – бывают настырные, а потом звонить будут). Беру по максимум.
При смене IP или lic (Лицензии) все ровно перегружать. Да и вводим функцию сброса по кнопки на моськи, ну через
спец манипуляцию, некоторые пользователи могут ее часто пользовать если что-то не получается.
Будут ли проблемы с плс или убой ресурса (записи файловой системы)?
Спасибо.
Вот и первые звоночки.
Программа в плк работает, кнопка стоп-старт забрана под нужды плк.
Ставил эксперименты с сокетом, получил такую кашу.
Программа в плк встала, стартовала но теперь не подцепится кодесисом, pic_io то же не работает,
Не может удалить файлы проекта.
RS-232 нету под рукой.
Кнопка ресет не работает, плк не сбросить – что делать?
Самое интересное, что програмка работает как надо, даже по сети пытается общаться с другой железкой.
Вот еще такой вопрос, т.к я кнопку старт-стоп забрал, возможно ли программным способом остановить
выполнения программы? Можно конечно файлы загрузочного проекта тереть и перезагружать plc, но
может есть цивилизованные способы?
Спасибо.
Вы,батенька, часом ПЛК в бесконечный цикл не загнали??????
Так называемая "чудо перезагрузка" работает корректно при отключении питания , если питание есть ПЛК будет постоянно перезагружаться . Для стопа перед включением питания надо зажать "Стоп" и "Ресет"(Вроде бы , точнее в описаловке).
И , естественно , к "зацикленному"ПЛК ничем не прицепишься.
Конечно я плк куда-то загнал, но дело то не в этом.
Программка работает, а вот сбросить кнопочками и манипуляциями с питанием ни как не получается.
Что вы там за чудо программу написали, что вам такие махинации нужны ?
Зажатая кнопка Старт/Стоп + ресет не дает запускаться программе и позволяет подключиться для записи новой программы.
Ну или стереть программу совсем из Контроллера при помощи ПЛК браузера из CodeSYS
Делаю манипулятор к МКС, чтоб подводные лодки швартовать.:cool:Цитата:
Что вы там за чудо программу написали, что вам такие махинации нужны ?
Да просто забираю ресурс под свои нужды.
В программке при создания сокета написал diSocket, а во всех остальных idSocket.
Как уже говорил кодесисом, plc_io подключиться по сети не получилось, кнопки то же нефурычат.
Зато методом научного тыка научился затерать plc150 (2.15).
Держим обе кнопки reset и старт, выключаем питание, удерживая кнопки включаем питания.
Отпускаем кнопку reset кнопку старт удерживаем.
Все светодиоды маргнут, после загорится светодиод что программа пошла в старт, тут отпускаем и еще раз
нажимаем кнопку старт.
Программа в плк стерта.
Почему-то не нашел такого описания (может плохо искал).
pavelrer тут сам факт того, что вы пытаетесь программно перегружать ПЛК. Программа всегда работает в цикле, и если она корректна, то ПЛК перегружать нет необходимости.
Вот отсюда и вопрос - зачем такие извращения. Если ПЛК завис по какой-то причине и требуется именно рестарт, то скрепка "reset" решает все проблемы с перезагрузкой. Удаленно к нему все равно нельзя подключиться.
Копайте программу, чтобы не было такой необходимости.
Вы меня не поняли перезагрузка мне нужна только для того чтобы пользователь имел возможность
Сменить ip адрес и перегрузить плк к старту моей программы.
Кнопочка reset из плк убирается физически, ее просто не будет. Для управления плк пользователь будет
по инструкции манипулировать кнопкой старт-стоп.
Само-сабой, с помощью этой кнопки он может вернуть плк к заводу (т.е к девственной моей программе),
Сбросить сетевые настройки и всякие там еще штуки запускать, допустим канальчиком счелкать в ручном режиме.
Т.е здесь мне нужна была перезагрузка по которая выполняется по условию. Тот вариант который есть в плк
Меня устроит т.к нет вариантов.
А стоп и старт программы (программный ) нужен как скрытый сервис, если плк встал в ту фазу когда кодесисом
Подключиться по сети нельзя, rs в ноуте нет, а программка крутиться нормально, и на кнопочку реагирует. Вот и все.
Мне было бы удобно.
Да и не делаю я ему перезагрузку без правильно завершенных процессов, так что тут все нормально.
В случаи описанном выше, завис не плк, а сетевой порт просто не хотел не в какую работать, причина была
Ошибка в программе, кнопка reset не помогла, это была программная ошибка.
Но более меня удивило, что выход из этой ситуации, мне пришлось искать методом тыка, опираясь только на опыт,
И надеясь что производитель плк все же заложил такие функции.
Я был очень удивлен, что ни в документации, ни на форуме, да же в тех поддержку позвонил где плк брал, ответ на вопрос
Что делать без rs я не нашел. Все варианты не работали.
Вот вам и ответ зачем. Что-бы пользователи, инженеры которые занимаются установкой и обслуживанием манипулятором
МКС. Ни сидели на форумах, и не искали ответ на элементарный вопрос.
Сначала думал что хочут удаленно поменять ip и понадобилось while true do (наверно единственное зачем нужно. А точно покатит ?)
Потом увидел про
и заплакал над судьбой бедного пользователя. А-а-а, знаю что он нажмет через некоторое время:Цитата:
Для управления плк пользователь будет по инструкции манипулировать кнопкой старт-стоп... с помощью этой кнопки он может вернуть плк к заводу (т.е к девственной моей программе) .. cбросить сетевые настройки и всякие там еще штуки запускать, допустим канальчиком счелкать в ручном режиме.
жим-жим-жим-жииииим-жииииим-жииииим-жим-жим-жим
Неисповедимы пути эволюции...Pavelrer,вас этому на МКС облучили или вы самостоятельно дошли???
Кнопарь "Сброс" заклеили или выпаяли (откусили бокорезами)????
З.Ы Пришлете мне ,немножечко, того , что курите ???
Согласен, не без этого.Цитата:
жим-жим-жим-жииииим-жииииим-жииииим-жим-жим-жим
Смотря как реализовать, чем дальше запихаешь, тем наверное лучше.
Да и вариантов то больше, просто нет.
Еще не дошел, пока иду..Цитата:
Pavelrer,вас этому на МКС облучили или вы самостоятельно дошли???
бред какой-то
1. если у вас виснет порт, найдите проблему в сети, плк то тут при чем ?
2. зачем где-то и кому-то менять порт ? настройте маршрутизацию и оставьте пользователя в покое
3. по секрету скажу, есть куча преобразователей usb-com порт и спокойно можно подключиться к плк любым ноутбуком, и еще момент - кто будет подключаться и чем ? без проекта в CodeSys любой ноутбук, подключенный к ПЛК кусок бесполезного железа.
4. и может вы плохо прочитали инструкцию, но стереть программу из flash кнопками вроде нельзя, можно только недопустить старта программы, что позволяет ее перепрошить или стереть но уже подключившись CodSys-ом, а вы приняли свои манипуляции за несуществующее описание документации ?
А зачем програмно то делать, что подойти к шкафу и тупо выключить питание на десять минут как то по другому запустит плк, чем ресет?
В принципе можно (ничто не запрещает) перезагруз по собаке организовать ... но ... аккуратнее надо ...
Даже интересно - ПЛК при перезагрузе по собаке ретейны сохранит или аналогично кнопке "Ресет", скорее всего не сохранит , т.к нештатная ситуация.
В данной задачи именно этого и не хочется делать. Этот вопрос решен.Цитата:
А зачем програмно то делать, что подойти к шкафу и тупо выключить питание на десять минут как то по другому запустит плк, чем ресет?
Задача сейчас как остановить программу, программным способом. Это можно как-то сделать?
Возможно я тут ошибся, и действительно возможно проста встала программа.Цитата:
но стереть программу из flash кнопками вроде нельзя, можно только недопустить старта программы
Повторить пока не могу.
Ну уж долга я искал информацию как это сделать!
Ретайны не сохраняются, приходиться писать в файл до выполнения перезагрузкиЦитата:
ПЛК при перезагрузе по собаке ретейны сохранит или аналогично кнопке "Ресет"
надо обязательно чтоб плк входил, даже не в ресет, а в стоп?
Да именно в стоп, не ресет.
Т.к плк кнопка старт и стоп ушла под сервис нужды, а кнопка reset уже писал в одном случаии не сработала, ресет и из плк будет убрана.
Так что если случиться - глюк чего либо (а програмка все же будет исполняться), можно было той-же кнопкой старт-стоп но программно, т.е 21 нажатие допусим остановить програмульку.
Это не очень логично, и только для сервиса. т.к я уже писал что сталкнулся (это была програмная ошибка) с ситуацией когда плк програмка работает, сеть работает, все работает,
а кнопка ресет нет, да и она будет физичиски исключенна из плк. при этом кодесисом по сети не подключиться. Тоскать всякие там переходники usb-rs не хочеться, ну или забыл.
а что Вас тянет ресет то всё нажимать, Вы поймите, что сейчас впустую тратите время на бредовую затею, не хотите ли заняться логикой своей программы чтоб впредь не было глюков
Можно даже кнопарь к входу(или несколько кнопарей) и приделать и нажимать типа код вводить и по событию останавливать выполнение программы(НЕ ЦИКЛА а ТЕКСТА!!!!!!!).
В PLC_PRG
IF not Stoped_prg then Prg1;Prg2;(*и т.д*)END_IF
Только бывает при работе с сокетами когда ПЛК просто не хочет работать по сети и решается это ,вроде как , перезагрузкой.
Думаецца что здесь забыли циферку. Например - так:Цитата:
т.е 21 нажатие допусим остановить програмульку.
Цитата:
т. 1е21 нажатие допусим остановить програмульку.
И четыре зеленых писка вверх...
А чего ? Такой HMI.
21 нажатие - графитовые стержни (или чего там) вверх. 22 нажатие - вниз. Все чётко и ясно.