Из MQTT в ModBusTCP

Просмотр 8 сообщений - с 16 по 23 (из 23 всего)
  • Автор
    Записи
  • #43261
    JurasskPark
    Участник

    У меня глупый вопрос.
    Если вы написали модуль для сервера, может вам тогда уже написать чтение из сервера значение и отправка его в драйвера Modbus?

    Сам драйвер подключается к серверу и запрашивает значение канале и после его прочтения отправляет в Modbus устройство.

    #43262
    manjey73
    Участник

    @ivanovvladimir простой таймер при вызове итерации решает любую проблему 🙂
    по крайней мере я так сделал
    При этом я могу регулировать цикл обработки, то есть переменной задаю время таймера 200мс, 1000мс и так далее

    • Ответ изменён 2 месяца назад пользователем manjey73.
    #43263
    IvanovVladimir
    Участник

    Это было бы здорово, я же могу сделать это непосредственно из модуля логики? Можешь подсказать команду?
    В любом случае исходный код я посмотрю, но это немного ускорит процесс)

    #43265
    manjey73
    Участник

    я использую if (curData.IsDefined) в Итерации.
    А вы читаете из БД, а что происходит с записью в БД ? она пишется РАЗ В МИНУТУ по умолчанию.

    И вероятно вот она, ваша минута откуда нарисовалась.

    #43266
    IvanovVladimir
    Участник

    Тогда почему если значение в канале отличается от полученного по mqtt то значение канала modbus меняется сразу, а не в течение минуты? По сути тогда все команды должны проходить с задержкой до минуты

    #43267
    manjey73
    Участник

    Возможно потому, что статус срабатывает сразу. Не знаю, честно 🙂
    А когда нет изменения, статус и не меняется

    #43268
    JurasskPark
    Участник

    https://github.com/RapidScada/scada-v6/blob/master/ScadaCommon/ScadaCommon/Client/ScadaClient.cs
    https://github.com/RapidScada/scada-v6/blob/master/ScadaCommon/ScadaCommon/Client/ConnectionOptions.cs

    ScadaClient localClient = new ScadaClient(connOptions);
    List<Slice> slices = new List<Slice>();
    localClient.WriteCurrentData(slices, Protocol.WriteDataFlags.IsCurrent);

    public CnlData[] GetCurrentData(int[] cnlNums, bool useCache, out long cnlListID)

    #43269
    IvanovVladimir
    Участник

    Спасибо за примеры, пока буду пробовать, завтра или на следующей неделе отпишусь получилось\нет

Просмотр 8 сообщений - с 16 по 23 (из 23 всего)
  • Для ответа в этой теме необходимо авторизоваться.