← Усі інструменти

Пояснення повідомлень і помилок

Що означає повідомлення ArduPilot і що з ним робити

English

Lua-скрипт працював надто довго за один раз

ПопередженняПлата, внутрішні помилки, CAN, скрипти

Що пише ArduPilot:

Щоразу, коли ArduPilot викликає скрипт, той може виконати щонайбільше SCR_VM_I_COUNT інструкцій Lua (типово 10000, ніколи не менше ніж 1000), перш ніж поверне керування. Скрипт, що перевищив межу, зупиняється з «Lua: FILE exceeded time limit», вилучається й більше не запускається. Ця межа не дає одному скрипту забрати процесор в інших і в польотного коду.

Що робити: найімовірніше спершу

  1. Аплет важкий, і його інструкція вказує більший SCR_VM_I_COUNT.

    ПеревіртеПрочитайте сторінку самого аплета: «Каталог Lua-аплетів» показує параметри, потрібні кожному.

    ВиправтеЗадайте SCR_VM_I_COUNT значення, якого просить аплет, і перезавантажте.

  2. Ваш скрипт робить забагато за один виклик: довгий цикл, велика таблиця, читання файлу до кінця.

    ВиправтеРозбийте роботу на кілька викликів: зробіть частину, поверніть керування й продовжте з наступного виклику.

  3. Цикл у скрипті ніколи не завершується.

    ВиправтеВиправте умову циклу. Більша межа лише змусить такий скрипт зависати довше.

Параметри, на які варто глянути

ПараметрЩо це
SCR_VM_I_COUNTScripting Virtual Machine Instruction Count
SCR_THD_PRIORITYScripting thread priority
Код, який це надсилає

… exceeded time limit

libraries/AP_Scripting/lua_scripts.cpp lua_scripts::run_next_script() · Відкрити в ArduPilot Copter-4.7.1

Тут написано для: Коптер, 4.6. В інструменті можна вибрати свій апарат і версію, побачити значення власних параметрів поруч із названими тут і перетягнути лог польоту, щоб отримати пояснення до кожного повідомлення в ньому.

Відкрити в інструменті