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

Тема: struct alignment в макросах

  1. #11

    По умолчанию

    Цитата Сообщение от andemeno Посмотреть сообщение
    Представьте, что телеметрия от ПЛК состоит из 3 регистров.
    и при копировании второй регистр телеметрии попадёт в reg_sub
    Вот как раз про это я и намекал. Что вам мешает переставить местами WORD reg; float real;
    Будет float real; WORD reg; ваши 3 регистра, а добавленный WORD reg_stub просто отбрасывать, или тупо добавить ещё один WORD и сделать структуру из 4 регистров.

  2. #12

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Контроллер не ОВЕН?
    Потому, что кодесис выравнял бы автоматом и сделал бы для real четный адрес


    И читать в панели пришлось бы не 3, а 4 регистра и все попало бы куда нужно.
    Нет, не ОВЕН

  3. #13

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Что вам мешает переставить местами WORD reg; float real;
    Мешает другой соисполнитель, который не захочет это делать, потому что все протоколы уже согласованы на верхнем уровне...

  4. #14

    По умолчанию

    Сразу. У автора исходных данных (в том "не Овен" ПЛК) лажовая архитектура данных.
    Архитектура такая какая есть. И есть задача написать ПО для панели. И альтернатив у меня нет.

    Если уж на то пошло, то с точки зрения разработчика ПО с графическим интерфейсом, вместо такого рода панели лучше выбрать решение в таком же форм-факторе, но на базе например Astra Linux. Писать ПО для этой платформы в разы быстрее и вносить изменения проще. А когда я пытаюсь реализовать пожелания заказчика в Конфигураторе, то кажется что он не помогает мне, а сопротивляется....

    Мой изначальный вопрос был не про то как мне читать телеметрию, и не то как изменить её структуру, а про возможность указать компилятору, что поля структуры надо выравнивать не по 4-ем, а по 2-ум или 1-му байту.
    И ответ был получен - в большинстве случаев никак.

  5. #15

    По умолчанию

    Валенок, я ещё вчера предложил два варианта, в том числе сделать структуру из 4 регистров и один откинуть, на что был ответ: НИЗЯЯЯЯ!
    Ну на нельзя и спроса нет....
    Последний раз редактировалось kondor3000; 30.10.2021 в 17:51.

  6. #16

    По умолчанию

    Валенок, сообщение #12.
    Не надо ничего удалять, тут не борьба за авторство. Может у ТС изменятся обстоятельства и ваш код пригодится или ещё кому то).
    Последний раз редактировалось kondor3000; 03.11.2021 в 02:05.

  7. #17

    По умолчанию

    Так я и сказал - есть лажовая аритектура данных.
    А критерий лажовости - это отсутствие в телеметрии ПЛК неиспользуемых регистров, которые воткнуты туда только для выравнивания по 4-ех байтовому адресу?

    Лажовость архитектур данных не является чем-то необычным.
    Именно. Почему тогда панель считает себя центром мира и готова работать только с данными, выровненными по 4-ем байтам?

    Ну это ж Ваша проблема что не убедили до принятия ключевых решений
    Моим мнением не интересовались. А даже если бы интересовались - узнать заранее из документации на Конфигуратор о том, что выравнивание для полей структур не поддерживается, нельзя. Там об этом ни слова.

    Дык ничего и не поняли. Ширше смотрите, ширше - если б возможность и была то ничем бы не помогло ибо Вариант 1, но с Вариантом 2 (см.выше) и любое действие с полем флоата (за исключением, возможно, просто копирования) привело бы к вышеуказанным "воплям в ночи". Т.е. все равно придете к "как мне читать телеметрию, и ... изменить её структуру". Или думаете Вы 1-ый с такого рода проблемой ? ))) Приведён был простейший (имхо) способ решения, причем таки без изменения структуры - или тоже не поняли ?
    Мне кажется это вы меня не поняли - о том что можно переставлять поля структур и читать с другим смещением мне известно. Я ищу нормальное решение, а не костыли. Но как выяснилось (#5) его нет.

    Все прогерство это борьба с чем-то.
    Но не с инструментом разработки!
    Последний раз редактировалось andemeno; 31.10.2021 в 18:37.

  8. #18

    По умолчанию

    Вы хоть думаете что говорите ? Ну поддерживалось бы - и что ? Получили бы {ваш_ворд, неявный_ворд, флоат}.
    Да ну нет же! Получилось бы {мой ворд; мой флоат;}! И все, и больше ничего неявного и ненужного. Но сделать так нельзя, можно только с неявным вордом

  9. #19
    Пользователь
    Регистрация
    31.01.2019
    Адрес
    РФ/РБ
    Сообщений
    917

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Как 2 пальца. Не надо тока левыми структурами трясти как указано выше.
    Для этого протокол надо указать.

  10. #20
    Пользователь
    Регистрация
    31.01.2019
    Адрес
    РФ/РБ
    Сообщений
    917

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Ну так и отобрази этот кусок памяти как структуру эквивалентную размещению этого массива регистров.
    Огорчить может только отсутствие ссылок в функциях (c89)
    Отображение - это не передача структуры. Это обображение - передача-консолидация. Да, сейчас почти вся передаваемая информация идет по последовательному порту. Тут говорить, что "нельзя передать что-то сложнее бита" - кощунство )

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

Похожие темы

  1. Ответов: 9
    Последнее сообщение: 22.10.2018, 16:18
  2. Работа с памятью в макросах
    от Aleksandr в разделе Панели оператора (HMI)
    Ответов: 7
    Последнее сообщение: 26.06.2018, 10:42
  3. иероглифы в макросах
    от evg3798 в разделе Панели оператора (HMI)
    Ответов: 1
    Последнее сообщение: 28.04.2017, 08:13
  4. ВЕЩЕСТВЕННЫЕ ЭЛЕМЕНТЫ В МАКРОСАХ
    от rovki в разделе Среда программирования OWEN Logic
    Ответов: 6
    Последнее сообщение: 18.04.2016, 16:53
  5. структуированные данные. Struct.
    от Юрий Поляков в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 11.06.2010, 01:57

Ваши права

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