УкраїнськаEnglishmRussian
Вход/Новый
В теме много сообщений

нормализация величины при чтении-записи


Автор Сообщение
Сообщение создано: 16. 08. 2010 [22:38]
adel
Adel Chepkunov
Создатель темы
Зарегистрирован(а) с: 24.05.2010
Сообщения: 12
Здравствуйте!

если мы с контроллера получаем число из АЦП, то хоть в логическом уровне, хоть при визуализации, можно это число умножать на коэффициент, и получать физическую величину.

А вот если такой случай: есть задвижка бункера-дозатора. Есть Регистр контроллера, в который заносится число миллисекунд, на которые эта задвижка откроется. При чтении этого регистра видно, сколько ещё миллисекунд осталось до закрытия - т.е. при занесении туда числа оно тут-же начинает уменьшаться, пока не дойдет до нуля. А как сделать так, чтобы пользователь мог писать в контроллер и видеть потом остаток не в миллисекундах, а в килограммах? А еще хочется, чтобы при внесении нового числа, оно добавлялось к предыдущему. (Например в момент А пишем в регистр 200, в момент Б опять пишем 200, всего должно насыпаться 400 кг не зависимо от того, успели ли 200 кг насыпаться к моменту Б) Для простоты считаем, что скорость засыпки равномерна.

Как это сделать правильно?
Сообщение создано: 17. 08. 2010 [07:16]
almaz
Almaz Karimov
Contributor
Зарегистрирован(а) с: 25.09.2008
Сообщения: 516
OpenSCADA предоставляет все инструменты, нужные для решения этой задачи. Используйте ява для написания алгоритма. Суммирование дополнительного времени и прочитанного из регистра тоже возможно. В крайнем случае, можно параллельно в скаде отсчитывать записанное в регистр время. Преобразование времени в килограммы при известной скорости засыпки (кг/мс) также не представляет проблемы.

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Сообщение создано: 17. 08. 2010 [19:03]
adel
Adel Chepkunov
Создатель темы
Зарегистрирован(а) с: 24.05.2010
Сообщения: 12
т.е. пишем

===
if (чел ввел число с клавиатуры)
time= M/K;
else
M= time*K;
===

а как записать условие? Дело в том, что при каждом запуске процедуры эти значение time будет отличаться от предыдущего.

условно можно написать, что если time*K намного меньше М, то значит мы пишем M в time, иначе - time в M. Но меня смущает такое условие. Или можно по событию в визуальной среде записывать в одну переменную логического уровня, а считывать - с другой. Но тогда логика выносится с логического уровня на визуальный. А как можно еще?

Сообщение создано: 18. 08. 2010 [08:31]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
В ДемоБД масса ещё более сложных примеров. Изучайте их! В ваши алгоритмы никто вникать тут не будет и писать скрипты за Вас тоже.

Learn, learn and learn better than work, work and work.
Сообщение создано: 18. 08. 2010 [18:38]
adel
Adel Chepkunov
Создатель темы
Зарегистрирован(а) с: 24.05.2010
Сообщения: 12
Это та демка, в которой два проекта, которая создается при инсталяции? Я не нашел там вообще чтобы какое-то число писалось в регистр. Есть страничка с формой, в которой можно что-то менять, но все эти поля никуда не пишутся.

Покажите, пожалуйста, где числа пишуться в контроллер.

PS. Сейчас обнаружил, что с СВУ вообще регистры (из поля типа строка редактирования) в контроллер не пишутся, только биты (поле типа checkbox) icon_frown.gif

PPS: Роман, давайте жить дружно.
Сообщение создано: 19. 08. 2010 [00:53]
almaz
Almaz Karimov
Contributor
Зарегистрирован(а) с: 25.09.2008
Сообщения: 516
http://wiki.oscada.org/Doc/ModBus?v=uc0#h592-15

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Сообщение создано: 19. 08. 2010 [08:41]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"adel" wrote:

PS. Сейчас обнаружил, что с СВУ вообще регистры (из поля типа строка редактирования) в контроллер не пишутся, только биты (поле типа checkbox) icon_frown.gif

Да что Вы говорите! Вы документ по быстрому старту вообще читали?

"adel" wrote:

PPS: Роман, давайте жить дружно.

О какой дружбе может идти речь если нет уважения к времени других? В Вашем случае я вижу только лень разобраться самостоятельно, прочитав базовый документ, написанный для Вас же. И при этом считая, что Вам тут должны всё разжевать лично. Лично это за деньги!



