Страница 38 из 161 ПерваяПервая ... 2836373839404888138 ... ПоследняяПоследняя
Показано с 371 по 380 из 1842

Тема: Вопросы по MasterSCADA 4D

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Цитата Сообщение от nub Посмотреть сообщение
    пока не нашел в Masterscada4D поддержки C# или С++, кто-нибудь видел? через поиск в хелпах не находит. в инете информация есть только по третьей скаде.
    Шарп в 1.2.11 появился, в объект добавляется "Программа C#". По плюсам был вебинар https://www.youtube.com/watch?v=gXwOYFsKJ2c

  2. #2

    По умолчанию

    Большое спасибо! этот вебинар нечто - из "+" информативность - однако нет описания что и от куда берут, к примеру что за masterplcap? сам проект к видео не приложен.
    Последний раз редактировалось nub; 14.01.2021 в 14:15.

  3. #3
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    13,285

    По умолчанию

    nub тогда наверное вам проще обновиться до версии, где есть C#, я правда не знаю всех механизмов, как в нем писать скрипты (программы) на C# по этому не подскажу правильность кода, но там будет несколько строк всего и привязать это к кнопкам или другим элементам интерфейса.

    в моем случае формула чтения значений из файла находится в самом первом канале БД, а записи в самом последнем и если значения менялись в процессе, то происходит запись в файл а при перезагрузке происходит чтение, но можно привязать и к кнопке интерфейса или даже внешней команде.
    Последний раз редактировалось melky; 14.01.2021 в 09:18.

  4. #4
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    13,285

    По умолчанию

    VladGC самый простой способ через Словарь массив строк командами, что написал выше. Парсить ничего не надо тогда специально.

  5. #5

    По умолчанию

    как обновиться в Masterscada4D? в меню не нашел - текущая версия 1.2.9 - поддержка внешнего кода у ФБ st есть как в вебинаре, только очень сложный алгоритм с подгрузкой библиотек - проект пока не удалось сделать.
    будет ли эл. ключ работать после обновления?
    Последний раз редактировалось nub; 14.01.2021 в 14:04.

  6. #6

    По умолчанию

    Цитата Сообщение от nub Посмотреть сообщение
    как обновиться в Masterscada4D? в меню не нашел - текущая версия 1.2.9 - поддержка внешнего кода у ФБ st есть как в вебинаре, только очень сложный алгоритм с подгрузкой библиотек - проект пока не удалось сделать.
    будет ли эл. ключ работать после обновления?
    Бесплатно можно обновляться год с момента покупки, можно написать в тп , что бы дали ссылку на скачивание новой версии.
    Затем надо переустановить как RT так и DT
    Только надо все забекапить, что бы случайно не сломать как проект так и архивы и прочее

  7. #7

    По умолчанию

    ясно. большое спасибо!!!
    попробую сначала через file to string прочитать txt файл, затем string - на части (с помощью функций работы со строками) и присвоить переменным; если не пойдет, обновлюсь.

    Кстати, а что будет в Masterscada4d при передачи данных командой file to string размер данных файла будет больше объема переменной типа string (к примеру в txt файле 1000 символов - и как теперь их прочитать все)

  8. #8

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    VladGC самый простой способ через Словарь массив строк командами, что написал выше. Парсить ничего не надо тогда специально.
    FileToString читает в одну строку, а ReadAllLines читает в массив строк, которые надо будет все равно разбить на столбцы,
    Получается что уходит одна итерация

    Цитата Сообщение от nub Посмотреть сообщение
    ясно. большое спасибо!!!
    попробую сначала через file to string прочитать txt файл, затем string - на части (с помощью функций работы со строками) и присвоить переменным; если не пойдет, обновлюсь.
    Думаю стоит обновиться или подождать версии 1.2.12 , должна скоро выйти по идее..
    По крайне мере, как предложил melky, может действительно лучше на с#, примеров в сети много, да и возможности побогаче


    Цитата Сообщение от nub Посмотреть сообщение
    Кстати, а что будет в Masterscada4d при передачи данных командой file to string размер данных файла будет больше объема переменной типа string (к примеру в txt файле 1000 символов - и как теперь их прочитать все)
    Все норм будет(одна большая строка):
    Вложение 53019

  9. #9

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    VladGC самый простой способ через Словарь массив строк командами, что написал выше. Парсить ничего не надо тогда специально.
    FileToString читает в одну строку, а ReadAllLines читает в массив строк, которые надо будет все равно разбить на столбцы,
    Получается что уходит одна итерация


    Попробовал ReadAllLines с примером из https://www.cyberforum.ru/csharp-beg...ad1736667.html
    Код:
    class Program
        {
            static void Main(string[] args)
            {
                string[] lines = File.ReadAllLines(@"D:\input.txt");
                int[,] num = new int[lines.Length, lines[0].Split(' ').Length];
                for (int i = 0; i < lines.Length; i++)
                {
                    string[] temp = lines[i].Split(' ');
                    for (int j = 0; j < temp.Length; j++)
                        num[i, j] = Convert.ToInt32(temp[j]);
                }
             Параметр_1=num;
            }
        }
    Ошибка: CS0029: Не удается неявно преобразовать тип "int[*,*]" в "int[]".
    Не удается неявно преобразовать тип "int[*,*]" в "int[]"
    Хотя сама переменная в MasterScada с типом ARRAY [*,*] OF DINT
    В принципе добить можно до рабочего состояния, по крайней мере все читает как надо


    Цитата Сообщение от nub Посмотреть сообщение
    ясно. большое спасибо!!!
    попробую сначала через file to string прочитать txt файл, затем string - на части (с помощью функций работы со строками) и присвоить переменным; если не пойдет, обновлюсь.
    Думаю стоит обновиться или подождать версии 1.2.12 , должна скоро выйти по идее..
    По крайне мере, как предложил melky, может действительно лучше на с#, примеров в сети много, да и возможности побогаче


    Цитата Сообщение от nub Посмотреть сообщение
    Кстати, а что будет в Masterscada4d при передачи данных командой file to string размер данных файла будет больше объема переменной типа string (к примеру в txt файле 1000 символов - и как теперь их прочитать все)
    Все норм будет(одна большая строка):
    Screenshot_1.png

  10. #10
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    13,285

    По умолчанию

    VladGC , эээ, пожалуй я приведу весь свой код, делал очень давно и возможно тут фокусы с Linq. я это делал в RapidScada, по этому не знаю, как эти же механизмы использовать в MasterScada, но может поможет понять и сделать как вам нужно.
    У меня это три "формулы" - скрипта.
    Чтение переменных - SetVal здесь встроенная функция Scada системы записать в канал № значение SetVal(1000, 23.6) пример
    Код:
    bool initRet = false;
    double LoadRet()
    {
    if (!initRet)
    {
    
    if (System.IO.File.Exists(pathRet))
    {
    string[] RetLoad = System.IO.File.ReadAllLines(pathRet, Encoding.UTF8);
    for (int i = 0; i < RetLoad.Length; i++)
    {
    SetVal(Convert.ToInt32(RetLoad[i].Substring(RetLoad[i].IndexOf("[")+1, RetLoad[i].IndexOf(", ")-(RetLoad[i].IndexOf("[")+1)),10),Convert.ToDouble(RetLoad[i].Substring(RetLoad[i].IndexOf(", ")+2,RetLoad[i].IndexOf("]")-(RetLoad[i].IndexOf(", ")+2))));
    }
    initRet = true;
    }
    
    }
    return Convert.ToDouble(initRet);
    }
    Объявление переменной как Retain
    Код:
    string pathRet = @"/home/pi/scada/ScadaServer/Config/retain.txt";
    Dictionary<int, double> DictRet = new Dictionary<int, double>();
    public double Retain (double ret)
    {
    DictRet[CnlNum] = ret;
    return ret;
    }
    Запись в файл
    Код:
    double SaveRet()
    {
    string[] RetSave = new string[DictRet.Count];
    bool eq = false;
    for (int i = 0; i < DictRet.Count; i++)
    {
    RetSave[i] = Convert.ToString(System.Linq.Enumerable.ElementAt(DictRet, i));
    }
    
    if (!System.IO.File.Exists(pathRet))
    {
    System.IO.File.WriteAllLines(pathRet, RetSave, Encoding.UTF8);
    return 0;
    }
    else
    {
    string[] RetOld = System.IO.File.ReadAllLines(pathRet, Encoding.UTF8);
    eq = System.Linq.Enumerable.SequenceEqual(RetOld, RetSave);
    if (!eq)
    {
    System.IO.File.WriteAllLines(pathRet, RetSave, Encoding.UTF8);
    }
    }
    return Convert.ToDouble(eq);
    }
    Все таки есть преобразования в строку при записи в файл и обратное преобразование в числа int и double
    Скобочки [ и ] это я оказывается для красоты замутил что ли хотч не, это скорее особенность какого-то механизма при записи.
    При записи я не парился с конвертированием Key и Value словаря, а сделал это через Linq. Обратно уже по одному. Вполне возможно можно обрезать лишние скобки и разделить строку и как то быстрее сделать при чтении но как-то особо не парился...
    Последний раз редактировалось melky; 15.01.2021 в 23:14.

Страница 38 из 161 ПерваяПервая ... 2836373839404888138 ... ПоследняяПоследняя

Похожие темы

  1. Вопросы по СИ-8
    от aleksandr87 в разделе Эксплуатация
    Ответов: 2
    Последнее сообщение: 11.06.2016, 18:56
  2. Вопросы новичка по MasterScada
    от MrNobody в разделе Master SCADA 3
    Ответов: 4
    Последнее сообщение: 04.09.2014, 14:39
  3. MasterScada v3.6 Основные вопросы
    от colorprint2008 в разделе Master SCADA 3
    Ответов: 7
    Последнее сообщение: 24.12.2013, 15:50
  4. конвертация проекта из Masterscada 3.5 в Masterscada 3.4
    от Сергей_SPB в разделе Master SCADA 3
    Ответов: 2
    Последнее сообщение: 01.04.2013, 16:56
  5. Вопросы по трендам MasterSCADA
    от 42ia в разделе Master SCADA 3
    Ответов: 9
    Последнее сообщение: 26.06.2012, 10:58

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •