EnglishУкраїнськаmRussian
Login/New
Topic with many replies

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


| 1 | 2 | Last
Author Message
Written on: 16. 08. 2010 [22:38]
adel
Adel Chepkunov
Topic creator
registered since: 24.05.2010
Posts: 12
Здравствуйте!

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

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

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

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Written on: 17. 08. 2010 [19:03]
adel
Adel Chepkunov
Topic creator
registered since: 24.05.2010
Posts: 12
т.е. пишем

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

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

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

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

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

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

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

PPS: Роман, давайте жить дружно.
Written on: 19. 08. 2010 [00:53]
almaz
Almaz Karimov
Contributor
registered since: 25.09.2008
Posts: 516
http://wiki.oscada.org/Doc/ModBus?v=uc0#h592-15

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Written on: 19. 08. 2010 [08:41]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"adel" wrote:

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

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

"adel" wrote:

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

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



Learn, learn and learn better than work, work and work.
Written on: 19. 08. 2010 [17:53]
adel
Adel Chepkunov
Topic creator
registered since: 24.05.2010
Posts: 12


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

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

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

[This article was edited 1 times, at last 19.08.2010 at 17:56.]
Attachment

Снимок-Ссылка на виджет: load_1_m.png (File type: image/png, Size: 43.15 kilobytes) — 2154 downloads
Снимок-Ссылка на виджет: cmd_in_1.png (File type: image/png, Size: 39.29 kilobytes) — 2093 downloads
Снимок-Библиотечный виджет: bsu_1(load_1_m).png (File type: image/png, Size: 80.84 kilobytes) — 2114 downloads
Снимок-Библиотечный виджет: bsu_1(cmd_in_1).png (File type: image/png, Size: 73.62 kilobytes) — 2050 downloads
Снимок-Библиотечный виджет: bsu_1(связи).png (File type: image/png, Size: 42.4 kilobytes) — 2096 downloads
Written on: 19. 08. 2010 [18:08]
adel
Adel Chepkunov
Topic creator
registered since: 24.05.2010
Posts: 12
"roman" wrote:

"adel" wrote:

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

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

"adel" wrote:

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

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




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

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

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

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

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

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

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

"adel" wrote:

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

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

Learn, learn and learn better than work, work and work.
Attachment

test.png (File type: image/png, Size: 19.38 kilobytes) — 2065 downloads
| 1 | 2 | Last



1988