Страница 551 из 1043 ПерваяПервая ... 51451501541549550551552553561601651 ... ПоследняяПоследняя
Показано с 5,501 по 5,510 из 10426

Тема: ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)

  1. #5501
    Пользователь
    Регистрация
    19.11.2011
    Адрес
    г. Белгород
    Сообщений
    357

    По умолчанию

    Цитата Сообщение от ООО "БЛС инжинеринг" Посмотреть сообщение
    Здравствуйте!
    Подскажите как можно сбросить сказу несколько регистров который идут по протоколу модбас.Вложение 28058
    Принцип такой, оператор работал в HMI и включал какие то биты в PLC (это было ручное управление) но по ошибке их вдруг не выключил.
    Как можно сразу наложить RESET указать с какова и по какой на несколько регистров в конфигураторе или познаванию переменой?
    Насколько я понял ключевые слова в этом вопросе но по ошибке их вдруг не выключил. Если есть такая возможность я бы в ПЛК использовал бы R_TRIG при получении сигнала включения бита от HMI. Тогда пока оператор не выключит бит включить его снова не получится и ошибок не будет.

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

    По умолчанию

    Цитата Сообщение от Гарчев Евгений Посмотреть сообщение
    так для соответствия по размеру указателя и булей и нужны промежуточные переменные (программные були, которым присваиваем конфигурационные).
    ТС на втором рисунке не желает использовать прямой сброс от одной переменной всех восьми булей в конфигураторе, а Вы про промежуточные переменные
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  3. #5503

    По умолчанию

    В примере, как раз, настраиваемый диапазон и кол-во сбрасываемых битов конфигурации slave (через цикл for - указываем начальный и конечный элементы указателя на массив). конфигурационный булеан - это бит, программный булеан - это байт. Указатель на массив из булевых переменных - по факту, указатель на массив из байт, поэтому этот указатель состыковать с конфигурационными булеанами (битами) не получится. Поэтому заводим в области памяти программные булеаны (которые есть байты), указателю указываем адрес области памяти первого программного булеана. После сброса (заполнения указанных элементов указателя на массив нулями, а соответственно обнуляем программные булеаны), присваиваем программные булеаны конфигурационным.

    bit_to_bit_prg(); (*действие, в котором присваиваем программным булеанам конфигурационные*)
    bit_array:=ADR(B1_1_); (*указываем адрес области памяти первого программного булеана*)
    IF reset_ THEN
    FOR i:=b_start TO b_end DO (*b_start и b_end - начальный и конечный элементы указателя на массив для обнуления*)
    bit_array^[i]:=0;
    END_FOR
    bit_to_bit_slave(); (*действие, в котором присваиваем конфигурационным булеанам обнуленные программные*)
    reset_:=0;
    END_IF

  4. #5504

    По умолчанию

    Здравствуйте. Не могли бы вы подсказать, правильно ли я делаю?

    Моя текущая задача - посылать два широковещательных сообщения с мастера ПЛК110 подчинённым устройствам по RS-485 каждые 2 секунды. Сообщения двух типов : однобитового и двухбайтового формата. (код функции для первого 15, для второго 16). Есть адреса устройств-подчинённых и адреса регистров (для первого сообщения регистры с 00001 по 00044 и второго сообщения с 40001 по 40011). Небольшая часть таблицы которую я сделал для примера:
    Вложение 28086

    Я создал модуль Modbus master, затем добавил элементы Universal Modbus Module равное количеству устройств, на которые я буду рассылать сообщения. Для первого сообщения я создаю 8-битные модули выхода и присваиваю им значения регистров 00001 и 00009, использую команду 0x0f
    Вложение 28087

    Вложение 28088
    В соответствующие таблице биты я присваиваю переменные, которым я буду присваивать значения в программе.

    По поводу второго сообщения(16 команда, двухбайтное) - не могу найти модуль значения WORD, ну или 16-битный регистр.
    Вложение 28089

    Когда я работал в Codesys 3.5 делалось там по-другому, там добавлялся новый кaнал выставлялся код функции и длина, регистры сами создавались:
    Вложение 28090

    Вложение 28091

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

    По умолчанию

    По поводу второго сообщения(16 команда, двухбайтное) - не могу найти модуль значения WORD, ну или 16-битный регистр.
    Так и называется - Register output module
    Вложение 28092 Вложение 28093

    Только если нужно
    посылать два широковещательных сообщения с мастера ПЛК110 подчинённым устройствам по RS-485
    То в этом случае не надо делать - "добавил элементы Universal Modbus Module равное количеству устройств"
    Потому, что широковещательные сообщения принимают все устройства на шине, для этого нужно всего один Universal Modbus Module с адресом слейва "0" этот адрес и является широковещательным.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  6. #5506

    По умолчанию

    Большое спасибо вам, petera.

    Цитата Сообщение от petera Посмотреть сообщение
    То в этом случае не надо делать - "добавил элементы Universal Modbus Module равное количеству устройств"
    Потому, что широковещательные сообщения принимают все устройства на шине, для этого нужно всего один Universal Modbus Module с адресом слейва "0" этот адрес и является широковещательным.
    Странно, тогда зачем в ТЗ были указаны конкретные Modbus адреса для устройств-потребителей... Кстати, у меня в сети с ПЛК110 кроме устройств-потребителей есть аналоговые/дискретные модули ввода-вывода с конкретными адресами и панели оператора; если я на них буду посылать широковещательным сообщением данные, и одновременно снимать-посылать сигналы управления, ничего страшного ведь не произойдёт?

    Я вчера потратил время и поискал как работают функции Modbus, но немного запутался. Скажите, я правильно понимаю результат работы 0x0f? То есть назначаю адрес регистра для всего модуля - этот же адрес присваивается нулевому биту модуля, для следующего бита адрес будет сдвинут на +1, и т.д.
    Вложение 28098

    Кусочек таблицы второго сообщения для примера допустим выглядит так:
    Вложение 28099
    Тогда я объявляю количество модулей, равное количество отправляемых переменных, каждому из них присваиваю свой регистр и функцию 0x10, правильно?
    Вложение 28100

    Последний регистр в таблице второго сообщения по заданию отличается от других, при этом его надо также надо посылать функцией 0x10:
    Вложение 28101
    Проблема в том, что для Register output module я не могу задать переменные для отдельных битов, а для 8-битного модуля выхода не поддерживается функция 0x10.

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

    По умолчанию

    Скажите, я правильно понимаю результат работы 0x0f? То есть назначаю адрес регистра для всего модуля - этот же адрес присваивается нулевому биту модуля, для следующего бита адрес будет сдвинут на +1, и т.д.
    Вложение 28098
    Правильно
    Тогда я объявляю количество модулей, равное количество отправляемых переменных, каждому из них присваиваю свой регистр и функцию 0x10, правильно?
    Вложение 28100
    Если у каждого Register output module в его настройках адреса 40001, 40002, 4003 и т.д, тогда правильно.
    Последний регистр в таблице второго сообщения по заданию отличается от других, при этом его надо также надо посылать функцией 0x10:
    Вложение 28101
    Проблема в том, что для Register output module я не могу задать переменные для отдельных битов, а для 8-битного модуля выхода не поддерживается функция 0x10.
    Для этого существует битовая адресация разрядов (доступ к отдельным битам через точку)
    Вложение 28110
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  8. #5508

    По умолчанию

    Понял, большое вам спасибо!

  9. #5509

    По умолчанию

    Добрый вечер.
    Объясните пожалуйста в чем различие между измеритель регулятором и пид регулятором...
    Вроде задачу как я понял одну и ту же выполняют.

  10. #5510
    Пользователь
    Регистрация
    17.06.2016
    Адрес
    Тольятти
    Сообщений
    58

    По умолчанию

    Здравствуйте.
    Есть необходимость изменять параметр Period of PWM фиксированного модуля Pulse-wide modulator из программы непосредственно во время исполнения.
    Подскажите, пожалуйста, как обратиться к нужному параметру? (прямого адреса не нашёл)

Страница 551 из 1043 ПерваяПервая ... 51451501541549550551552553561601651 ... ПоследняяПоследняя

Метки этой темы

Ваши права

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