• Запрос Curl для сообщений в Телеграм - как красивее?

    @Mitya78 Автор вопроса
    Инженер АСУТП
    Как ни смешно, но спросил у GptChat и он выдал мне работающее решение:
    Dim http, url, message
    
    ' URL API Телеграма для отправки сообщения в канал
    url = "https://api.telegram.org/bot{YOUR_BOT_TOKEN}/sendMessage"
    
    ' Сообщение, которое нужно отправить в канал
    message = "Привет, это тестовое сообщение из WinCC v7.5!"
    
    ' Создание объекта HTTP-запроса
    Set http = CreateObject("MSXML2.XMLHTTP")
    
    ' Формирование данных запроса
    http.Open "POST", url, False
    http.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    
    ' Формирование параметров запроса
    http.Send "chat_id=@your_channel_username_or_id&text=" & message
    
    ' Проверка статуса ответа
    If http.Status = 200 Then
        MsgBox "Сообщение успешно отправлено в Телеграм-канал!"
    Else
        MsgBox "Ошибка при отправке сообщения в Телеграм-канал."
    End If
    
    ' Освобождение ресурсов
    Set http = Nothing
    Ответ написан
    Комментировать
  • Купить Скайп-номер Франции, есть нюансы?

    @Mitya78 Автор вопроса
    Инженер АСУТП
    Оплатил сперва венгерский номер. Мало того что на него дозвониться было нельзя, так и формат оказался кривой, большинство сайтов просто не знало такого префикса оператора.
    Отменил оплату, вернул деньги.

    И тогда уже приобрёл на свой страх французский, адрес вбил от балды.
    Работает, сайты нормально такой номер принимают.
    Ответ написан
    Комментировать
  • Входные и выходные параметры в теле функции - нормально?

    @Mitya78 Автор вопроса
    Инженер АСУТП
    Повторю ещё раз, может в комментарии не все смотрят:

    spoiler
    Может плохо выразился, но вот есть функция, которая условно при наличии двух дискретных входах ПЛК включает выход контроллера. Так я бы считал, что этот выход ПЛК должен быть привязан к выходу функции, а не устанавливаться внутри её.

    Вот пример набросал:

    // Вызов функции
    ORGANIZATION_BLOCK "Main_1"
    TITLE = "Main Program Sweep (Cycle)"
    { S7_Optimized_Access := 'TRUE' }
    VERSION : 0.1

    BEGIN
    "FC_Set_Q"(In1 := "In1_PLC",
    In2 := "In2_PLC",
    Out => "Out2_PLC"); // Верное обращение к выходу ПЛК
    END_ORGANIZATION_BLOCK

    // Сама функция
    FUNCTION "FC_Set_Q" : Void
    { S7_Optimized_Access := 'TRUE' }
    VERSION : 0.1
    VAR_INPUT
    In1 : Bool;
    In2 : Bool;
    END_VAR

    VAR_OUTPUT
    Out : Bool;
    END_VAR

    BEGIN
    IF #In1 AND #In2 THEN
    #Out := TRUE; // Устанавливается выход функции, нормально
    "Out1_PLC" := TRUE; // Устанавливается глобальная переменная, плохо
    END_IF;

    END_FUNCTION
    Ответ написан
    Комментировать
  • Какие могут быть организационные меры по контролю версий (и не только) в промышленной автоматизации?

    @Mitya78 Автор вопроса
    Инженер АСУТП
    Ну чтож, попробую я тогда что-нибудь написать.
    Извиняюсь за канцелярит невольный, сочинлось для начальства.

    План мероприятий по унификации ПО и подходов к его написанию и поддержанию

    Замечание: изложение будет выполнено неакадемическим языком и в свободной манере. Предназначено для оценочного обзора.
    Вариант идеальный:
    1. Всё создаваемое ПО загружается на сервер с контролем доступа и сохранением архивов.
    2. Программа, залитая в ПЛК на объекте, сохраняется под своим номером версии, производится запись времени/даты и версии загруженного ПО, записывается контрольная сумма проекта в ПЛК.
    Все дальнейшие корректировки программы и её модулей/библиотек производятся под новой версией.
    Просмотр контрольной суммы проекта в контроллере возможен (при соответствующих настройках) также через веб-интерфейс (т.е. без использования специализированного программного обеспечения), в том числе для контроля целостности проекта, отсутствии несанкционированных изменений.
    3. Существует общая и обязательная к использованию база библиотек. Хранятся все использованные версии библиотек/модулей. Любое изменение библиотеки сопровождается комментарием в её свойствах.
    При переходе на новую версию инженерного ПО обновляется вся база библиотек.
    4. Ведётся (предпочтительнее автоматическая) запись в таблицу/базу данных всех модулей, особенностей ПО, использованных в проектах.
    a. При помещении на сервер производится сохранение структуры ПО и подсчёт контрольной суммы проекта.
    b. Становится возможным как использование библиотек и ПО на новых объектах, так и при нахождении ошибок в коде исправление в уже существующих.
    5. Общие принципы наименования переменных (самый простой вариант, с которого и следует начинать). Наименование объектов на принципиальной/технологической схеме и используемые в переменных должны совпадать или явно определяться, например из таблицы соответствий.
    Пример наименования: IAA0_FAC3_SEP15_P02_PressOut_KPa – входной аналоговый сигнал 0-20 мА, третий цех, сепаратор №15, второй насос, давление на выходе, в Килопаскалях.
    6. Общие принципы наименования подпрограмм, распределения данных по блокам данных.
    Определение общей структуры программ, например, все входные сигналы обрабатываются в подпрограмме Inputs, выходные Outputs, настройки программы хранятся в блоке данных DB_Settings, а данные для диспетчеризации DB_SCADA.
    7. Использование однотипных языков программирования для каждой из составляющей проекта.
    Например, для библиотек используется SCL, для обработки входных сигналов LAD.
    8. Переход на программное обеспечение, такое как TIA Portal V16 со встроенным контролем версий. Или же использование специализированного ПО/дополнительных модулей для данного функционала.
    Ответ написан
    Комментировать