Opened 5 лет ago

Last modified 5 лет ago

#136 assigned задача

Удаленное изменение настроек ЧРП

Сообщил: san Владелец: alx
Приоритет: низкий Этап разработки: 2-я очередь
Ключевые слова: Копия: alx, Art_M, andrei, san

Описание (последним изменил alx)

Ещё одно предложение от Art_M:

Рассмотреть возможность удаленного "считывания" и изменения любых уставок ЧРП, пусть даже если это будет происходить в каком-нибудь, упрощенном текстовом режиме.

История изменений (31)

in reply to:  description comment:1 by Art_M, 5 лет ago

Если не затруднит, давайте скорректируем, путем добавления слова "считывания"
Рассмотреть возможность удаленного "считывания" и изменения любых уставок ЧРП, пусть даже если это будет происходить в каком-нибудь, упрощенном текстовом режиме.

comment:2 by alx, 5 лет ago

Описание: изменено (отличие)

comment:3 by andrei, 5 лет ago

"Любые уставки" подразумевает - все уставки?

comment:4 by andrei, 5 лет ago

Артем, если этот тикет повторяет ТЗ " Приложение 2. Настройки для записи в ЧРП.", то может закроем его? Зачем в двух местах одно и тоже?
В приложении нужно еще добавить уставки ЧРП, которые нужно читать.
Куда только мы столько информации денем?

comment:5 by san, 5 лет ago

Этот тикет не повторяет то что в тз.
Здесь Артём предлагает дать возможность пользователю считать/записать любую настройку(регистр) ЧРП, а по ТЗ мы читаем/пишем только малую часть настроек.

comment:6 by andrei, 5 лет ago

Мне кажется странным что Артем в двух местах предлагает различные решения))))

comment:7 by san, 5 лет ago

Это не различные решения одной задачи, это разные задачи.

  1. В ТЗ указано какие значения в какие регистры ЧРП должен записать контроллер
  2. А здесь Артём предлагает инструмент позволяющий пользователю, подключенному удаленно к контроллеру, считывать и записывать любые значения в любые регистры ЧРП.

comment:8 by andrei, 5 лет ago

Задача понятна.
Как вариант: Отдельная вкладка в веб-интерфейсе с парой полей для ввода и кнопки считать, записать.
Пока это не самая интересная проблема.

comment:9 by san, 5 лет ago

На мой взгляд нет необходимости выносить этот функционал в веб-интерфейс.

в каком-нибудь, упрощенном текстовом режиме

Думаю что, для решения задач Артёма, достаточно будет команд работы с модбас через консоль.

comment:10 by andrei, 5 лет ago

Если это требуется только для Артема, то да. И приоритет тогда не средний, а низкий.

in reply to:  9 comment:11 by alx, 5 лет ago

Replying to san:

Думаю что, для решения задач Артёма, достаточно будет команд работы с модбас через консоль.

При работающем процессе smarthdcd посторонним процессам лезть в шину modbus нельзя. На шине может быть только один мастер. Так как smarthdcd постоянно ведет обмен сообщениями по шине modbus (то есть сообщение отправлено и ожидается ответ на него), отправка в это же время "постороннего" сообщения нарушит логику работы шины.

Работоспособный вариант - это если внешняя команда будет передавать запрос не прямо в шину, а процессу smarthdcd через какой-то специальный интерфейс, а smarthdcd, в свою очередь, поставит этот запрос в общую очередь. Но если все равно делать дополнительный интерфейс, то почему это не должен быть web-интерфейс?

comment:12 by san, 5 лет ago

все равно делать дополнительный интерфейс

В таком случае согласен, пусть будет в веб-интерфейсе.

comment:13 by andrei, 5 лет ago

Тогда предварительное решение:
Отдельная вкладка в веб-интерфейсе. Два поля для ввода значений: адрес регистра и содержимое. Кнопки ОТПРАВИТЬ и СЧИТАТЬ.
ОТПРАВИТЬ отправляет содержимое в регистр. СЧИТАТЬ считывает содержимое указанного регистра.

Возражения?

comment:14 by san, 5 лет ago

У меня нет возражений, но я бы ещё добавил какой-то индикатор успешности/неуспешности записи или чтения.

comment:15 by andrei, 5 лет ago

Владелец: изменён с andrei на alx
Копия: andrei san added
Приоритет: среднийнизкий
Состояние: newassigned
Тип: улучшениезадача

С индикатором согласен.
Передаю тикет Алексею.

comment:16 by alx, 5 лет ago

С учетом того, что предложено читиать/писать "сырые" данные (то есть фактически реализовать две функции Modbus), мне показалось, что реализовать это будет очень просто. Но потом я столкнулся с неожидинной проблемой.

