astahovsv

Ответы в темах

Просмотр 10 сообщений - с 1 по 10 (из 10 всего)
  • Автор
    Записи
  • в ответ на: MQTT meta/error #37131
    astahovsv
    Участник

    Проверил, теперь работает корректно! Спасибо!

    в ответ на: MQTT meta/error #36988
    astahovsv
    Участник

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

    Вот что я получаю в логах когда удаляю ошибку на 3-ем этапе:

    2025-03-05 11:22:16 Error handling the received message. Topic: /devices/dev-z7sa/controls/k8a3/meta/error:
    System.InvalidOperationException: The underlying array is null.
       at Scada.Comm.Drivers.DrvCnlMqtt.Logic.MqttClientChannelLogic.MqttClient_ApplicationMessageReceived(MqttApplicationMessageReceivedEventArgs e)
    в ответ на: Запись работы операторов #35950
    astahovsv
    Участник

    Настройка моего архива на сервере:
    Screenshot-2024-12-02-183321

    Настройка его в базе конфигураций:
    Screenshot-2024-12-02-183354

    Настройка маски в канале:
    Screenshot-2024-12-02-183439

    в ответ на: MQTT meta/error #35943
    astahovsv
    Участник

    Для тестирования я создал виртуальное устройство на WB, которое у другого виртуального устройства устанавливало или удаляло флаг ошибки.

    defineVirtualDevice('test-device', {
      title: "test-device",
      cells: {
        enableError: {
          title: "Enable Error",
          type: "switch", value: false,
        },
      }
    });
    
    defineRule('test-device:m52i', {
      whenChanged: 'test-device/enableError',
      then: function (newValue) { 
        if (newValue) {
          dev['dev-z7sa/k8a3#error'] = 'r';
        } else {
          dev['dev-z7sa/k8a3#error'] = '';
        }
      }
    });
    

    Дополнительно проверял значение ч/з mosquitto_sub

    mosquitto_sub -v -t "/devices/dev-z7sa/controls/k8a3/meta/error"

    Для преобразования строки в число на коммутаторе используется скрипт:

    if (payload) {
       if (payload === 'r') {
          setValue(0, 1); // read error
       } else if (payload === 'w') {
          setValue(0, 2); // write error
       } else if (payload === 'p') {
          setValue(0, 3); // read period miss
       } else {
          setValue(0, 4); // unknown error
       }
    } else {
        setValue(0, 0); // no error
    }

    Этап 1-ый, нет ошибок:
    Screenshot-2024-12-02-174946

    Этап 2-ой, ошибка установлена:
    /devices/dev-z7sa/controls/k8a3/meta/error r
    Screenshot-2024-12-02-175100

    Этап 3-ий, ошибка удалена:
    /devices/dev-z7sa/controls/k8a3/meta/error (null)
    Screenshot-2024-12-02-175130

    Этап 4-ый, перезагрузка scadacomm6.service
    Screenshot-2024-12-02-175442

    • Ответ изменён 1 год, 8 месяцев назад пользователем astahovsv.
    • Ответ изменён 1 год, 8 месяцев назад пользователем astahovsv.
    • Ответ изменён 1 год, 8 месяцев назад пользователем astahovsv.
    в ответ на: Запись работы операторов #35927
    astahovsv
    Участник

    Я тоже так подумал, что может мне таблица что-то не то показывает, поэтому проверял сам файл DAT — он не изменялся, когда я обновлял значения в канале.

    в ответ на: Запись работы операторов #35922
    astahovsv
    Участник

    Все вроде так и сделал, если маски нет — то записи сохраняются в архивах по умолчанию, как только в маске указываю свой архив — ничего не сохраняется.
    Решил создать новый архив на основе стандартного, минутного.
    Подключил его, записи начали появляться, ну хорошо значит я подключаю правильно.
    Теперь зашел в настройки архива и убрал галочку «Записывать периодически» — перестало что-то записываться в архив.

    Я что-то не так делаю?
    Есть методы для ручной записи данных в архив?

    в ответ на: Запись работы операторов #35918
    astahovsv
    Участник

    Не удалось мне добиться того чтобы как-то сохранялись расчетные каналы (не привязанные ни к чему).
    В итоге создал на WB контроллере отдельные топики, привязал их к скаде.
    Создал свой архив.
    Screenshot-2024-12-01-180921
    Выбрал этот архив в моих каналах.
    Создал для каналов элементы на панели, правлю их там — все корректно отрабатывается, видно изменения на контроллере. Но нет никаких данных на графиках, предполагаю что ничего не записывается в мой архив.
    Как его правильно настроить? Как настроить запись по изменению?

    • Ответ изменён 1 год, 8 месяцев назад пользователем astahovsv.
    в ответ на: Запись работы операторов #35914
    astahovsv
    Участник

    Большинство данных будет регистрироваться с устройств. В основном это датчики температуры и частотники. Операторы должны вводить в систему качество получаемой продукции.

    в ответ на: MQTT meta/error #35909
    astahovsv
    Участник

    Такое ощущение что коммуникатор не обрабатывает пустые значения, если значение в /meta/error — есть, я его вижу в системе. Но стоит удалить значение из /meta/error — коммуникатор молчит, показывает старое значение.

    в ответ на: Проблемы с установкой. #35738
    astahovsv
    Участник

    Пытаюсь работать на linux, установил скаду, сервер и админинка работает.
    При клике на схему (.sch) окно редактора не открывается.
    Взял редактор с Windows версии, добавил в директорию.
    Пытаюсь запустить с помощью команды:
    $ wine /opt/scada/ScadaSchemeEditor/ScadaSchemeEditor.exe
    Получаю ошибку: «Не удалось запустить Редактор схем.»
    В логах такое сообщение:
    »
    ———————————————————————————
    2024-11-24 17:26:17 <SERVER><user><ACT> Инициализация общих данных Редактора схем
    2024-11-24 17:26:17 <SERVER><user><ACT> Загрузка компонентов из файлов
    2024-11-24 17:26:17 <SERVER><user><ACT> Загружены компоненты из файла Z:\opt\scada\ScadaSchemeEditor\Web\bin\PlgSchBasicComp.dll
    2024-11-24 17:26:17 <SERVER><user><EXC> Ошибка при запуске WCF-службы:
    System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. —> System.TypeInitializationException: The type initializer for ‘System.ServiceModel.Configuration.WebScriptEnablingElement’ threw an exception. —> System.ArgumentException: String_null_or_empty
    Parameter name: name
    at System.Configuration.ConfigurationProperty.ValidatePropertyName (System.String name) [0x00012] in <9facab6158204957b90ffbbd4e46c59f>:0
    at System.Configuration.ConfigurationProperty.ConstructorInit (System.String name, System.Type type, System.Configuration.ConfigurationPropertyOptions options, System.Configuration.ConfigurationValidatorBase validator, System.ComponentModel.TypeConverter converter) [0x00049] in <9facab6158204957b90ffbbd4e46c59f>:0
    at System.Configuration.ConfigurationProperty..ctor (System.String name, System.Type type, System.Object defaultValue, System.ComponentModel.TypeConverter typeConverter, System.Configuration.ConfigurationValidatorBase validator, System.Configuration.ConfigurationPropertyOptions options, System.String description) [0x00006] in <9facab6158204957b90ffbbd4e46c59f>:0
    at System.Configuration.ConfigurationProperty..ctor (System.String name, System.Type type, System.Object defaultValue, System.ComponentModel.TypeConverter typeConverter, System.Configuration.ConfigurationValidatorBase validator, System.Configuration.ConfigurationPropertyOptions options) [0x00000] in <9facab6158204957b90ffbbd4e46c59f>:0
    at System.ServiceModel.Configuration.WebScriptEnablingElement..cctor () [0x0001f] in <f0637091e8e5493aab57c2f06eceb159>:0
    — End of inner exception stack trace —
    at (wrapper managed-to-native) System.Reflection.RuntimeConstructorInfo.InternalInvoke(System.Reflection.RuntimeConstructorInfo,object,object[],System.Exception&)
    at System.Reflection.RuntimeConstructorInfo.InternalInvoke (System.Object obj, System.Object[] parameters, System.Boolean wrapExceptions) [0x00005] in <0c09cdbdbe9f4470a58088ff9d75086e>:0
    — End of inner exception stack trace —
    at System.Reflection.RuntimeConstructorInfo.InternalInvoke (System.Object obj, System.Object[] parameters, System.Boolean wrapExceptions) [0x0001a] in <0c09cdbdbe9f4470a58088ff9d75086e>:0
    at System.RuntimeType.CreateInstanceMono (System.Boolean nonPublic, System.Boolean wrapExceptions) [0x00095] in <0c09cdbdbe9f4470a58088ff9d75086e>:0
    at System.RuntimeType.CreateInstanceSlow (System.Boolean publicOnly, System.Boolean wrapExceptions, System.Boolean skipCheckThis, System.Boolean fillCache) [0x00009] in <0c09cdbdbe9f4470a58088ff9d75086e>:0
    at System.RuntimeType.CreateInstanceDefaultCtor (System.Boolean publicOnly, System.Boolean skipCheckThis, System.Boolean fillCache, System.Boolean wrapExceptions, System.Threading.StackCrawlMark& stackMark) [0x00027] in <0c09cdbdbe9f4470a58088ff9d75086e>:0
    at System.Activator.CreateInstance (System.Type type, System.Boolean nonPublic, System.Boolean wrapExceptions) [0x00020] in <0c09cdbdbe9f4470a58088ff9d75086e>:0
    at System.Activator.CreateInstance (System.Type type, System.Boolean nonPublic) [0x00000] in <0c09cdbdbe9f4470a58088ff9d75086e>:0
    at System.Activator.CreateInstance (System.Type type) [0x00000] in <0c09cdbdbe9f4470a58088ff9d75086e>:0
    at System.ServiceModel.Configuration.EndpointBehaviorElement.DeserializeExtensionElement (System.String elementName, System.Xml.XmlReader reader) [0x00038] in <5344fae4b88b45e69d9130b929ee8213>:0
    at System.ServiceModel.Configuration.ServiceModelExtensionCollectionElement`1[TServiceModelExtensionElement].OnDeserializeUnrecognizedElement (System.String elementName, System.Xml.XmlReader reader) [0x00000] in <5344fae4b88b45e69d9130b929ee8213>:0
    at System.Configuration.ConfigurationElement.DeserializeElement (System.Xml.XmlReader reader, System.Boolean serializeCollectionKey) [0x002a3] in <9facab6158204957b90ffbbd4e46c59f>:0
    at System.ServiceModel.Configuration.ServiceModelExtensionCollectionElement`1[TServiceModelExtensionElement].DeserializeElement (System.Xml.XmlReader reader, System.Boolean serializeCollectionKey) [0x00000] in <5344fae4b88b45e69d9130b929ee8213>:0
    at System.Configuration.ConfigurationElementCollection.OnDeserializeUnrecognizedElement (System.String elementName, System.Xml.XmlReader reader) [0x0002c] in <9facab6158204957b90ffbbd4e46c59f>:0
    at System.Configuration.ConfigurationElement.DeserializeElement (System.Xml.XmlReader reader, System.Boolean serializeCollectionKey) [0x002a3] in <9facab6158204957b90ffbbd4e46c59f>:0
    at System.Configuration.ConfigurationElement.DeserializeElement (System.Xml.XmlReader reader, System.Boolean serializeCollectionKey) [0x00340] in <9facab6158204957b90ffbbd4e46c59f>:0
    at System.Configuration.ConfigurationSection.DoDeserializeSection (System.Xml.XmlReader reader) [0x000b6] in <9facab6158204957b90ffbbd4e46c59f>:0
    at System.Configuration.ConfigurationSection.DeserializeSection (System.Xml.XmlReader reader) [0x00000] in <9facab6158204957b90ffbbd4e46c59f>:0
    at System.Configuration.Configuration.GetSectionInstance (System.Configuration.SectionInfo config, System.Boolean createDefaultInstance) [0x000c6] in <9facab6158204957b90ffbbd4e46c59f>:0
    at System.Configuration.ConfigurationSectionCollection.get_Item (System.String name) [0x0002c] in <9facab6158204957b90ffbbd4e46c59f>:0
    at System.Configuration.Configuration.GetSection (System.String sectionName) [0x00059] in <9facab6158204957b90ffbbd4e46c59f>:0
    at System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection (System.String configKey) [0x00006] in <9facab6158204957b90ffbbd4e46c59f>:0
    at System.Configuration.ConfigurationManager.GetSection (System.String sectionName) [0x00005] in <9facab6158204957b90ffbbd4e46c59f>:0
    at System.ServiceModel.Configuration.ConfigUtil.GetSection (System.String name) [0x0000e] in <5344fae4b88b45e69d9130b929ee8213>:0
    at System.ServiceModel.Configuration.ConfigUtil.get_BehaviorsSection () [0x00000] in <5344fae4b88b45e69d9130b929ee8213>:0
    at System.ServiceModel.ServiceHostBase.AddServiceBehaviors (System.String configurationName, System.Boolean throwIfNotFound) [0x00004] in <5344fae4b88b45e69d9130b929ee8213>:0
    at System.ServiceModel.ServiceHostBase.ApplyServiceElement (System.ServiceModel.Configuration.ServiceElement service) [0x00052] in <5344fae4b88b45e69d9130b929ee8213>:0
    at System.ServiceModel.ServiceHostBase.LoadConfigurationSection (System.ServiceModel.Configuration.ServiceElement serviceSection) [0x00000] in <5344fae4b88b45e69d9130b929ee8213>:0
    at System.ServiceModel.ServiceHostBase.ApplyConfiguration () [0x0001d] in <5344fae4b88b45e69d9130b929ee8213>:0
    at System.ServiceModel.ServiceHostBase.InitializeDescription (System.ServiceModel.UriSchemeKeyedCollection baseAddresses) [0x0001c] in <5344fae4b88b45e69d9130b929ee8213>:0
    at System.ServiceModel.ServiceHost.InitializeDescription (System.Type serviceType, System.ServiceModel.UriSchemeKeyedCollection baseAddresses) [0x0001a] in <5344fae4b88b45e69d9130b929ee8213>:0
    at System.ServiceModel.ServiceHost..ctor (System.Type serviceType, System.Uri[] baseAddresses) [0x0000e] in <5344fae4b88b45e69d9130b929ee8213>:0
    at Scada.Scheme.Editor.AppData.StartWcfService (System.String& serviceUrl) [0x00010] in <5ff57b607b82473199e199a4d44f9a6f>:0
    »
    Что нужно для запуска приложения?

Просмотр 10 сообщений - с 1 по 10 (из 10 всего)