Просмотр полной версии : ПР200 мастер
Васильев
05.04.2024, 20:07
прошу помощи..
ПР200 мастер - управляет 2я частотниками. Команду старт и стоп планировал записывать по установке бита (запуск записи).
по описанию: устанавливаем в 1 - активируется передача и после успешной передачи (наверное после получения корректного ответа) должен сбросится. И так
в функциональном блоке устанавливаю бит(запуск записи) и анализирую, когда сбросится - но сброса нет! не понимаю почему?
Устройство Slave отправляет корректный ответ (видно по анализатору).
1. устанавливаю бит (запуск записи), ничего не происходит.
2. устанавливаю бит ОПРОС начинается передача.
3. но бит запуск записи не сбрасывается.
бит ОПРОС является разрешением для работы всего модуля?
если это так, то как реализовать опрос в ручном режиме (мне не нужно опрашивать периодически)
спасибо большое!
Это не биты. А команды (на запись одного регистра или всего устройства). Они не должны сбрасываться сами, а управляются только руками из программы.
Пока они ПРке установлены в "1", ПРка будет циклически выполнять эти команды (опроса всего устройства или записи нужного регистра).
Обычно "Опрос" нужен для обратного: выключить устройство из опроса, чтобы не вознгикало ошибок, если оно дополнительное и может не работать.
Дальше всё зависит от того, что и как нужно получить:
а) Или оставить всё на усмотрениее ПРки (опрос устройства всегда)
б) Или поэкспериментировать с галочкой "Запись по изменению" (тогда запись будет идти один раз при изменении регистра)
в) Или через таймеры в программе ПРки выставлять команды "Запись" для нужного регистра на нужное время.
Васильев
05.04.2024, 21:06
1. да, я понимаю это команды (назвал битами для удобства)
2. в справке - есть информация, что идет сброс..
Сергей0308
05.04.2024, 21:17
1. да, я понимаю это команды (назвал битами для удобства)
2. в справке - есть информация, что идет сброс..
Интересно как переменная записи может сбросится если Вы в неё логическую единицу подали?
kondor3000
05.04.2024, 21:44
1. устанавливаю бит (запуск записи), ничего не происходит.
2. устанавливаю бит ОПРОС начинается передача.
3. но бит запуск записи не сбрасывается.
Чтобы установленный бит сбросился, записывайте в него 1 через R_TRIG.
kondor3000
05.04.2024, 21:57
Там же написано - автоматически сбросится.
Подали 1 один раз, дальше подавать саму себя
У человека не сбрасывается, значит он туда записывает 1 постоянно, может даже из константы или со входа ПР.
Васильев
05.04.2024, 22:00
пока не сбрасывается...
Сейчас добавил второе Slave устройство - копия 1, отличается адресом.
Опрос второго славе не идет-совсем не понимаю.
Подскажите пожалуйста может опрашиваться два славе устройства?
по поводку записи 1 - записываю один раз.
вот кусок кода
// установка частоты
kondor3000
05.04.2024, 22:12
Опрос второго славе не идет-совсем не понимаю.
Подскажите пожалуйста может опрашиваться два славе устройства?
Опрашиваться может, значит вы не правильно управляете чтением, записью. Выбросьте на время весь код и проверьте просто от входа или от переменной.
И выложите проект.
Васильев
05.04.2024, 22:19
проект выкладывать? он слишком большой и думаю разобраться будет сложно
сейчас интересует опрос двух и более устройств на одной шине.
Васильев
05.04.2024, 22:26
виноват не уточнил - вызывается раз в 1 секунду
kondor3000
05.04.2024, 22:33
проект выкладывать? он слишком большой и думаю разобраться будет сложно
сейчас интересует опрос двух и более устройств на одной шине.
Вы думаете кому то нужен ваш проект?
Как и все новички, вместо того, чтобы разобраться в опросе 1 слейва, вы пишите программу на 100 листов, а потом пол года будете искать что не работает.
Выбросьте всё, и научитесь управлять 1 слейвом, чтение циклом 100 ms, запись по изменению. Потом с 2 слейвами.
Когда заработает, пробуйте управление битами, только без ST пока.
Управление битами работает не так, как вы думаете!
Сергей0308
05.04.2024, 22:34
У вас используется отключение опроса всего устройства, зачем ещё запись каждой переменной "дёргать", мне кажется проще и лучше сделать(поставить галочку) запись по изменению!
Васильев
05.04.2024, 22:48
У вас используется отключение опроса всего устройства, зачем ещё запись каждой переменной "дёргать", мне кажется проще и лучше сделать(поставить галочку) запись по изменению!
частотник находится на расстоянии метров 100 и надо гарантировано его выключить или включить, поэтому отправляю несколько раз
пока не получу ответ, что запись команды прошла. Поэтому использую дергание записи.
И поэтому по изменению значения переменной думаю не получится.
Сергей0308
05.04.2024, 22:58
частотник находится на расстоянии метров 100 и надо гарантировано его выключить или включить, поэтому отправляю несколько раз
пока не получу ответ, что запись команды прошла. Поэтому использую дергание записи.
И поэтому по изменению значения переменной думаю не получится.
Это же не попытка записи, а запись по изменению, значит когда запись прошла, тогда последующие попытки прекращаются!
Не знаю, может надо понимать слова не в прямом, а каком переносном значении?
Типа, как Маяковский, мы говорим Ленин, подразумеваем - партия, мы говорим партия, подразумеваем - Ленин!
Сергей0308
05.04.2024, 23:21
Для гарантии надо читать записанную переменную, в смысле, когда она записалась, прекращать запись!
Васильев
05.04.2024, 23:25
Для гарантии надо читать записанную переменную, в смысле, когда она записалась, прекращать запись!
регистр команд частотника Veda VF51, при чтении всегда 0.
Васильев
05.04.2024, 23:48
сейчас создал пустой проект с 2 слааве устройствами, адресом 20 и 21.
второе устройство не читается. Может конечно Modbus Slave программа глючит..
Сергей0308
05.04.2024, 23:55
регистр команд частотника Veda VF51, при чтении всегда 0.
Я бы еще добавил про существование регистров only write
Бывают.
Сергей, если РЭ не врет (если!!) то вот про гарантию
Успешное выполнение - это полученный ответ. Можно не получить ответ при норм записи, но полученный ответ это гарантия.
Так там ещё и переменная статуса есть для каждой переменной, в смысле, если чё не так пошло напишет!
Сергей0308
05.04.2024, 23:59
регистр команд частотника Veda VF51, при чтении всегда 0.
Я бы еще добавил про существование регистров only write
Бывают.
сейчас создал пустой проект с 2 слааве устройствами, адресом 20 и 21.
второе устройство не читается. Может конечно Modbus Slave программа глючит..
Так ПЧ может помехи создавать и связь нарушится, типа запустить можно, а остановить нельзя.
сейчас создал пустой проект с 2 слааве устройствами, адресом 20 и 21.
второе устройство не читается. Может конечно Modbus Slave программа глючит..
Вы попробуйте сделать простенький проект, с одним двумя регистрами записи-чтения, как Вам уже советовали. И циклическим опросом, по статусу посмотрите связь вообще есть. 100 метров это прилично. Как там сделано физически, заземления ПЧ и экрана не понятно. На какой скорости работаете. Когда стабильную связь наладите, тогда уж и мудрите как хотите с опросом. Из практики был однажды случай именно с ПР200 мастер, видимо с тормозным слейвом, 100мс таймаута мало было. При этом команды проходили , но очень не стабильно, но статус был в нуле постоянно. До 200 поднял все четко стало ни одной ошибки. Опрос циклический был.
1. да, я понимаю это команды (назвал битами для удобства)
2. в справке - есть информация, что идет сброс..
Вот это ерунда полная. Это чтоб исключить устройство из опроса. Если подали еденицу она там будет пока не уберете.
Васильев
06.04.2024, 10:23
итак подытоживаем...
1. Работа с несколькими Slave устройствами возможно, всё работает.
Чтобы сетевая переменная была в трассировке (читалась в автоматическом режиме или записывалась)- она должна быть задействована в проекте.
(просто её записывать, где нибудь на экране или в энергонезависимую переменную - она должна быть задействована в проекте)
2. Период опроса всех устройств (переменных) со всеми возможными задержками (таймаутами) должен быть больше этого значения.
3. Разрешение опроса - это видимо как разрешение работы 1 -модуль работает, 0 нет
4. Переменная статуса устройства становиться 1 после трех любых последовательных успешных запросов (главное без таймаута) на Slave устройство.
сброс в ноль, когда нет связи (сколько запросов не могу понять). Отключение разрешения опроса не сбрасывает в ноль.
5. Если установить переменную внеочередной записи в 1 через экран - происходит отправка пакета, прием ответа и сброс.
Но вот если эту же переменную записать (один раз) в программе, она не сбрасывается - идет отправка, прием ответа и через таймаут указанный для обмена повторяется, пока сами не запишете ноль.
ПР200 почему то не сбрасывает. Вот это пока не могу понять почему и как сбросить если удачный прием?
kondor3000
06.04.2024, 10:58
Но вот если эту же переменную записать (один раз) в программе, она не сбрасывается - идет отправка, прием ответа и через таймаут указанный для обмена повторяется, пока сами не запишете ноль.
ПР200 почему то не сбрасывает. Вот это пока не могу понять почему и как сбросить если удачный прием?
Чего проще то, сравнить записанную и прочитанную переменную, если они равны, то сбросить бит.
Но вот если эту же переменную записать (один раз) в программе, она не сбрасывается - идет отправка, прием ответа и через таймаут указанный для обмена повторяется, пока сами не запишете ноль.
ПР200 почему то не сбрасывает. Вот это пока не могу понять почему и как сбросить если удачный прием?
а если такой костыль попробовать?
74999
итак подытоживаем...
1. Работа с несколькими Slave устройствами возможно, всё работает.
Чтобы сетевая переменная была в трассировке (читалась в автоматическом режиме или записывалась)- она должна быть задействована в проекте.
(просто её записывать, где нибудь на экране или в энергонезависимую переменную - она должна быть задействована в проекте)
2. Период опроса всех устройств (переменных) со всеми возможными задержками (таймаутами) должен быть больше этого значения.
3. Разрешение опроса - это видимо как разрешение работы 1 -модуль работает, 0 нет
4. Переменная статуса устройства становиться 1 после трех любых последовательных успешных запросов (главное без таймаута) на Slave устройство.
сброс в ноль, когда нет связи (сколько запросов не могу понять). Отключение разрешения опроса не сбрасывает в ноль.
5. Если установить переменную внеочередной записи в 1 через экран - происходит отправка пакета, прием ответа и сброс.
Но вот если эту же переменную записать (один раз) в программе, она не сбрасывается - идет отправка, прием ответа и через таймаут указанный для обмена повторяется, пока сами не запишете ноль.
ПР200 почему то не сбрасывает. Вот это пока не могу понять почему и как сбросить если удачный прием?
п.1 Работает ( в частности 5 устройств точно, с опросом от двух до 8 регистров)
п.2 Особенность : период опроса указан для одного устройства , на все переменные этого слейва оптом. Недавно этот вопрос рассматривался. У человека часть читалось, а вторая часть нет.
п.3. "Опрос" то что у Вас в кружочке №1 именно так и работает. 1- устройство опрашиваться будет 0-нет.
п.4. Не думаю что после именно трех, скорее количества попыток заданных в настройках (ниже адреса) и возможно всех регистров опрошенных успешно конкретного слейва, но это следует проверить, т.к насколько помню, это был модуль вывода и один или два первых выхода срабатывали, остальные нет . но "статус" при этом не выставлялся в 1 вообще. При этом ПР как мастер не может делать групповых, возможно ответ не приходил. Помогло увеличение именно таймаута, а не опроса , это точно. То же самое бывает при связи через конвертор rs485-wifi и обратно, но тут понятно , некоторая задержка канала связи. А там была витая пара.
по п.5 ничего не могу сказать не пробовал делать так, если не ошибаюсь, представители овен как то комментировали ситуацию в части отключения цикличного опроса. Поищите по форуму. Врать не буду, вроде как в этой части что то некорректно. Но у Вас железо на руках, проверить не сложно. Связь сделайте устойчивой сперва.
ПР200 почему то не сбрасывает. Вот это пока не могу понять почему и как сбросить если удачный прием? Я что то не догоняю, как выставить программно 1 , а сброситься она автоматом. Должна быть какая то выходная служебная переменная типа "статуса". И тогда по ней сбрасывать. Экспериментировать видимо надо. Возможно в описании косяк, такое бывает. Можно и сравнивать как предлагалось выше, но если часто меняются значения, то может быть накладка.
Васильев
06.04.2024, 12:27
Пункты 1 ..5 это не вопрос. Это утверждение и проверено. Под вопросом остаётся сброс переменной записи.
Поскольку. Как уже написал, если выставить через экран - то всё отрабатывается согласно РЭ. А вот если выставить запись через фб переменная уже не сбрасывается. Вот в чём вопрос?
Васильев
06.04.2024, 16:23
всё правильно мой алгоритм работать не будет..
получается на выходе ФБ я устанавливаю 1 и по логике работы ПР200
это единица при каждом цикле записывается заново и поэтому даже если переменная была сброшена
в начале следующего цикла будет установлена вновь...
как сделать чтобы записывалась один раз?
Попробуйте макрос прикрутить SelChgB
kondor3000
06.04.2024, 16:43
всё правильно мой алгоритм работать не будет..
получается на выходе ФБ я устанавливаю 1 и по логике работы ПР200
это единица при каждом цикле записывается заново и поэтому даже если переменная была сброшена
в начале следующего цикла будет установлена вновь...
как сделать чтобы записывалась один раз?
Чтобы переменная могла сброситься, она должна иметь вход в ФБ и выход, на выход писаться временно, через IF... THEN, триггер или таймер, тогда она сможет сброситься.
Это было ещё вчера озвучено.
Васильев
06.04.2024, 17:27
Чтобы переменная могла сброситься, она должна иметь вход в ФБ и выход, на выход писаться временно, через IF... THEN, триггер или таймер, тогда она сможет сброситься.
Это было ещё вчера озвучено.
Да, видимо это я вчера пропустил.
Сейчас сделал запись команды в конце цикла и сброс переменной по условию.
Вроде все заработало, так как было задумано.
Но появился ещё один вопрос -
почему не у всех выходных переменных есть расширенные параметры (запись в конце цикла)?
kondor3000
06.04.2024, 17:51
Да, видимо это я вчера пропустил.
Сейчас сделал запись команды в конце цикла и сброс переменной по условию.
Вроде все заработало, так как было задумано.
Но появился ещё один вопрос -
почему не у всех выходных переменных есть расширенные параметры (запись в конце цикла)?
Запись в конце цикла, есть у экранных переменных, для того, чтобы в коде они не перезаписались.
А в процессе исполнения, у обычных переменных, вы сами должны следить за перезаписью.
Васильев
06.04.2024, 18:39
обнаружилась ещё одна досадная ситуация...
команды запись сбрасывается после отправки пакета!!!
не ждет ответ от устройства Slave,
значит над как-то по другому решать вопрос о доставке команд до частотника..
Powered by vBulletin® Version 4.2.3 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot