Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 16

Тема: Как форсировать переменные?

  1. #1

    По умолчанию Как форсировать переменные?

    научите как форсировать в режиме симуляции переменные
    привожу screehoot'ы когда они отказываются подчиняться
    здесь keyLocker1a является глобальной переменной

    Как видим keyLocker1 устанавливается программно до вызова CFC-блока. И уже внутри программного блока её изменить невозможно.
    При конвертации в язык загрузочных диаграмм ситуация выглядит ещё более абсурдней.

    Причиной такого поведения симулятора CoDeSys является именно операция присваивания переменной keyLocker1 значения до вызова блока. Это я могу себе объяснить только выполнением блоков прежде выполнения основного блока программы - другого ничего придумать не могу. Поэтому была предпринята попытка свести всё к локальным переменным функционального блока. Ситуация не изменилась:

    Следующим естественным движение был переход на железо. А вдруг в железе всё-таки работает. Нет, всё сурово, не работает!
    Вопрос, а как тогда работать? Научите как отладить программу, а тем более просимулировать её на железке. Может где-то надо поставить галочку для компиляции с сохранением debug-записей?

  2. #2
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,243

    По умолчанию

    ситуация когда на входах лог.схемы И поступают TRUE, а на выходе схемы FALSE может быть по причине не нажата онлайн -> старт, долго вчитывался и смотрел картинки и всеравно не понял вопроса

  3. #3

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    по причине не нажата онлайн -> старт,
    8=)

    Цитата Сообщение от capzap Посмотреть сообщение
    долго вчитывался и смотрел картинки и всеравно не понял вопроса
    Тогда подробнее:
    1 - в основном блоке PLC_PRG присваиваем глобальной пременной значение ( другой переменной, железного входа, константу и все что угодно )
    2 - рисуем программый блок, в котором используем глобальную переменную как входную
    3 - вызываем новый блок из основного для работы с нашей переменной
    4 - компилируем, запускаем
    5 - вызываем конкретный экземпляр программного блока и пытаемся форсировать её значение - результата нет. Форсирование не является актуальным, хотя всё красит в синий цвет.
    6 - пытаемся форсировать глобальную на уровне присвоения ей значения в PLC_PRG. Результат тоже.

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

    Вот здесь global_var, где бы вы её не форcировали, не приводит к установке в TRUE переменной result
    Последний раз редактировалось aven; 19.09.2011 в 12:49.

  4. #4
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,276

    По умолчанию

    Вот здесь global_var, где бы вы её не форcировали, не приводит к установке в TRUE переменной result
    А с какого перепугу, если перед использованием global_var в andy, вы присваиваете globar_var локальный any_var, а any_var неинициализирован, а значит, по умолчанию - false.

    В общем получается, если глобальной переменной присвоено значение, все остальные просто неактуальны. В каком бы блоке она не была вызвана, действующим будет программно присвоенное значение.
    Ну да. Как хотели-то ?. Она - переменная. А то что глобальная неимеет никакого значения

  5. #5

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    перед использованием global_var в andy, вы присваиваете globar_var локальный any_var, а any_var неинициализирован, а значит, по умолчанию - false.
    Это к чему-то обязывает? Я хочу изменить значение переменной в конкретной точке программы, и совершенно не интересуюсь где она там и чем занималась. Если вам не нравиться false, присвойте true и попробуйте выключить result.
    Даже если следовать вашей логике, то форсирование global_var в первой точке присвоения значения должно приводить к результату, поскольку на то оно и форсирование.
    Последний раз редактировалось aven; 19.09.2011 в 13:42.

  6. #6

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    неужто я до сих пор не могу понять о чем речь
    Снизу то мы дергать ноги можем 8=)

    Реально ситуация выглядет где-то так см. прицеп
    В результате нет возможности модифицируя keyLock получить что-либо на выходе
    Вложения Вложения
    Последний раз редактировалось aven; 19.09.2011 в 14:07.

  7. #7
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,243

    По умолчанию

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

    во вторых чем писать
    keyLock:=%IX1.0;
    keyUnLock:=%IX1.1;
    можно напрямую в конфигураторе входу задать имя
    это касается и выходов
    %QX2.0:=Locker;
    И кстати все переменный указанные в конфигураторе, автоматически являются глобальными
    Последний раз редактировалось capzap; 19.09.2011 в 14:19.

  8. #8

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    у Вас в проекте одни программы, слышали что нибудь о функциональных блоках и функциях. Просто у программ нет экземпляров, так написано в документации
    Это всё фигня, функционал и функции ведут себя также - адекватно 8=)

    Реально форсировать можно только самые самые входы, то есть непосредственно %-адреса. Если я читаю битовую маску, то для симулирования локального кода обязан на пальцах прикидывать комбинацию из 12 входных бит, преводить их в 16#число и форсировать этим числом %IW-адрес, наблюдая при этом уже его десятичную версию.

  9. #9
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,243

    По умолчанию

    какой у Вас вообще контроллер, у меня нет на Ваш проект таргет-файла, поэтому все адреса начинающиеся с % незнают откуда брать свои значения и всегда false поэтому, наверное в этом вся причина

  10. #10

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    какой у Вас вообще контроллер,
    Target settings -> None

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Сетевые переменные
    от TYER в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 02.05.2017, 10:21
  2. переменные времени
    от vvu2011 в разделе ПЛК1хх
    Ответов: 5
    Последнее сообщение: 18.11.2010, 00:48
  3. неявные переменные в Sfc
    от sfera в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 08.06.2010, 13:07
  4. Сохраняемые переменные
    от Виктор_Л в разделе ПЛК1хх
    Ответов: 19
    Последнее сообщение: 15.12.2009, 10:08
  5. ModBus переменные
    от Ушаков Николай в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 15.06.2007, 11:21

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •