S
Stitex
Инженерия

Почему бэкап контроллера не грузится обратно

Короткий ответ: «бэкап контроллера не загружается» — это не одна поломка, а несколько разных, и до разбора они выглядят одинаково. Копия бывает не тем, чем её считали: исполняемый код, снятый прямо с устройства, вместо исходного проекта; программа без конфигурации аппаратной части; файл панели оператора отдельно от файла контроллера. Мешать может и несовпадение версии среды разработки, ревизии процессорного модуля или прошивки самого устройства, а иногда файл просто повреждён — и выясняется это в день, когда он понадобился. Поэтому подрядчику задают не вопрос «почему ошибка», а шесть других — про предмет копии, про то, чем она открывается, чего в ней нет и когда её в последний раз разворачивали.

11 сентября 20268 минутStitex Technologies

Слово «бэкап» покрывает разные вещи — и это первая причина

Разговор начинается с фразы «копия у нас есть». Сама по себе она не значит ничего, пока не названо, что именно снято: под одним словом на объекте живут файлы разной природы, и восстанавливают они разное. Ниже — что отдают как резервную копию и чего в каждом варианте нет.

Что отдают как копиюЧто в ней естьЧего в ней нет
Выгрузка прямо из контроллерато, что устройство отдаёт по запросу: исполняемый код и текущие значения переменныхисходного проекта с именами, структурой и комментариями — если платформа их в контроллер не кладёт
Архив проекта из среды разработкиисходники, конфигурация аппаратной части, привязка к библиотекамсамостоятельности: без среды разработки подходящей версии и пакетов поддержки устройств это просто файл
Файл параметров и уставокзначения, выставленные при наладкепрограммы — заливать его некуда, пока в контроллере нет подходящей логики
Образ карты памятисодержимое носителя целикомгарантии, что он снят средствами платформы, а не копированием файлов мимо служебных областей
Проект панели оператораэкраны, список тревог, введённые руками значенияпрограммы контроллера: это отдельный файл и отдельная среда разработки
Настройки смежных устройствпараметры частотников, регуляторов, приборов учётасвязи с контроллером — они снимаются отдельным действием и в архив проекта не попадают

Отсюда первое практическое следствие. Фраза «бэкап делается регулярно» описывает действие, а вам нужен предмет: какой из перечисленных файлов снимается, чем он открывается и что останется несохранённым. Разница видна не в момент снятия копии, а в момент, когда её пробуют развернуть, — то есть ровно тогда, когда разбираться уже некогда.

Почему backup контроллера не загружается: три уровня отказа

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

Где встал процессК чему вопросЧто смотрят
Файл не открывается в среде разработкик самому файлу и к средета ли версия среды, все ли пакеты поддержки устройств и библиотеки на месте, полностью ли распаковался архив, чем закрыт проект
Файл открылся, но контроллер отвергает загрузкук целевому устройствутип процессорного модуля и его ревизия, версия прошивки, состав и порядок модулей расширения — совпадают ли они с конфигурацией в проекте
Загрузка прошла, а объект работает иначек полноте копииэнергонезависимые переменные, рецепты и значения в панели оператора, параметры частотников и регуляторов, калибровки датчиков

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

Копия засчитывается после разворачивания, а не после записи на диск
Пока копию ни разу не разворачивали, известно только одно: файл существует и имеет ненулевой размер. Всё остальное — открывается ли он, встаёт ли на устройство, воспроизводит ли объект — остаётся предположением. Резервное копирование и восстановление — две разные процедуры, и вторая никогда не проверяется первой.

Шесть вопросов, которые вскрывают состояние копии

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

Что именно вы отдаёте как резервную копию?

Ответ, с которым можно работать, называет предмет по частям: архив проекта, конфигурация аппаратной части, файл панели оператора, перечень параметров смежных устройств. Ответ «сделаем бэкап контроллера» предмета не называет вовсе — под ним может лежать выгрузка с устройства, которая не даст вам ни строчки исходников и встанет не на всякий экземпляр. Уточняющий вопрос здесь один: покажите список файлов и скажите, что открывает каждый.

