Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 24

Тема: Какой синтаксис инициализации массива структур

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,829

    По умолчанию

    Цитата Сообщение от RomeoVar Посмотреть сообщение
    Извините, не в своей теме вопрос: Есть массив структур, делаю инициализацию структур значенями по умолчанию. Хочу чтобы эти значения были защищены от изменения. Возможно ли такое?
    Код:
    TYPE MB_SWORD :
    STRUCT
    	iChannelIndex	: INT;
    	uiDataAddr		: UINT;
    	uiDataCount		: UINT := 1;
    	wData			: WORD;
    END_STRUCT
    END_TYPE
    Присвоенное значение хочу защитить от изменения
    uiDataCount : UINT := 1;
    Можно ли это сделать?
    Максимум, что можно сделать:

    uiDataCount : UINT(1..1) := 1;

    Тогда если ввести любой литерал, кроме 1 - компилятор выдаст ошибку.
    Но если вместо литерала присвоить переменную - то ошибок не будет, потому что это не константа, а тип с ограничением диапазона (subrange).

  2. #2

    По умолчанию

    Спасибо,
    Плохо конечно что можно изменить, но терпимо.
    А что если рецепт прикрутить? И ограничить значения минимальным/максимальным значением?
    И при загрузке заполнять переменные значениями из рецепта
    Изображения Изображения

  3. #3
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,829

    По умолчанию

    Цитата Сообщение от RomeoVar Посмотреть сообщение
    Спасибо,
    Плохо конечно что можно изменить, но терпимо.
    А что если рецепт прикрутить? И ограничить значения минимальным/максимальным значением?
    И при загрузке заполнять переменные значениями из рецепта
    Я не думаю, что это усложнение повлияет на ситуацию.

  4. #4

    По умолчанию

    вопрос.jpg
    Добрый день. Интересует вопрос о инициализации массива структур. А именно структуры содержащей элементы пользовательского типа (UNION). Когда пытаюсь инициализировать переменную( в Global Variable List обращаясь к ней через точку, как
    показано в первой части скриншота, в итоге получаю ошибку синтаксиса. Если объявлять такой массив без инициализации и работать с ним в программе, то все работает.
    Во второй части скриншота показал, что общий синтаксис инициализации массива правильный и проблема в типе данных. Подскажите, данная проблема решаема и как можно инициализировать подобный массив (интересует возможность инициализации, именно каждого элемента массива по-отдельности, а не в самой структуре).

  5. #5
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,829

    По умолчанию

    Цитата Сообщение от allozavr Посмотреть сообщение
    вопрос.jpg
    Добрый день. Интересует вопрос о инициализации массива структур. А именно структуры содержащей элементы пользовательского типа (UNION). Когда пытаюсь инициализировать переменную( в Global Variable List обращаясь к ней через точку, как
    показано в первой части скриншота, в итоге получаю ошибку синтаксиса. Если объявлять такой массив без инициализации и работать с ним в программе, то все работает.
    Во второй части скриншота показал, что общий синтаксис инициализации массива правильный и проблема в типе данных. Подскажите, данная проблема решаема и как можно инициализировать подобный массив (интересует возможность инициализации, именно каждого элемента массива по-отдельности, а не в самой структуре).
    Добрый день.

    Код:
    xxx_2: ARRAY [0..1] OF AI_Struct := [(a := (rRealValue := 1.0), b := 2.0), (a := (rRealValue := 3.0), b := 4.0)];

  6. #6

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Добрый день.

    Код:
    xxx_2: ARRAY [0..1] OF AI_Struct := [(a := (rRealValue := 1.0), b := 2.0), (a := (rRealValue := 3.0), b := 4.0)];
    Спасибо огромное! Вы случайно не знаете книжку, где описаны нюансы подобные этому?

  7. #7
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,829

    По умолчанию

    Цитата Сообщение от allozavr Посмотреть сообщение
    Спасибо огромное! Вы случайно не знаете книжку, где описаны нюансы подобные этому?
    Я не думаю, что все эти варианты в принципе имеет смысл описывать.
    Проще в таких случаях воспользоваться редактором инициализации - он автоматически сгенерирует нужное объявление.
    См. здесь: https://youtu.be/KjVlFH2lF4k?t=341

  8. #8

    По умолчанию

    вопрос.jpg
    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Я не думаю, что все эти варианты в принципе имеет смысл описывать.
    Проще в таких случаях воспользоваться редактором инициализации - он автоматически сгенерирует нужное объявление.
    См. здесь: https://youtu.be/KjVlFH2lF4k?t=341
    Я имел ввиду касательно синтаксиса в CodeSys, иногда он не очень очевиден. Вот опять столкнулся с проблемой. Пытаюсь обратиться к переменной IN_OUT на языке ST, компилятор выдает ошибку. При обращений к переменной IN_OUT на FBD таких проблем нет.
    Может быть знаете, как обратится к переменной IN_OUT в ST.

  9. #9

    По умолчанию

    )))

    Спасибо! Но пока не укладывается в голове, как в разделе констант
    объявить наработку насосов.

    Компиляция вроде решена. Доки вроде читал. Вопрос реально
    теперь в том - кто неадекватен - я или эмулятор.
    Все среды разработки с косяками. Точно знаю.
    И я с косяками. Поэтому вопрос - чей косяк -
    актуален.

    Спасибо. Точку на квадратные скобки
    вчера заменил. Работает. Но вопросов меньше не стало.

  10. #10

    По умолчанию

    Судя по тому, что сброс как раз и записывает в массив последние значения -
    это подразумевает - эмулятор именно на запись в retain намекает.
    Вообще вопрос был о дыре в доках по синтаксису 3.5.
    И ребусах с эмулятором.

    И уж извините - но если чтение всей недодокументации решает
    все вопросы - зачем тогда форумы?

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

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Похожие темы

  1. ПЛК 110, модбас и массивы структур.
    от lttn в разделе ПЛК (среда MasterSCADA 4D)
    Ответов: 7
    Последнее сообщение: 17.10.2019, 22:01
  2. Синтаксис Если()
    от Nikel097 в разделе Master SCADA 3
    Ответов: 2
    Последнее сообщение: 21.11.2017, 19:43
  3. Ответов: 4
    Последнее сообщение: 05.09.2012, 06:17
  4. инициализация массива структур
    от drvlas в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 16.12.2010, 18:31
  5. Ответов: 6
    Последнее сообщение: 05.04.2010, 08:06

Ваши права

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