Созданные ответы форума
-
АвторСообщения
-
RomirosУчастник
Оси скрыл с помощью настроек размера и цвета. Вопрос закрыт, спасибо. Больше в этой теме писать не буду 🙂
RomirosУчастникВсё, разобрался. Надо было добавить к строке &config=PlgChartPro1.xml
RomirosУчастникНу уже закончим в этой теме?
Да. Но сейчас появился компонент График, который делает то же самое удобнее.
Да я его опробовал. Первый вопрос как раз для него. Интересует именно организация ссылки с нужным шаблоном. Для графика придется рисовать ещё одну схему. Либо если бы эту схему можно было вызвать по ссылке с параметрами в виде номеров каналов, то подошло бы.
RomirosУчастникИ второй вопрос. Могу ли я при использовании компонента Ссылка для вызова графиков в строке адрес назначить xml шаблон для графиков? Например для строки /Scada/plugins/ChartPro/ChartPro.aspx?cnlNums=173,174&viewIDs=14,14&Period=-2
приписать PlgChartPro1.xmlRomirosУчастникДобрый день. Есть ли возможность у Графика Про сделать добавленные оси невидимыми(в атрибуты оси Y добавить Position = None или Visible = false). Смысл в том, чтобы каналы строились по разным осям, но сами оси не отображались, поскольку достаточео значений при наведении курсора. Просто необходимо сэкономить пространство. Или это слишком большая переработка компонента?
RomirosУчастникДобрый день, приятная новость, что вышла новая версия.
По новому RapidGate неплохо бы описание, на сайте не нашел. Посмотрел xml конфиг, возникли вопросы:
1. Gate может быть только один или несколько?
2. Чем делается шифрование пароля? (для Grafana была соответствующая страничка)
3. CnlMappings — теперь обязательно прописывать нумерацию какие каналы в какие? MappingItem — может быть несколько?
4. UseRawData — я так понимаю это данные от коммуникатора не расчитанные по формулам?
5. Секция ArcUploadOptions — можете подробнее рассказать что делает и принцип работы?По новому компоненту график тоже вопрос — файл конфигурации графика. Есть где-то пример? Где он должен находиться.
RomirosУчастникВерсии Scada модуля не совпадают. Для сервера 5.1.2.0 нужен по идее этот https://rapidscada.ru/download/mod_auto_control/mod_auto_control_5.2.4.0_ru.zip
Вообще если у Вас версия не актуальная ходите сюда http://rapidscada.net/scada/plugins/Store/StorePublic.aspx?locale=ru
RomirosУчастникУстанавливаете модем. Создаете линию связи с com портом, который присвоен модему. Настраиваете скорость, четность и т.д.
На линию связи подключает KpSMS.
Устанавливаете модуль автоуправления и в триггерах отправляете команду на номер данного КП(номер команды 1 или 2 не помню уже). Текст команды формируется в модуле автоуправления, в описании к нему есть весь синтаксис.RomirosУчастникМожет опять dll заблокирована? У Win10 такое бывает.
RomirosУчастник1. Можно забрать данные из БД с помощью KpDbImport и положить их в каналы RapidScada.
2. Разработать модуль для RapidScada, который по изменению данных каналов будет считывать текстовые данные из xml файла и отправлять их в события RapidScada.
3. Если не хватает отображения в журнале событий, то разработать свой плагин отображения, либо html страницу.RomirosУчастникДа так не пойдет. 105 по формуле при закрытии минуты получает значение из 101, а тот не усредняется.
RomirosУчастник1) Нет, в 60-ый раз будет отображено среднее за минуту. Часовые значения на графиках не отображаются.
2) как вариант, да.
3) проверьте настройки, по идее если данные меняются несколько раз в минуту, они должны быть разные. Я вроде этот момент как-то проверял.RomirosУчастникА зачем вообще это все? Какая практическая задача?
RomirosУчастникВ OnCommLineStart() можно получить связку сигнал — канал. Если у Вас архив пишется только для определенного сигнала, то необязательно прогонять все сигналы КП.
public override void OnCommLineStart()
{
base.OnCommLineStart();
//Присвоить номера каналов переменным груп из БД
foreach (KPTag tag in KPTags)
{
foreach(VarGroup varGroup in varGroups)
{
foreach(TagConfig.Variable variable in varGroup.Variables)
{
if (variable.Signal == tag.Signal)
variable.CnlNum = tag.CnlNum; //Получаем номер канала
}}
}
if (config.ImportArc)
GetLastArcDateTime();
if (config.ImportEvents)
GetLastEvDateTime();}
Далее получаем дату последнего архива. Я использую часовые тренды, поскольку у меня данные берутся из БД другой программы сбора и даты архивов могут различаться не то что на часы, а на целые дни. В Вашем случае возможно эффективнее выгружать не Trend, а SrezTable.
public void GetLastArcDateTime()
{
WriteToLog(«запрос архивов RapidScada»);
foreach (VarGroup varGroup in varGroups)
{
DateTime date = DateTime.Now;
DateTime dateTime1 = DateTime.Today;
DateTime dateTime2 = dateTime1.AddDays(-config.DayCnt);
DateTime dateTime3 = DateTime.MinValue;
bool flag = false;
int cnlNum = 0;
if (varGroup.Variables.Length != 0)
cnlNum = varGroup.Variables[0].CnlNum;
if (cnlNum > 0)
{
for (; date >= dateTime2 && !flag; date = date.AddDays(-1.0))
{
Trend trend = new Trend(cnlNum);
if (CommLineSvc.ServerComm.ReceiveTrend(new StringBuilder().Append(«h»).Append(date.ToString(«yyMMdd»)).Append(«.dat»).ToString(), date, trend))
{
trend.Points.Reverse();
foreach (Trend.Point point in trend.Points)
{
if (point.Stat == 2)
{
dateTime3 = point.DateTime;
flag = true;
break;
}
}
}
}
varGroup.ArcDateTime = dateTime3 > DateTime.MinValue ? dateTime3 : dateTime2;
Log.WriteLineDelegate writeToLog = WriteToLog;
dateTime1 = varGroup.ArcDateTime;
string str2 = dateTime1.ToString();
string text = varGroup.Name + » Дата последнего архива » + dateTime1.ToLocalizedString();
writeToLog(text);
}
else
varGroup.ArcDateTime = DateTime.Now;
}
}Если что-то непонятно, пишите.
RomirosУчастникя так понимаю надо узнать номер присвоенного канала и проверять его ?
Да, так и нужно. Определяете связку сигнал — канал, и потом через ServerComm получаете нужные архивы. Код у меня на рабочей машине, смогу только завтра.
-
АвторСообщения