Созданные ответы форума
-
АвторСообщения
-
manjey73
УчастникМожно только при помощи Модуля автоматического управления + формулы. То есть собственный модуль не нужен. Есть еще модуль от автора драйвера MQTT, там тоже можно логику работы создавать.
Все входные каналы выполняются последовательно от меньшего к большему, это можно сравнить с языком LAD для контроллеров. При использовании Модуля автоуправления RapidScada превращается в ПЛК. Например если WEB установить на другой ПК или вообще все в одном флаконе.
формулы пишутся на C#, насколько я помню, в новой версии увеличено количество символов на формулу до 4 тысяч символов.
То есть уже сейчас можно делать мини ПЛК на основе Raspberry Pi3 и RapidScada.
В том числе и использования встроенных в Raspberry входов выходов.-
Этот ответ был изменен 7 лет, 4 месяца назад от
manjey73.
manjey73
УчастникЕсли база не менялась, то канал ограничен 8 байтами (формат double)…
manjey73
УчастникВторой вариант работает.
Один канал оставил ДорасчетныйТИ и пустым, без использования формул. Он всегда 0 (у меня это 2-й канал)
Следующий за ним канал (у меня 3) так же Дорасчетный ТИ с формулой Rtrig(NOT(Val(2))) при нуле в первом канала в данном канале на один цикл появляется единицаДля проверки использовал таймер с задержкой отключения TP, ДорасчетныйТИ
Канал 4, формула Tp(Val(3), 15000) держит единицу 15 секунд, после чего сбрасывает канал в 0. В принципе можно применить вместо Rtrig сразу ТР…Если в канале поставить NOT(Val(этот же канал)) мы получим смену 0 и 1 каждый цикл. А это тут неправильно.
-
Этот ответ был изменен 7 лет, 4 месяца назад от
manjey73.
manjey73
УчастникПравильнее будет наверное так.
1-й дорасчетный канал, формула NOT(Val(1)) взведет канал после запуска сервера в лог единицу
2-й дорасчетный канал, формула Rtrig(Val(1))Далее ваши каналы, которые должны выполнить действия
«Если» канал 2 = 1 «То» выполняем то-то и то-то.Это будет длиться один цикл после запуска сервера, так как на выходе Rtrig «лог единица» будет держаться один цикл.
хм, правда может придется добавить еще один канал или правильнее будет так
1-й дорасчетный канал оставить как есть пустым, а во 2-ом прописать
Rtrig(NOT(Val(1)))-
Этот ответ был изменен 7 лет, 4 месяца назад от
manjey73.
manjey73
УчастникNOT + TP в формуле дополнительного расчетного канала.
В общем по аналогии с программированием ПЛК получится до следующего перезапуска сервера.
Протестить пока не на чем.
Или просто NOT + RTRIG
-
Этот ответ был изменен 7 лет, 4 месяца назад от
manjey73.
manjey73
УчастникЗабыл включить — Службы WCF > Активация по HTTP установлен для .NET Framework 4+
Все заработало.
manjey73
УчастникНа событиях тоже ошибка — Ошибка при обновлении событий
manjey73
УчастникБазы менялись ? как сделать перенос корректно, чтобы все запустилось ?
В логах никаких ошибок нет.
-
Этот ответ был изменен 7 лет, 4 месяца назад от
manjey73.
manjey73
Участникtimeout и паузу меняли ?
manjey73
УчастникОтправка правильная, но ощущение, что она идет в никуда
(не тот порт например) проверьте линию связи и ее настройки-
Этот ответ был изменен 7 лет, 4 месяца назад от
manjey73.
manjey73
Участниксделать разные КП и привязать к одной линии связи. В КП указать адреса
manjey73
УчастникПроверить переставляя байты, чтобы получилось данное значение. и выставить в настройках опроса необходимую последовательность.
любой калькулятор для float в сети используйте.
Приведенное вами значение в HEX соответствует указанному вами float
-
Этот ответ был изменен 7 лет, 4 месяца назад от
manjey73.
manjey73
Участникkustar — ваш синхронизатор это собственно ТИ и есть. дорасчетные каналы видя, что там значения не изменились оставят все как есть, если изменились то пересчитают.
Просто нужна правильная последовательность выполнения и не придется подгонять ни опрос ничего остального.Подгонять временем опроса в общем-то бесполезно…. рано или поздно, звезды сойдутся иначе, чем вам хотелось бы.
-
Этот ответ был изменен 7 лет, 4 месяца назад от
manjey73.
manjey73
УчастникМеня два описанных момента интересует, в прошлый раз я так и не домучал их.
Web так же отваливался.manjey73
Участникif (sut != Val(m))
{
SetData(m, Val(n), Stat(n));
SetData(n, sut, stat);
}ну а где же else ? а то у вас одна проверка всего и сразу везде все пишите.
Еще один момент, возможно вы наступили на грабли.
Номера входных каналов выполняются строго последовательно как шаги в LAD языке.
Возможно ваша формула и рабочая, но она должна стоять выше какого-то дорасчетного канала, чтобы работала правильно.-
Этот ответ был изменен 7 лет, 4 месяца назад от
manjey73.
-
Этот ответ был изменен 7 лет, 4 месяца назад от
-
АвторСообщения