PDA

Просмотр полной версии : INVALID: 16#



antariuz
01.10.2020, 10:55
Доброго времени суток.
Помоги, пожалуйста, разрешить ситуацию с ошибками *** INVALID: 16#.. ***
В Global_Variables объявлены два регистра битовый маски модуля DO (МУ110-24.32Р), AA2_DO1_16 и AA2_DO17_32 соответственно. Далее идет объявление переменных типа BOOL для каждого выхода модуля DO (AA2_DO1...AA2_DO32). Смотри рис.1.
А в основной программе через битовую маску присваиваются необходимые значения выходов, смотри рис.2
А при запуске в режиме "эмуляции" получаю такие ошибки, смотри рис.3.
Не понимаю, что не так...
P.S.: таргет-файлы в порядке, в соответствии.

Добавил: Заметил, что если "попработать" с переменной, то все приходит в норму.... Смотри gif-видео (https://recordit.co/QWUh2Gwrev)

A.Simonov
01.10.2020, 11:12
Доброго времени суток.
Помоги, пожалуйста, разрешить ситуацию с ошибками *** INVALID: 16#.. ***
В Global_Variables объявлены два регистра битовый маски модуля DO (МУ110-24.32Р), AA2_DO1_16 и AA2_DO17_32 соответственно. Далее идет объявление переменных типа BOOL для каждого выхода модуля DO (AA2_DO1...AA2_DO32). Смотри рис.1.
А в основной программе через битовую маску присваиваются необходимые значения выходов, смотри рис.2
А при запуске в режиме "эмуляции" получаю такие ошибки, смотри рис.3.
Не понимаю, что не так...
P.S.: таргет-файлы в порядке, в соответствии.

Добрый день.

А для чего Вы это делаете через Global variables?
В конфигурации ПЛК просто присвойте переменные (они будут глобальные) необходимым каналам, и через точку обращайтесь к интересующим битам в тексте программы.
51206

Это проще и меньше шансов ошибиться где-то.

antariuz
01.10.2020, 11:18
Видно сразу все глобальные переменные, а в конфигурации нужно ещё раскрывать и искать наименование необходимой переменной. Так привык. Более того, переменные в конфигурации можно указать только для битовой маски. А уже Global variables происходит объявление битовых переменных, которые впоследствии (в программе) присваивают необходимые значения выходов для битовой маски.

A.Simonov
01.10.2020, 11:34
Видно сразу все глобальные переменные, а в конфигурации нужно ещё раскрывать и искать наименование необходимой переменной. Так привык.

invalid 16#.. значит, что в переменную вместо TRUE\FALSE попало значение 16#С4 (196 в DEC), например.
Нужно смотреть проект, чтобы понять как так получилось.
Плюс я бы конечно на реальном оборудовании проводил отладку, нет 100% доверия эмуляции.

antariuz
01.10.2020, 13:20
Спасибо Вам большое. Уже хотел попросить Вас взглянуть на проект, но нашел решение проблемы.
Проверил на реальном оборудование, все хорошо, ошибок нет. И тут пришла мысль о компиляции.
Оказалось все довольно просто. Нужно было удалить всю информацию о предыдущей компиляции и загрузке проекта в контроллер при помощи пункта меню "Project" - "Clean all". Видимо данные предыдущей компиляции "прилетали" в те переменные. После очистки и повторной компиляции все отлично (в режиме эмуляции).
Благодарю! Вопрос решён!