PDA

Просмотр полной версии : Не соответствие типов переменных



Canek
25.09.2012, 12:48
Здравствуйте!
Имеем контроллер ПЛК 63-РРРРУУ-М. При создании простейшего примера из распространяемого Вами учебного пособия «Простое и понятное программирование в CoDeSys», а именно глава 2 параграф 2.4 возникла следующая проблема.
В указанном примере вход соединен с выходом

http://www.owen.ru/forum/attachment.php?attachmentid=7030&stc=1&d=1348562536

При попытке повторить этот не хитрый пример наткнулся на такую вот ошибку компилятора.

http://www.owen.ru/forum/attachment.php?attachmentid=7031&stc=1&d=1348562630

Оказывается выхода контроллера которые обозначил как переменные о1, о2 и о3 имеет тип REAL в отличии от входов in1, in2, in3 типа BOOL.

http://www.owen.ru/forum/attachment.php?attachmentid=7032&stc=1&d=1348562630

Я понимаю что компилятор «ругается» на несоответствие типов. Прошу подсказать почему так происходит. Я не правильно указал выхода? Что не настроил?
Как поступить?

YuriBel
25.09.2012, 16:11
Вообще говоря, все происходящее объясняется просто.
В вашем контроллере в отличие от ряда других, выходы имеют функцию ШИМ, реализованную скорее всего программно на уровне конфигурации. Именно поэтому переменные в конфигурации, которые ответственны за состояние выходов, имеют тип Real. При записи в выходную переменную значения от 0 до 1 вы получаете на выходе ШИМ сигнал с той или иной шириной импульсов. соответственно 0 - полностью выключенный выход, а 1 - полностью включенный. Зачем так сделано- это отдельный вопрос.
Соответственно отсюда и ответ на традиционный вопрос "что делать"-
и "кто виноват". Никто не виноват, просто ПЛК 63- не лучший выбор для обучения по указанной книге, но и в этом нет ничего страшного. А делать очень просто - преобразовать Bool в Real, вставив оператор Bool-to-real перед выходом.