Автор |
Сообщение |
Сообщение создано: 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)
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)
Да что Вы говорите! Вы документ по быстрому старту вообще читали?
"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.]
Вложенный файл
|
Сообщение создано: 19. 08. 2010 [18:08]
|
adel
Adel Chepkunov
Создатель темы
Зарегистрирован(а) с: 24.05.2010
Сообщения: 12
|
"roman" wrote:
"adel" wrote:
PS. Сейчас обнаружил, что с СВУ вообще регистры (из поля типа строка редактирования) в контроллер не пишутся, только биты (поле типа checkbox)
Да что Вы говорите! Вы документ по быстрому старту вообще читали?
"adel" wrote:
PPS: Роман, давайте жить дружно.
О какой дружбе может идти речь если нет уважения к времени других? В Вашем случае я вижу только лень разобраться самостоятельно, прочитав базовый документ, написанный для Вас же. И при этом считая, что Вам тут должны всё разжевать лично. Лично это за деньги!
Роман, я читал и быстрый старт и некоторые другие документы. И даже сделал в них две правки. Последняя - http://wiki.oscada.org/Doc/VCAEngine/revisions
Первоначально вопрос был как "правильно" сделать. Т.е. я видел два пути, но оба мне не нравились "по религиозным соображениям" , я спрашивал, есть ли еще какой способ, и если нет, то какой из двух предложенных лучше по мнению опытных товарищей.
Потом я заметил, что в СВУ вобще запись в регистры не работает, и отошел от темы.
Если нет времени, не отвечайте, пожалуйста. Если хотите предложить платную консультацию - предложите, я Ваше предложнеие рассмотрю. Спасибо.
|
Сообщение создано: 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 килобайт) — 2041 загрузок
|