В какой версии среды разработки собран проект и что нужно, чтобы её поднять?

Совместимость версий — свойство конкретной платформы, а не общее правило: откроет ли свежая среда проект, сохранённый в прежней, и можно ли сохранить его обратно в старом формате, сказано в документации этой платформы. Из-за этого номер версии и есть часть копии, а не справочная мелочь: пока он не назван, вы не можете даже сверить его с документацией и узнать, поднимется ли файл на том, что стоит у вас. К номеру добавляются пакеты поддержки устройств и библиотеки, тоже с версиями. Ответ «у нас всё установлено, обращайтесь» — не ответ про копию: он описывает вашу зависимость от конкретного подрядчика и его рабочего места.

Копия включает конфигурацию аппаратной части?

Программа без описания железа — незаконченный проект. В конфигурации записано, какой процессорный модуль, какие модули расширения, в каком порядке и на каких адресах, на какой версии прошивки всё собиралось. Если этого в копии нет, при загрузке на другой экземпляр придётся собирать конфигурацию заново по факту — то есть открывать щит и сверять маркировки, а это отдельная работа и отдельное время.

Что в копии из того, что живёт вне программы?

Рабочие значения после наладки хранятся не только в тексте программы: часть в энергонезависимой памяти, часть в панели оператора, часть в параметрах частотников и настройках датчиков. Хороший ответ — перечень с указанием, где лежит каждая группа значений и чем она снимается. Подробный разбор, где именно их искать на объекте, есть в материале как перенести логику и уставки на новый контроллер; для разговора о копии достаточно знать, что «всё в программе» — техническая неточность, и вскрывается она одним встречным вопросом: где в копии лежит вот эта конкретная уставка?

Чем закрыт проект и что вы передаёте вместе с файлом?

Копия может быть цела и при этом недоступна: паролем закрывают и проект, и доступ к контроллеру, и отдельные защищённые блоки внутри программы, а часть функций среды разработки открывается ключом или лицензией. Файл, к которому не передан способ его открыть, — это обещание копии, а не копия. Передаваться всё это должно письменно, с указанием, что именно каждый пароль открывает, а не храниться в голове инженера, который был на объекте в прошлом году.

Когда эту копию последний раз разворачивали и на чём?

Самый неудобный вопрос из шести: он один спрашивает не про содержимое копии, а про уже случившееся событие — либо оно было и записано, либо его не было. Проверяемый ответ звучит так: развернули такого-то числа на такое-то устройство, сверяли то-то, расхождения вот эти. Ответ «копии снимаются по графику» отвечает про снятие, а не про восстановление — это разные процедуры, и график первой ничего не говорит о работоспособности второй.

Что должно быть сдано вместе с копией

Перечень ниже — не пожелание, а содержимое той папки, из которой объект действительно восстанавливается. Проверить его можно до аварии и без подрядчика: открыть и посмотреть, чего не хватает.

  • Архив проекта и отдельной строкой — точное название и версия среды разработки, в которой он открывается,
  • Пакеты поддержки устройств и библиотеки с версиями: без них проект откроется с ошибками и пустыми местами,
  • Конфигурация аппаратной части: процессорный модуль, состав и порядок модулей расширения, версия прошивки, на которой собирался проект,
  • Всё, что хранится вне программы, — списком, с указанием места хранения каждой группы значений,
  • Пароли и ключи письменно, с пометкой, что именно каждый из них открывает,
  • Протокол разворачивания: дата, устройство, что сверяли, какие расхождения нашли,
  • Вторая копия у вас, а не только в архиве подрядчика.

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

Если копия уже не разворачивается, а объект нужен сейчас