Learn, learn and learn better than work, work and work.
Сообщение создано: 19. 08. 2010 [17:53]
adel
Adel Chepkunov
Создатель темы
Зарегистрирован(а) с: 24.05.2010
Сообщения: 12


Алмаз, спасибо, но это не то.

Я уже сконфигурировал контроллеры, создал логический уровень. И в контроллерах, и на логическом уровне я могу писать в поле ввода, в контроллер введенное число отправляется. Но когда я в СВУ создаю элемент формы, то оттуда число в контроллер не отправляется и в него число из контроллера не берется. При этом если тип поменять на логический и в привязке указать бит вместо регистра - этот бит в контроллер записывается. Это правда, отступление от первоночальной темы. По-моему это ошибка в программе. В доказательство привожу скриншоты. load_1_m - поле ввода "целое", cmd_in_1 - чекбокс.

Если приведете пример работы с регистрами из СВУ, буду очень благодарен.

[Сообщение редактировалось 1 раз(а), в последний раз 19.08.2010 в 17:56.]
Вложенный файл

Снимок-Ссылка на виджет: load_1_m.png (Тип файла: image/png, Размер: 43.15 килобайт) — 2138 загрузок
Снимок-Ссылка на виджет: cmd_in_1.png (Тип файла: image/png, Размер: 39.29 килобайт) — 2075 загрузок
Снимок-Библиотечный виджет: bsu_1(load_1_m).png (Тип файла: image/png, Размер: 80.84 килобайт) — 2096 загрузок
Снимок-Библиотечный виджет: bsu_1(cmd_in_1).png (Тип файла: image/png, Размер: 73.62 килобайт) — 2032 загрузок
Снимок-Библиотечный виджет: bsu_1(связи).png (Тип файла: image/png, Размер: 42.4 килобайт) — 2078 загрузок
Сообщение создано: 19. 08. 2010 [18:08]
adel
Adel Chepkunov
Создатель темы
Зарегистрирован(а) с: 24.05.2010
Сообщения: 12
"roman" wrote:

"adel" wrote:

PS. Сейчас обнаружил, что с СВУ вообще регистры (из поля типа строка редактирования) в контроллер не пишутся, только биты (поле типа checkbox) icon_frown.gif

Да что Вы говорите! Вы документ по быстрому старту вообще читали?

"adel" wrote:

PPS: Роман, давайте жить дружно.

О какой дружбе может идти речь если нет уважения к времени других? В Вашем случае я вижу только лень разобраться самостоятельно, прочитав базовый документ, написанный для Вас же. И при этом считая, что Вам тут должны всё разжевать лично. Лично это за деньги!




Роман, я читал и быстрый старт и некоторые другие документы. И даже сделал в них две правки. Последняя - http://wiki.oscada.org/Doc/VCAEngine/revisions

Первоначально вопрос был как "правильно" сделать. Т.е. я видел два пути, но оба мне не нравились "по религиозным соображениям" icon_smile.gif, я спрашивал, есть ли еще какой способ, и если нет, то какой из двух предложенных лучше по мнению опытных товарищей.

Потом я заметил, что в СВУ вобще запись в регистры не работает, и отошел от темы.

Если нет времени, не отвечайте, пожалуйста. Если хотите предложить платную консультацию - предложите, я Ваше предложнеие рассмотрю. Спасибо.
Сообщение создано: 19. 08. 2010 [18:23]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"adel" wrote:

Потом я заметил, что в СВУ вобще запись в регистры не работает, и отошел от темы.

Это где Вы заметили?
В демонстрационном документе масса функций на этом построены. Что из них там не работает? Что в быстром старте не получилось? Диалог настройки ПИД-регулятора, а именно изменение коэффициентов, работает?

В качестве примера взял в проекте кадр теста элементов формы и привязал поле ввода целого числа на единственный атрибут на запись в тестовом контроллере ModBus.testTCP "prm:/ModBus/testTCP/test/reg3". Как результат всё прекрасно работает и число 12, на рисунке, я изменил из запущенного сеанса СВУ.

"adel" wrote:

Если нет времени, не отвечайте, пожалуйста.

Уговорили. Больше отвечать я Вам не буду.

Learn, learn and learn better than work, work and work.
Вложенный файл

test.png (Тип файла: image/png, Размер: 19.38 килобайт) — 2048 загрузок



2316