PDA

Просмотр полной версии : парсинг веб-портала контроллера



AlexBut
17.10.2022, 04:52
Здравствуйте,
Есть контроллер у которого нет платы расширения для подключения модбас RS485,
но есть веб-портал, в котором есть вся информация для МСКАДА3. Необходимо вытащить
инфу из веб-страниц контроллера. Нужен рабочий пример парсинга в МСКАДА3 на C#, встроенный в МСКАДА3,
хоть одного параметра(ток, напряжение или давление)

SCADAMaster
17.10.2022, 09:52
Такого примера нет.
Примеры парсинга WEB страниц на C# поищите в интернете.
А затем уже полученные данные можно будет разложить по переменным MasterSCADA, как это описано в документации на скрипты:
https://support.mps-soft.ru/MasterSCADAHelp/index.html?sluzhebnie_skript_rukovodstvo_i_primery _obrashchenie_k_peremennym_proekta_polucheniya_zna cheniya_peremennoj.html

AlexBut
19.10.2022, 09:37
Получилось- взял наугад сайт в нете и отпарсил- я думаю и с контроллером будет работать,
но еще не пробовал т.к. нет удалённого подключения к контроллеру пока

SCADAMaster
19.10.2022, 10:05
А в файл вы зачем вы пишите?

Вот такой запрос будет долгим:
public static string GetHtmlPageText( string url ) {
WebClient client = new WebClient();
using ( Stream data = client.OpenRead( url ) ) {
using ( StreamReader reader = new StreamReader( data ) ) {
return reader.ReadToEnd();
}
}
}
Поэтому или нужно выполнять его асинхронно (async await) или положить ФБ в отдельный объект и у объекта поставить собственный цикл - чтобы вывести в отдельный поток.
Подробнее вот тут описано:
https://support.mps-soft.ru/MasterSCADAHelp/index.html?sluzhebnie_skript_rukovodstvo_i_primery _rabota_s_arhivom_dannyh_vypolnenie_asinhronnyh_za prosov.html

AlexBut
19.10.2022, 10:49
SCADAMaster:А в файл вы зачем вы пишите?

Для того чтобы спокойно его анализировать на этапе отладки. В рабочей версии ни к чему.

AlexBut
19.10.2022, 10:57
SCADAMaster:Вот такой запрос будет долгим:.....
во-первых полагаю , что веб-страницы контроллеров небольшие, во-вторых я задал
период 10 с, что вполне допустимо для большинства диспетчерских с одной стороны,
а с другой данные должны обновляться

SCADAMaster
19.10.2022, 11:35
Это не важно - пропала связь, у вас будет тормозить процесс.
Такие длительные запросы нужно делать в отдельные потоках и выполнять асинхронно.

AlexBut
19.10.2022, 11:41
Это не важно - пропала связь, у вас будет тормозить процесс.
Такие длительные запросы нужно делать в отдельные потоках и выполнять асинхронно.

Учту, спасибо

AlexBut
20.10.2022, 05:42
SCADAMaster:https://support.mps-soft.ru/MasterSC..._zaprosov.html

начал разбираться с потоками и возникли вопросы:
- у нас MasterSCADA 3.11 и множество объектов (БД коннекторы и контроллеры в АРМ, первые дочерние объекты
корня объектов(8шт)-до сотни всего) имеют настройку "собственный цикл", а в настройках системы и АРМ "Макс. количество
рабочих потоков"-3?
-если я в объекте, который читает и парсит веб-страницу поставлю во вкладке опрос "собственный цикл" 10000 мс,
то "периодический опрос " сколько лучше ставить?

SCADAMaster
20.10.2022, 09:33
- у нас MasterSCADA 3.11 и множество объектов (БД коннекторы и контроллеры в АРМ, первые дочерние объекты
корня объектов(8шт)-до сотни всего) имеют настройку "собственный цикл", а в настройках системы и АРМ "Макс. количество
рабочих потоков"-3?

Поставьте флаг "Выполнение в отдельных потоках".



-если я в объекте, который читает и парсит веб-страницу поставлю во вкладке опрос "собственный цикл" 10000 мс,
то "периодический опрос " сколько лучше ставить?
Периодический опрос в 1 такт поставьте у скрипта.
Во всем проекте периодический опрос включать не надо.

AlexBut
20.10.2022, 09:43
MasterSCADA:"Поставьте флаг "Выполнение в отдельных потоках"."


У нас MS3.9 и MS3.11 -там нет такой настройки.

AlexBut
20.10.2022, 09:46
MasterSCADA:"Поставьте флаг "Выполнение в отдельных потоках"."


У нас MS3.9 и MS3.11 -там нет такой настройки.

Извините, обманул в 3.11 уже есть, но галка не стоит, а как в общих чертах тогда выполняются разные "собственные циклы"?

Спасибо

SCADAMaster
20.10.2022, 10:43
Все объекты первого уровня, а также объекты с флагом собственный цикл выполняются в отдельных потоках.

AlexBut
20.10.2022, 11:08
Все объекты первого уровня, а также объекты с флагом собственный цикл выполняются в отдельных потоках.

Извините, наверно уже надоел, но если галка "выполнять в отдельных потоках" не стоит или MSSCADA 3 до 3.11 и в настройках
стоит "мас количество рабочих потоков" 3, а объектов с настройкой "собственный цикл" много , то как тогда эти собственные циклы
выполняются? В общем не зависнет ли?
(просто у нас реально такие настройки- галки нет,макс количество 3,объектов с циклом сотня наверно )

Спасибо

SCADAMaster
20.10.2022, 11:57
В этом случае будет ограниченно всего 3 потоками.
Зависнет или нет - надо смотреть в режиме исполнения, зависит от компьютера. Скорее всего будет работать нормально.