Порядок действий здесь важнее скорости, потому что первая же попытка «просто залить и посмотреть» способна ухудшить положение.

  • Не заливать вслепую в работающий контроллер: загрузка заменяет то, что в нём лежит, а прерванная загрузка оставляет устройство без рабочей программы — вместо неподнявшейся копии вы получите остановленный объект,
  • Снять с живого устройства всё, что оно ещё отдаёт: текущую программу, значения переменных, параметры смежных устройств. Пока контроллер включается, это дешевле любой реконструкции,
  • Зафиксировать, на каком из трёх уровней встал отказ, — дальше проверяется только своя группа версий, а не всё подряд,
  • Развести две задачи: поднять объект и разобраться с копией. Вторая без первой может ждать, первая без второй — нет.

Отдельная ветка — когда неизвестно даже, что за устройство стоит в щите и какой версией прошивки оно представляется. Тогда работа начинается не с файла, а с опознания железа: как это делается, когда шильдика нет, разобрано в статье что можно узнать об оборудовании без шильдика. А если копия не читается совсем и разворачивать нечего, задача превращается в восстановление логики по факту — это другая работа и другая смета, и считается она не от объёма файла, а от состояния объекта.

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

Где здесь проходит наша граница

Вопросы выше адресуются любому подрядчику, включая нас, поэтому сразу про границу. Перенести логику и уставки со снятого с производства контроллера на замену, сделать свою плату с прошивкой — это то, что мы уже делали, и на странице что мы делаем и что остаётся у вас такие направления идут без оговорок. А вот поднять объект по копии, за которой не осталось ни автора, ни описания, — это «Сопровождение» и «Восстановление», и у обоих там стоит пометка «готовы взяться»: отдельным проектом ни того, ни другого мы ещё не вели, и пометка снимется не раньше первой такой работы.

Разбираемый здесь случай ближе к первому из двух: в описании «Сопровождения» неподнимающаяся резервная копия названа прямо — рядом с исчезнувшими исходниками и отсутствующей документацией, как один из признаков того, что автора у системы больше нет. Что остаётся у заказчика после работы, перечислено на той же странице отдельным списком; к разговору о копии из него относятся три пункта: права на результат, исходники вместе со средой сборки и описание того, как всё устроено. Резервная копия, которую нечем открыть, — это ровно та ситуация, от которой такой порядок сдачи и страхует.

Частые вопросы

Копия не грузится — значит, файл повреждён?

Повреждение файла — только одна из версий, и проверяется она первой как самая дешёвая. Отказ встаёт на трёх разных уровнях: файл не открывается в среде разработки, файл открылся, но загрузку отвергает сам контроллер, либо загрузка прошла, а объект работает иначе. Пока не названо, на каком уровне остановился процесс, обсуждать причину рано.

Можно ли залить копию с одного контроллера на другой такой же?

Зависит от того, что лежит в копии и насколько «такой же» второй экземпляр. Проект из среды разработки содержит конфигурацию аппаратной части, и при расхождении по типу процессорного модуля, его ревизии, версии прошивки или составу модулей расширения загрузка отклоняется. Выгрузка, снятая прямо из устройства, привязана к платформе ещё жёстче: она несёт исполняемый код, а не исходники, и переносится не везде.

Что считается проверенной резервной копией?

Та, которую разворачивали на устройство и сверяли поведение с исходным, а не та, которая лежит на диске нужного размера. Проверка даёт дату, имя экземпляра, на котором разворачивали, и список того, что сверяли. Без этого «копия есть» — утверждение о наличии файла, а не о возможности восстановиться.

Зачем среда разработки, если копия уже снята?

Потому что архив проекта сам по себе не запускается: его открывает среда разработки, а вместе с ней — пакеты поддержки устройств и библиотеки нужных версий. Насколько версии взаимозаменяемы, решает не общее правило, а конкретная платформа: откроет ли свежая среда проект, сохранённый в прежней, и можно ли сохранить его обратно в старом формате, написано в документации этой платформы. Поэтому название и версия среды передаются вместе с файлом: без них нечего и проверять.

Кто должен хранить резервную копию — мы или подрядчик?

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

Посмотрим, что лежит в вашей резервной копии

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

Контакты

Спросите нас по теме статьи

Опишите свою ситуацию — скажем, что из этого применимо у вас, а что нет. Без обязательств.

Telegram
@StitexBot
Отвечаем
В течение рабочего дня