Показано с 1 по 8 из 8

Тема: Глобальные переменные

  1. #1

    Post Глобальные переменные

    Определяю переменную var1 как глобальную. Далее в функциональном блоке определяю переменную с таким же именем var1. В этом блоке по имени var1 я обращаюсь к переменной var1 функцирнального блока, а как мне обратиться к глобальной переменной var1 в этом блоке?

  2. #2

    По умолчанию

    PRG_PLK.var1

  3. #3

    По умолчанию

    PRG_PLK.var1 можно обратиться, если есть POU с именем PRG_PLK. А на
    обращение к переменной PRG_PLK.var1 выдаются 2 ошибки 4001 и 4250, так как у меня нет POU с именем PRG_PLK.

  4. #4

    По умолчанию

    Но какая то PRG есть? Попробуйте от нее. Хотя наврятли. Надо называть по разному.
    Последний раз редактировалось Назаров Александр; 01.04.2009 в 19:32.

  5. #5

    По умолчанию

    Есть несколько PRG. Мне хотелось бы определить одинаковые имена переменных в нескольких PRG и в глобальных переменных. Так мне удобнее. Но внутри PRG я могу обращатся к любой переменной (PRG_1.var1, PRG_2.var1, PRG_3.var1 и т. д.), а к глобальной переменной var1 неужели нельзя обратиться? Какая же она тогда глобальная!!! Тогда придется в глобальных переменных присваивать другие имена.

  6. #6

    По умолчанию

    Смотрим руководство CoDeSys:
    Внимание: Глобальная и локальная переменные могут иметь одинаковое имя. В POU, где объявлена такая ло-
    кальная переменная, она оказывается «сильнее» одноименной глобальной. Использовать одноимен-
    ные глобальные переменные нельзя (например, объявленные в конфигурации контроллера и в списке
    глобальных переменных).
    Получается, что к однойменной переменной из другого POU обратится можно, а к глобольной нельзя. Остается универсальный способ на все случаи жизни - через указатель, но лучше одинаковые имена не использовать.

  7. #7

    По умолчанию

    Спасибо, но я эту фразу из руководства понимал так, что нельзя использовать одинаковые имена переменных внутри глобальных переменных и в конфигурации контроллера, т. е. имя var1 нельзя присвоить еще одной глобальной переменной и входу-выходу контроллера. Ну ладно, придется использовать другие имена. Еще раз спасибо.

  8. #8

    По умолчанию

    Можно сделать структуру с нужным набором переменных и объявить ее глобально. Получиться аналог глобального блока данных. Можно и массив таких структур сделать.

Ваши права

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