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

Тема: Цикл побитового опроса переменной

  1. #1

    По умолчанию Цикл побитового опроса переменной

    Добрый день уважаемые! Подскажите пожалуйста, как сделать цикл побитового опроса переменной? Где у меня ошибка?
    Авария.PNG
    модбас.PNG

  2. #2

    По умолчанию

    Добрый день.
    Побитовый доступ (через точку) возможен только через константы.
    Посмотрите библиотеку Util - в ней есть ФБ Extract и Putbit - они помогут в вашем случае.

  3. #3

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Добрый день.
    Побитовый доступ (через точку) возможен только через константы.
    Посмотрите библиотеку Util - в ней есть ФБ Extract и Putbit - они помогут в вашем случае.
    Спасибо большое

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

    По умолчанию

    вместо IF crash1.i = TRUE THEN используйте IF (SHR(crash1,i) AND 16#1) > 0 THEN
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

  5. #5
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    561

    По умолчанию

    Я обычно делаю вот таким образом:

    Crash.jpg

    Переменная Cr_string будет иметь значение самого нижнего по программе Crash.xx=TRUE. Сброс происходит автоматически в начале каждого цикла.

  6. #6

    По умолчанию

    Цитата Сообщение от Sulfur Посмотреть сообщение
    Я обычно делаю вот таким образом:

    Crash.jpg

    Переменная Cr_string будет иметь значение самого нижнего по программе Crash.xx=TRUE. Сброс происходит автоматически в начале каждого цикла.
    Насколько я понимаю это язык FBD? А на ST можно перевести?)

  7. #7

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    вместо IF crash1.i = TRUE THEN используйте IF (SHR(crash1,i) AND 16#1) > 0 THEN
    Спасибо, правда я не разобрался еще что такое SHR() и 16#1, но я догадываюсь как это работает. Хороший способ, интересный, буду изучать.

    Подскажите тогда еще такой вопрос, возможно ли с помощью одной переменной STRING поочередно выводить разные данные в окно? как у меня в примере переменная cr_string может принимать несколько значений подряд, и хотелось бы что бы они выводились поочередно

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

    По умолчанию

    Цитата Сообщение от Avdey Посмотреть сообщение
    Спасибо, правда я не разобрался еще что такое SHR() и 16#1, но я догадываюсь как это работает. Хороший способ, интересный, буду изучать.

    Подскажите тогда еще такой вопрос, возможно ли с помощью одной переменной STRING поочередно выводить разные данные в окно? как у меня в примере переменная cr_string может принимать несколько значений подряд, и хотелось бы что бы они выводились поочередно
    можно, только код нужно менять, на что то типа этого
    IF t_TON.Q THEN
    IF (SHR(crash1,COUNT) AND 16#1) > 0 THEN
    // TODO
    END_IF;
    COUNT := (COUNT + 1) MOD 16;
    END_IF;
    t_TON(IN:=NOT t_TON.Q, PT:=T#5s);
    не проверял, все по памяти, возможны ошибки
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

  9. #9
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    561

    По умолчанию

    Avdey
    Насколько я понимаю это язык FBD? А на ST можно перевести?)
    1. Это язык LD.
    2. Перевести можно, только смысл? Букав больше, наглядности меньше.
    Код:
    Cr_string:="Отсутствуют"; 
    IF Crash.0 THEN Cr_string:="Потеря основного питания"; END_IF;
    IF Crash.3 THEN Cr_string:="Авария вентилятора притока"; END_IF;
    IF Crash.4 THEN Cr_string:="Авария вентилятора вытяжки"; END_IF;
    Кроме того, в LD проще строить какую-нибудь глушилку аварии\события в случае надобности.

    возможно ли с помощью одной переменной STRING поочередно выводить разные данные в окно? как у меня в примере переменная cr_string может принимать несколько значений подряд, и хотелось бы что бы они выводились поочередно
    В принципе для данной задачи надо копать в сторону Ararm Manager.
    Последний раз редактировалось Sulfur; 13.08.2019 в 12:50.

  10. #10

    По умолчанию

    Цитата Сообщение от Sulfur Посмотреть сообщение
    Avdey

    1. Это язык LD.
    2. Перевести можно, только смысл? Букав больше, наглядности меньше.
    Код:
    Cr_string:="Отсутствуют"; 
    IF Crash.0 THEN Cr_string:="Потеря основного питания"; END_IF;
    IF Crash.3 THEN Cr_string:="Авария вентилятора притока"; END_IF;
    IF Crash.4 THEN Cr_string:="Авария вентилятора вытяжки"; END_IF;
    Наглядность LD разбивается о мое видение языка программирования, т.к. начинал я с самоизучения Паскаля лет 17-18 назад, потом был Ардуино ИДЕ года 4 назад, а вот теперь CodeSys. Никогда не программировал на блоках и разбираться честно говоря не охота, может и зря

Похожие темы

  1. Цикл на языке ST
    от servo в разделе ПЛК1хх
    Ответов: 17
    Последнее сообщение: 06.06.2019, 16:00
  2. Цикл Трм-138
    от lunyov_i в разделе Эксплуатация
    Ответов: 7
    Последнее сообщение: 01.12.2018, 12:29
  3. Цикл программы в ПЛК
    от Serjay в разделе ПЛК1хх
    Ответов: 10
    Последнее сообщение: 01.12.2017, 08:48
  4. Цикл опроса Modbus Universal OPC Server
    от Tester в разделе Master SCADA
    Ответов: 7
    Последнее сообщение: 27.03.2014, 12:42
  5. Ответов: 2
    Последнее сообщение: 30.08.2013, 16:40

Ваши права

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