scada:events

Це стара версія документу!


Логування подій керування (MWJ Audit Service)

Служба логування подій керування (вхід/вихід операторів, запис тегів) для проєкту UA_Energy_Demo_23_04.

Складається з двох частин:

  • mwj_audit_service.py — Python-скрипт, сканує журнал подій AlarmServer і віддає їх у JSON на ``127.0.0.1:5005/events``. Запускається автоматично через Task Scheduler.
  • mwj_events.aspx — сторінка на WebHMI-сервері, яка проксіює цей JSON у браузер клієнта.

Скопіювати ``mwj_audit_service.py`` у папку проєкту:

C:\ProgramData\Schneider Electric\Power Operation\v2024\User\UA_Energy_Demo_23_04\mwj_audit_service.py

Перед запуском замінити в коді шлях до журналу під конкретний проєкт (та за потреби порт):

JOURNAL_DIR = r"C:\ProgramData\Schneider Electric\Power Operation\v2024\Data\UA_Energy_Demo_23_04\c1.AlarmServer1\Database\Journal\JnI00000"
PORT = 5005
DAYS_BACK = 7
POLL_SEC = 1
  • ``UA_Energy_Demo_23_04`` в ``JOURNAL_DIR`` — замінити на назву поточного проєкту (частина шляху до Journal).
  • ``PORT`` — залишити 5005, якщо порт не зайнятий іншим сервісом.

Створити нове завдання (Create Task, не Basic Task) з іменем logging.

General
  • Security options: Run whether user is logged on or not
  • Увімкнути Run with highest privileges
  • Configure for: відповідно до ОС сервера
Triggers
  • New → Begin the task: At startup
  • Status: Enabled
Actions
  • New → Action: Start a program
  • Program/script:
C:\python_portable\python.exe
  • Add arguments:
mwj_audit_service.py
  • Start in (обов'язково!):
C:\ProgramData\Schneider Electric\Power Operation\v2024\User\UA_Energy_Demo_23_04

(поле “Start in” вказує на папку, куди поклали скрипт у п.1 — без цього скрипт може не знайти сам себе при запуску не з тієї директорії)

Conditions
  • Power: увімкнути Start the task only if the computer is on AC power та Stop if the computer switches to battery power
  • Idle: не використовувати
  • Network: не обмежувати

Зберегти завдання (OK), при потребі ввести пароль облікового запису Administrator.

Перевірка: запустити завдання вручну (Run), відкрити на сервері ``http://127.0.0.1:5005/health`` — має повернути ``OK``, і ``http://127.0.0.1:5005/events`` — має повернути масив JSON.

Файл ``mwj_events.aspx`` вставити за шляхом:

C:\Program Files (x86)\Schneider Electric\Power Operation\v2024\Applications\Web\WebHmi

Код без змін (порт 5005 має співпадати з портом у Python-скрипті):

<%@ Page Language="C#" AutoEventWireup="true" %>
<%@ Import Namespace="System.Net" %>
<%@ Import Namespace="System.IO" %>
<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Clear();
        Response.ContentType = "application/json; charset=utf-8";
        Response.AppendHeader("Access-Control-Allow-Origin", "*");
 
        try
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://127.0.0.1:5005/events");
            request.Method = "GET";
            request.Timeout = 4000;
 
            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
            {
                using (StreamReader reader = new StreamReader(response.GetResponseStream()))
                {
                    string json = reader.ReadToEnd();
                    Response.Write(json);
                }
            }
        }
        catch (Exception ex)
        {
            Response.StatusCode = 500;
            Response.Write("{\"error\": \"" + ex.Message.Replace("\"", "\\\"") + "\"}");
        }
        Response.End();
    }
</script>

Перевірка: ``https://<адреса_webhmi>/mwj_events.aspx`` має віддавати той самий JSON, що й ``http://127.0.0.1:5005/events`` на сервері.

  • scada/events.1787903484.txt.gz
  • Востаннє змінено: 2026/08/28 10:51
  • повз scada