Словосочетание дня - Corner case ну или граничный случай. Ситуация, которая возникает за пределами нормальных условий. Из всего делаем два вывода: 1) Использовать в программе цикл While Do следует очень осторожно. 2) Стоит убедиться, что цикл закончится до того как отработает сторожевой таймер. А теперь ситуация. Требовалось мне число с плавающей точкой привести в удобочитаемый вид - экспоненциальный. И первую половину дня все было хорошо. Во вторую половину дня один из датчиков немного взбрыкнул и отвалился. Система записала в регистр 0.0 и пожелала мне хорошего пути. сколько бы времени я 0.0 не умножал на 10 значение больше единицы я так и не увидел, а сторожевой таймер ПЛК раз в 30 секунд начинал цикл сначала.
Как выйти из такой ситуации, ибо ПЛК уходит в бесконечный цикл, перезагружается раз в 30 секунд и не отвечает ни на один внешний запрос с любого порта(если что это ПЛК210 от ОВЕН). Дождитесь начала загрузки проекта в плк. Об этом будет свидетельствовать мигающая лампочка проекта на плк. В этот момент переведите переключатель в режим СТОП и перезагрузите путем зажимания кнопки СБРОС более чем на 3 секунды. После перезагрузки ПЛК загрузится, но не запустит проект. Что позволит вам прогрузить новую версию прошивки, или сделать откат на старую.
Как я могу избежать подобную ситуацию? 1) Подумать больше чуть больше 5 минут над условиями. 2) Провести юнит тесты. В целом взять за практику писать юнит тесты всегда.
Из этого вопросы. Знаете вы то такое Юнит тесты? Пишите ли юнит тесты? Хотели бы узнать про юнит тесты и написание тестируемого кода?
Post #278
206
- 🔥 4
- 👍 2