Разговоры на технические темы

Тема в разделе "Флудилка", создана пользователем Igor68, 1 апр 2021.

  1. Airbus

    Airbus Радиохулиган Модератор

    А в настройках IDE порт не выбираешь разве? К меня к СОМ3 постоянно подключен шнурок от мабилы на PL 2303 по сути тот же ISB-UART переходник. И я всегда смотрю что и куда включено если конечно не использую СОМ3 а то IDE по умолчанию его норовит установить.
     
  2. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Коллеги, кто работал с советским чудом - запоминающим осциллографом С8-17 ?
    На работе нужно восстановить одно такое чудо. Вопросов 2 -
    1. Как выглядит запомненное изображение осциллограммы на экране ? У меня - как серая дорожка от пальца на слое зеленоватой муки.
    2. Как должно выглядеть изображение шкалы на экране трубки ?
    С уважением.
     
    Последнее редактирование: 4 май 2022
  3. SergeiL

    SergeiL Оракул Модератор

    Там наверное трубка памятью, инертная.
    Был у меня давно осциллограф с зеленой трубой, очень инертной. Для медленных процессов, громоздкий. Подарил.

    У меня древний С1-68 стоит на верхней полке шкафа, для совсем непонятных ситуаций. Трубка обычная.
    Это если уже совсем не разобраться без осциллографа. Не помню когда его доставал.
    На работе стоит HP приличный, но тоже не помню когда его включал.

    Обычно светодиода и вывода в последовательный порт хватает, чтобы разобраться что не так.
     
  4. Airbus

    Airbus Радиохулиган Модератор

    Хотел купить подобного Динозавра а потом подумал—нафига?
     
  5. parovoZZ

    parovoZZ Гуру

    в аналоговой схеме? Для цифровых схем применяют логический анализатор и прочие подобные приборы. Осциллограф там не так удобен.
     
  6. Igor68

    Igor68 Гуру

    Теперь Виндовс как телеге пятое колесо после Apache + PHP + HTML + SVG + JS. Ну конечно и исполняемый код на Си (а куда без него?):
    Screenshot 2023-07-21 at 21-27-05 Водоподготовка.png
    (картинка сия (элементы и надписи) интеракивная(динамика процессов в реальном времени): подсказки, ссылки и прочее).

    А это общий вид мониторинга разных объектов (надо только либо нормально разметить страницу, либо добавить элементы мониторинга(которые есть)):
    Screenshot 2023-07-21 at 21-38-41 Система мониторинга.png
    Блин контроллер от перегрева умирает - даже пинга к нему нет, а я на удалёнке.
    Умирает печной контроллер (муршрутизатор уже умер - тепеперь к MOXA IA240 подключено напрямую, благо он исправно работает по Modbus RTU и управляет насосами охлаждения индукторов). Водоодготовка - то же MOXA IA240 другой и в другом шкафу работает исправно и по Modbus RTU и по ETHERNET. Только ТРМ200 всё время висит при любом скачке напряжения, благо он только для контроля и на другом порту Modbus RTU. Этот ТРМ200 вешает всю шину RS-485.

    ТЕПЕРЬ НАДО ТОЛЬКО БРАУЗЕР - а он есть везде!
     
    Последнее редактирование: 21 июл 2023
    Un_ka и b707 нравится это.
  7. b707

    b707 Гуру

    Очень красиво, но совершенно недостижимо для меня...
    Это как барабаны Страдивари
     
    Airbus нравится это.
  8. Igor68

    Igor68 Гуру

    Привет дружище! А почему не достижимо? Готов оказать посильную помощь! Для начала надо поднять Web сервер + PHP. Ну и опционально MySQL(если надо). Формат картинки SVG (векторная графика) позволяет встраивать в картинку JS ну и много чего ещё. Редактор картинки SVG - Inscape бесплатный и доступен практически на всёх платформах. Что касается встраивания JS в картинку... то файл картинки редактируется даже обычным текстовым редактором и выглядит, ну прямо чистый XML (вот начальный фрагмент):
    Код (Text):
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <svg
       xmlns:dc="http://purl.org/dc/elements/1.1/"
       xmlns:cc="http://creativecommons.org/ns#"
       xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
       xmlns:svg="http://www.w3.org/2000/svg"
       xmlns="http://www.w3.org/2000/svg"
       xmlns:xlink="http://www.w3.org/1999/xlink"
       xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
       xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
       width="195mm"
       height="234.27063mm"
       id="svg3719"
       version="1.1"
       inkscape:version="1.0.2 (e86c870879, 2021-01-15)"
       sodipodi:docname="cool_abp.svg">
      ....
      ....
     
    Можно даже формировать картинку самим JS на WEB странице (тут график - данные страница получает от WEB сервера по JSON. Кстати WEB сервер через PHP работает с MySQL. На картинки печи не глядите, они хоть и динамичные, но всё равно пыль в глаза ):
    Screenshot 2023-07-22 at 11-05-41 Индукционная печь ABP.png

    Весь сбор данных ( клиент-сервер и прочее собраны на Си, не забываем и про BASH )... всё динамичное записывается в RAM диск - данные в реальном времени. Ну вот как-то так.
     
  9. b707

    b707 Гуру

    Круто. может и правда реально.
    Сервак на линуксе у меня есть, inkscape пользоваться умею.
    Может какой мануал посоветуете, как XML в картинку встраивать?
     
  10. Igor68

    Igor68 Гуру

    Вот это простой пример с кнопками:
    Test_svg_button.zip
    Тут кнопки рисуются и в них встроены функции JS. Кнопки - файл SVG - он же XML.
    Это просто пример для пробы. Кстати скрипт может быть не в картинке SVG, а загружаться самой картинкой
    Вот начало картинки SVG:
    Код (Text):

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <svg
       xmlns:dc="http://purl.org/dc/elements/1.1/"
       xmlns:cc="http://creativecommons.org/ns#"
       xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
       xmlns:svg="http://www.w3.org/2000/svg"
       xmlns="http://www.w3.org/2000/svg"
       xmlns:xlink="http://www.w3.org/1999/xlink"
       xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
       xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
       width="202.30312mm"
       height="234.27063mm"
       id="svg3719"
       version="1.1"
       inkscape:version="1.0.2 (e86c870879, 2021-01-15)"
       sodipodi:docname="cool_abp.svg">
       <script
            xlink:href="../scripts/cool_abp.js"
            type="text/javascript"
            id="CoolAbpJS1"
       />
      <defs .....
    .....
    ....
     
    Видите строки:
    Код (Text):
    <script
            xlink:href="../scripts/cool_abp.js"
            type="text/javascript"
            id="CoolAbpJS1"
       />
    тут как раз источкик xlink:href="../scripts/cool_abp.js" указывает на скрипт (JS) который будет загружен.
    И ещё: Очень помогает браузер, точнее Инструменты вэб-разработчика. У меня Firefox, и я активно этим пользуюсь.
    Со стороны сервера, сделайте обработчик запросов с Вашей страницы - я делал на PHP. Он как и JS похож на Си, так что мне это упростило всё. А вот про CSS, HTML, SVG Вам придётся искать через поисковик... там всего много.
    А правило одно: WEB страница у Вас в браузере + JavaScript; PHP на WEB сервере и всякие Коды на Си и Bash - всё это вместе одно целое (можете называть это одной программой). Не забудьте и про код на Си и толпу всяких устройств ( может быть то же с кодом ) на разных интерфейсах - всё это одно единое, одно целое.
    Ну вот как-то так.
     

    Вложения:

  11. Igor68

    Igor68 Гуру

    Что касается картинки SVG, то она сама ( картинка ) и есть XML.
    Сделайте картинку в inkscape, сохрание, и откройте её текстовым редактором.

    Вот фрагмент JS (пример - вырезка из рабочего, а код не "причёсан"):
    Код (Javascript):
    //
    var objectABP;
    var svgDocumebtABP;
    var object;
    var svgDocument;
    //
    function indexstart() {
        StrMsg = "test";
        CntLoop = 0;
        RdName();
        /***** "регистрация SVG" *****/
        object = document.getElementById("swcimg");
        svgDocument = object.contentDocument;
        objectABP = document.getElementById("coolabpimg");
        svgDocumentABP = objectABP.contentDocument;
        //тут закращиваем элементы каритнки
        CurToY1("blue");
        CurFromY1("blue");
        L1_2("yellow");
        L2_2("yellow");
        L3_4("yellow");
        CurFromBak1("blue");onLoad="indexstart()"
        CurFromM1("blue");
        CurFromBak2("blue");
        CurFromM2("blue");
        CurFromY3("blue");
        CurFromBak3ToM3("blue");
        CurFromBak3ToM4("blue");
        CurFromM3("blue");
        CurFromM4("blue");
        //
        LoadIndex();
    }

    /* следует учесть, что элементы картинки (ID) надо сразу присвоить
    а уд потом JS будет их окрашивать... и прочее */


     
    тут на WEB странице две картинки:
    1. swcimg - картинка для водоподготовки
    2. coolabpimg - картинка для печи

    Понимаю, что не наглядно - всё в разных файлах, но это:
    Код (Javascript):
    //насос 1
        var svgElement = svgDocumentABP.getElementById("el_M1");
        if(dbI.el_3Q1_normal != "1") {
            svgElement.style.fill = "red";
        } else if(dbI.el_m1_on == "1") {
            svgElement.style.fill = "green";
        } else {
            svgElement.style.fill = "gray";
        }
    Код (Javascript):
    //насос 1
        var svgElement = svgDocumentABP.getElementById("el_M1");
        if(dbI.el_3Q1_normal != "1") {
            svgElement.style.fill = "red";
        } else if(dbI.el_m1_on == "1") {
            svgElement.style.fill = "green";
        } else {
            svgElement.style.fill = "gray";
        }
    фрагмент окрашивания насоса (из системы охлаждения печи ABP). В любом случае, контроллер MOXA IA240LX читает по Modbus RTU и устройства дискретного ввода-вывода 224-8Д.4Р(Овен), в свою программу управления и свой сервер, потом ПК с линуксом читает по TCP из сервера MOXA IA240LX данные и помещает из в формате JSON в RAM-диск... а WEB страница делая запрос своим JS активирует чтение из RAM-диска WEB сервера с помощью PHP, который даёт ответ странице. И приняв ответ JS на странице браузера производит окраску соответствующего элемента ( смотрите выше )
     
    Последнее редактирование: 22 июл 2023
  12. parovoZZ

    parovoZZ Гуру

    Погоди, ты в промку вместо скады втащил браузер?
     
  13. DetSimen

    DetSimen Гуру

    за это прям выпить надо.
     
  14. Igor68

    Igor68 Гуру

    это изменённая версия этого:
    https://forum.amperka.ru/threads/Разговоры-на-технические-темы.22016/
    теперь не надо вииндовс, ну и программы в Visual Studio. Ничего устанавливать не надо, всё работает из браузера... мало того эта штука кидает аварийные события прямо в Телеграм (по заказу энергетика). Телеграм скрипт крутится на сервере и собран на PHP - раньше не знал, что PHP скрипт умеет крутиться и без Apache.
    Вот как-то так.
     
  15. parovoZZ

    parovoZZ Гуру

    Ты на IA240 поставил веб сервак? А где журнал событий? А как оператору понять, что ничего не зависло, а работает? Что контролирует работу браузера? Куда пишутся тренды? Есть быстрые тренды? Как происходит их децимация?
     
  16. Igor68

    Igor68 Гуру

    1. Шкаф водоподготовки(IA240LX Linux Moxa 2.6.9-uc0 #4 Wed Jun 14 15:40:27 CST 2017 armv4tl unknown):
    Внутренние коммуникации:
    Modbus порт 1:
    ADAM 4051(адр1) - все датчики уровней; контакты состояния насосов М1-1...М2-2; два датчика давления; состояние клапана Y1
    ADAM 4051(адр2) - состояния клапанов Y2 и Y3; состояния насосов М2-2...М4-2;
    ADAM 4051(адр3) - состояние всех переключателей на щите;
    ADAM 4150(адр4) - счётчики расхода; управление всеми клапанами;
    ADAM 4068(адр5) - управление всеми насосами (пускатели)
    Modbus порт 2:
    ТРМ200(адр6) - контроль температур прямой и обратки горячего водоснабжения
    Внутри код Си и BASH (автономная система управления и сервер доступа к данным)
    Внешняя коммуникация(локальная сеть 192.168.0.0/24):
    Серер Apache + Сервер данных на Си
    2. Шкаф печи (IA240LX Linux Moxa 2.6.9-uc0 #4 Wed Jun 14 15:40:27 CST 2017 armv4tl unknown):
    Внутренние коммуникации:
    2.1. Ethernet - доступ к данным процессов - к серверу OPC-UA контроллера SIEMENS
    2.2 Modbus порт1:
    ТРМ200 - температура на улице и в помещении насосов
    ТРМ200 - температура прямой и обратки контура охлаждения электроустановок
    МК110-8Д.4Р - состояние 2-х насосов охлаждения электрооборудования; выключение градирни; выключение насоса
    ТРМ200 - температура прямой и обратки контура охлаждения индукторов
    МК110-8Д.4Р - состояние 2-х насосов охлаждения индукторов; выключение насоса
    МК110-8Д.4Р - состояние 2-х насосов внешнего контура охлаждения; выключение насоса
    2.3 Modbus порт 2:
    МК110-8Д.4Р - кнопка перезапуска насосов охлаждения ; система свето-звуковой сигнализации
    МЭ110-224.1Н - контроль параметров напряжения питания автоматики
    Внутри код на Си + BASH: автономная система управления и сервер данных
    Внешняя коммуникация(сеть 192.168.1.0/24):
    Сервер данных печи + мост socat в сеть шкафа ( для контроля и отладки):
    3. ПК (в роли центра системы Linux debian2 4.9.0-19-686-pae #1 SMP Debian 4.9.320-2 (2022-06-30) i686 GNU/Linux):
    3.1. Система контроля процессов плавок по ethernet 192.168.1.0/24
    3.2. Система контроля и управления водоснабжения по ethernet 192.168.0.0/24
    3.3. Система контроля и управления комплексом полевых испытаний по ethernet 192.168.0.0/24 (здесь не рассматривается,
    но построена на MOXA UC7101LX Linux uCLinux_moxa.chemservice 2.6.19-uc1MoXaRt #1 Fri May 28 10:18:59 CST 2010 armv4tl ARM)
    3.4. локальный MySQL сервер для накопления данных от систем контроля и управления
    3.5. WEB сервер Apache - всякие страницы
    3.6. шлюзы socat (VNC и OPC-UA через MOXA IA240) к внутренней сети печи
    4. клиенты сети 192.168.0.0/24 - А Виндовс то тут не при чём:D

    Вот если кратко, то как-то так
    PS: Всё сделано на Си и C++; Bash; PHP. И ещё на HTML + JavaScript, но это только для загружаемых клиентами ВЭБ страниц.
     
    Последнее редактирование: 23 июл 2023
  17. Igor68

    Igor68 Гуру

    А это:
    https://forum.amperka.ru/threads/Разговоры-на-технические-темы.22016/page-9#post-310209
    Это что? Хоть архивные, хоть реального времени - всё через MySQL прямо из страницы. К сожалению динамику напряжения питания показать не могу - связь умерла и восстанавливается раза 4 в сутки, а я на удалёнке (капельница на дневном стационаре - чистка сосудов)
     
  18. Igor68

    Igor68 Гуру

    Вот ещё одна интересная штука - 3D редактор, который работает прямо в браузере:
    Screenshot 2023-07-23 at 11-15-34 three.js editor.png
    Screenshot 2023-07-23 at 11-16-35 three.js editor.png
    Screenshot 2023-07-23 at 11-17-05 three.js editor.png
    тут не только редактор, но всякие демки... и вообще библиотека для применения

    называется three.js-dev весит архив three.js-dev.zip 341Мб. Так, что качайте сами - она бесплатная.

    https://threejs.org/

    Screenshot 2023-07-23 at 11-33-01 three.js examples.png


    Думаю - а куда это можно прикрутить? Ну что бы с пользой.
     
  19. Igor68

    Igor68 Гуру

    Добрый вечер @b707 !!! Вот простой пример SVG - очень простой, так что думаю и Вам будет просто. Тем не менее, метод позволит рисовать графики. В примере только одна линия и тест обращения к серверу (JS и PHP). Пример только размещается на Вашем WEB сервере, а Вы из браузера заходите и видите: Screenshot 2023-07-26 at 20-45-29 NM.png
    тоненькая линия на чёрном фоне. Тем не менее страница проста:
    HTML:
    <!DOCUTYPE html>
    <html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <link rel="icon" href="images/favicon.ico" type="image/x-icon" />
        <title>***NM***</title>
        <link rel="stylesheet" href="css/styles.css" type="text/css" />
    </head>
    <body onLoad="main()" style="background-color: black; color: white;">
    <div class="MyScreen">
        <div id="info1">
        </div>
        <svg id="NMon" version="1.1" type="image/svg+xml" xmlns="http://www.w3.org/2000/svg" />
    </div>

    <script src="scripts/SVG5.js" type="text/javascript"></script>
    <script src="scripts/main.js" type="text/javascript"></script>

    </body>
    </html>
    скриптов всего два. Тут запрос к серверу и прочее. Архив:
    NM.zip
     

    Вложения:

    • NM.zip
      Размер файла:
      4,6 КБ
      Просмотров:
      69
  20. parovoZZ

    parovoZZ Гуру

    для графиков есть портясающая библа - D3JS
     
    DetSimen нравится это.