Cейчас HTTP-сервер реализован так, что предполагает немедленное выполнение любой принятой команды API и отправку ответа. В данном же случае после получения команды API генерируется запрос Modbus, который ставится в очередь на отправку в шину, после чего соответствующий HTTP-поток должен заснуть, так как ответа на запрос еще нет. И только после получения ответа от ЧРП (или таймаута) дложен быть сгенерирован ответ, и поток HTTP разбужен для отправки ответа.

Пока для быстрого теста функция реализована частично: при получении запроса на запись соответствующий запрос ставится в очередь - и все, никакого ожидания ответа от ЧРП нет (см. r711).


Далее (это я пишу скорее сам для себя) необходимо доработать внутренний интерфейс между сервером и командами API:

  • добавить обработчику возвращаемое значение, по которому определять, была ли команда выполнена полностью или требуется "усыпить" HTTP-поток;
  • кроме запроса/ответа обработчику команды передавать еще и идентификатор HTTP-потока;
  • сделать функцию пробуждения HTTP-потока по его идентификатору, когда будет готов ответ.

Должно получиться как-то так:

comment:17 by san, 5 лет ago

Небольшое замечание по внешнему виду
Для пользователя удобней было бы задавать не адреса регистров а номера параметров, предлагаю добавить поле "Номер параметра" в интерфейс. Например, если пользователь хочет записать чтото в параметр 05-01, он введёт в это поле 501, и дальше в зависимости от типа чрп значение будет записано в нужный регистр. Если же поле "Номер параметра" не заполнено, то запись/чтение производить по адресу регистра из поля "Адрес".

in reply to:  17 comment:18 by alx, 5 лет ago

Replying to san:

Для пользователя удобней было бы задавать не адреса регистров а номера параметров...
предлагаю добавить поле "Номер параметра" в интерфейс.

А еще им было бы удобнее, например, задавать ток в Амперах (120.5 А), а не "сырое" значение в сантиамперах или еще непонятно в каких единицах. :) И мы возвращается к вопросу, который мы уже недавно обсудили устно - на каком уровне должна работать эта функция - на низком (уровень функций шины Modbus) или высоком (уровень настроек ЧРП)...

comment:19 by san, 5 лет ago

Да, всё правильно функция должна работать на низком уровне.
Но суть предложения в том что незначительное усложнение функции даст пользователю значительное увеличение удобства использования.

comment:20 by andrei, 5 лет ago

По крайней мере Амперы в сантиАмперы я могу в уме перевести, а для перевода из HEX в DEC еще и не каждый калькулятор подойдет)))
Но для быстроты можно и оставить, я приспособился.

comment:21 by andrei, 5 лет ago

Можно ограничиться добавлением в таблице ТЗ с параметрами десятичного адреса.
А тикет закрыть, т.к. задача выполнена.

in reply to:  21 ; comment:22 by san, 5 лет ago

Replying to andrei:

добавлением в таблице ТЗ

Руки прочь от ТЗ :)

in reply to:  22 comment:23 by andrei, 5 лет ago

Replying to san:

Replying to andrei:

добавлением в таблице ТЗ

Руки прочь от ТЗ :)

Зря ты так, там потом удобно смотреть адрес и переводить не надо будет, все в одном месте.

comment:24 by andrei, 5 лет ago

Артем просит: кроме просмотра и записи уставок ЧРП через веб-интерфейс нужно иметь возможность сбросить ошибку. Например если в случае ввода вне диапазона получили СЕ4

comment:25 by san, 5 лет ago

Артем просит: кроме просмотра и записи уставок ЧРП через веб-интерфейс нужно иметь возможность сбросить ошибку.

Это не имеет отношения к данному тикету, создал #184

Руки прочь от ТЗ :)

Зря ты так

Ну добавь, мне не жалко, только эта информация к тз не относится

in reply to:  25 comment:26 by andrei, 5 лет ago

Ну добавь, мне не жалко, только эта информация к тз не относится

Хоть где-то останется информация доступная и легко находимая.

Для этого тикета осталось научиться считывать регистры из ЧРП.

comment:27 by Art_M, 5 лет ago

Опыт показал - проблема у нас есть - не умеем записывать уставку номинального тока мотора 1-24 в чрп данфосс.

comment:28 by Art_M, 5 лет ago

Так же опыт показал, а ответ поддержки удостоверил, что введенные уставки Danfoss хранятся только в оперативной памяти. Необходимые действия для записи в энергонезависимую память Danfoss направил на почту Саше.

comment:29 by san, 5 лет ago

По последнему комментарию - см. #212

in reply to:  16 ; comment:30 by san, 5 лет ago

Replying to alx:

С учетом того, что предложено читиать/писать "сырые" данные (то есть фактически реализовать две функции Modbus), мне показалось, что реализовать это будет очень просто. Но потом я столкнулся с неожидинной проблемой.

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

in reply to:  30 comment:31 by alx, 5 лет ago

Replying to san:

Каковы примерные сроки реализации этого тикета в Алексее-часах?

Могу оценить это в 25-40 Алексея-часов.

Note: See TracTickets for help on using tickets.