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

Тема: Битовая маска

  1. #11
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,651

    По умолчанию

    в способах передачи из ПЛК в SCADA нет ничего плохого или хорошего, уж всяко лучше чем каждую булевую переменную передавать одним регистром, тем более если SCADA умеет распаковывать и склеивать..

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

    По умолчанию

    Цитата Сообщение от Vitorgan Посмотреть сообщение
    Столько примеров) столько споров. Вообще в идеале я хотел передавать из скады 2 2-ух байтовых маски для 2-ух 16Р, а из плк хотел передавать в скаду 4 байтовую переменную в которой склеены 2 модуля 8ДФ и +16 переменных из программ плк. Плохая затея?
    Егор с Валенком выложили примеры, пользуйтесь и спасибо людям скажите. И здесь ни кто Вас не осудил за такое использование
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  3. #13

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    Егор с Валенком выложили примеры, пользуйтесь и спасибо людям скажите. И здесь ни кто Вас не осудил за такое использование
    Да сказал уже, и еще раз скажу! Спасибо всем, на форуме очень часто многие помогают, за это конечно благодарен. А собирать биты в 1 байт, есть какие то камни подводные, я думал, также как и раскрывать, только уже битам присваивать. Все везде вижу про перестановку старшими, младшими, не подскажите при передачи каких переменных это работает?

  4. #14
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,651

    По умолчанию

    Vitorgan порядок байт определяет процессор обычно, старшим или младшим вперед, иногда приходится их менять местами, в той же MasterScada это есть. Но так как вы оперируете программой в ПЛК можете и сами перевернуть если необходимо.

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

    По умолчанию

    И.Петров предлагал использовать директивы, я вместо добавлений просто .Х использую осмысленные константы. По поводу старшим словом вперед работает когда переменная больше одного слова или для модбаса больше регистра
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  6. #16
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,840

    По умолчанию

    Еще раз повторю, что для данного случая, когда в/из скады для экономии точек, совсем ненужно никаких программных Паков/Унпаков.
    Все переменные в слейве ПЛК, не зависимо от того, битовые они или BYTE или WORD или DWORD, перекрывают друг друга в адресном пространстве
    Скрытый текст:

    По этому вместо тог, чтобы городить огород в программе, просто используйте это свойство ПЛК ОВЕН.
    А именно, вот вместо "упакованной в одну переменную 4 байта 4-ех 8-ми битовых масок, на языке ST"
    1.PNG
    Здесь MASK - упакованная маска
    Просто вставьте в слейв четыре модуля 8 bits, взамен модуля 4byte
    2.PNG
    здесь Mask_1, Mask_2, Mask_3, Mask_4 Ваши четыре битовые маски

    Скада даже этого и не заметит. Если она читала значения DWORD по адресу 4х 02, то и теперь получит те же данные по тому же адресу.

    ЗЫ.
    На запись из скады в ПЛК это тоже распространяется.
    Последний раз редактировалось petera; 02.08.2016 в 14:00.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  7. #17

    По умолчанию

    petera, как всегда, инструкция для чайника (то бишь меня). Все с картинками, примерами и стрелочками. Я Вас понял. Спасибо. То есть, я просто вывожу из плк 4 маски, а в модбасе это читаю как 1 четырехбайтовую переменную? правильно?

  8. #18
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,651

    По умолчанию

    Vitorgan правильно, только вам придется либо правильно расположить маски, либо при чтении SCADA-ой поменять местами слова или байты в зависимости как происходит передача.

  9. #19
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,840

    По умолчанию

    Цитата Сообщение от Vitorgan Посмотреть сообщение
    petera, как всегда, инструкция для чайника (то бишь меня). Все с картинками, примерами и стрелочками. Я Вас понял. Спасибо. То есть, я просто вывожу из плк 4 маски, а в модбасе это читаю как 1 четырехбайтовую переменную? правильно?
    Правильно, если бы я читал этот DWORD в панель СПхх, то Маsк_4 - самый старший байт в DWORD, а Mask_1 - самый младший. Как читает Ваша скада легко определите экспериментально
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  10. #20

    По умолчанию

    Люди, please help. все сделал как в примере petera.
    Как связать эти биты из масок с булевыми переменными в программе codesys? )) у меня каждый бит это кнопка для старта процесса. кнопки - на панели,а процессы в ПЛК. то есть Задача: выдернуть бит из маски (modbus slave) и сделать так, чтобы он писал свое значение в переменную. bool1, bool2 и т. д.
    Или как правильно обращаться к конкретному биту в маске?
    Как сделать элегантно? заранее спасибо
    Последний раз редактировалось Andrey_om; 17.05.2018 в 16:03.

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

Похожие темы

  1. битовая маска для сми-1
    от Р.Александр в разделе Master SCADA 3
    Ответов: 2
    Последнее сообщение: 08.09.2009, 18:28
  2. Ответов: 7
    Последнее сообщение: 21.04.2008, 08:33

Ваши права

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