Страница 4 из 4 ПерваяПервая ... 234
Показано с 31 по 40 из 40

Тема: Openhab-Телемеханника-Modbus

  1. #31

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    Загляните в указанный файл, там что ?

    Запустил ТЛ, понял что без ПЛК и бутылки(ок) пива не разобрать, закрыл
    там есть виртуальный ПЛК можно на нем поэкспериментировать)

  2. #32
    Сергей Сисейкин
    Гость

    По умолчанию

    Цитата Сообщение от John888 Посмотреть сообщение
    https://yadi.sk/d/QJINMsbdnKcWaw
    сюда залил
    Но ведь мой ПЛК одновременно является Мастером для Модулей ввода например и счетчиков и Слейвом для Openhab
    поэтому я и сделал следующий IO файл для физического ПЛК с двумя переменными и для Телемеханики его сделал slave:
    <?xml version="1.0" encoding="windows-1251"?>

    <KLogicModules>

    <Module Id="14235"> Comment="ок">
    <Name>Test</Name>
    <sModGroupName>TEST</sModGroupName>
    <CfgName>тест</CfgName>
    <Descr>тест</Descr>
    <Protocol>Modbus</Protocol>
    <Properties>
    <Prop Id="1" Name="Адрес модуля" Type="BYTE" Init="1"/>
    <Prop Id="2" Name="Режим" Descr="Режим передачи 0-RTU, 1-ASCII (не реализован)" Type="BYTE" Init="0" Access="H"/>
    <Prop Id="3" Name="Карта" Descr="Адресация карты с 1" Type="BYTE" Init="0" Access="H"/>
    <Prop Id="4" Name="Доп.свойства" Type="BYTE" Init="1" Descr="Дополнительны свойства (биты): 1-Endian, 2-АдресТегаТУ" Access="H"/>
    </Properties>
    <TagProperties>
    <Prop IdStr="Adr" Name="Адрес модбас" Type="WORD" Access="RW"/>
    <Prop IdStr="Func" Name="Код функции" Type="BYTE" Access="RW" Init="3"/>
    <Prop IdStr="DataType" Name="Тип данных" Type="BYTE" Access="RW" Init="23"/>
    <Prop IdStr="K" Name="Коэффициент" Type="FLOAT" Access="RW" Init="1"/>
    <Prop IdStr="msk" Name="Маска" Type="WORD" Access="R" Init="0xFFFF"/>
    <Prop IdStr="endian" Name="Порядок следования (0-как есть, 1-обратный п.байт, 2-обрат.п.слов, 3-обрат.п.байт,слов" Type="BYTE" Access="R" Init="0"/>
    </TagProperties>
    <TagTree>
    <Group Name="Служебные">
    <Tag Name="Связь" Type="DI" Adr="0x0001" Func="0" Descr="Наличие связи с устройством"/>
    <Tag Name="Время" Type="DTI" Adr="0x0002" Func="0" Descr="Время опроса устройства"/>
    <Tag Name="Приостанов" Type="DO" Adr="0x0003" Func="0" Descr="Приостанов опроса устройства (True - не опрашивать)"/>
    </Group>
    <Group Name="Сетевые настройки reed">
    <Tag Name="1ya" Type="AIF" Adr="2" Func="3" K="0,01" DataType="11" Descr="переменная 1 чтение"/>
    <Tag Name="2ya" Type="AIF" Adr="4" Func="3" K="0,01" DataType="11" Descr="переменная 2 чтение"/>
    <Tag Name="1yaz" Type="AOF" Adr="2" Func="6" K="100" DataType="11" Descr="переменная 1 запись"/>
    <Tag Name="2yaz" Type="AOF" Adr="4" Func="6" K="100" DataType="11" Descr="переменная 2 запись"/>
    </Group>

    </TagTree>
    </Module>

    </KLogicModules>


    а виртуальным контроллером его и опрашивал.
    у каждого ПО свой способ добавления slave устройства, у нас можно вводить коэффициенты.

  3. #33

    По умолчанию

    и все таки возможно ли обойтись без коэффициентов? ну или где то в файле настроек прописать их для того чтобы наружу модбасс передавался корректно? Вопрос прям очень принципиальный!!! и принимался тоже. Эта проблема вроде только на ПЛК с индексом ТЛ только присутствует на остальных вроде все корректно

  4. #34
    Сергей Сисейкин
    Гость

    По умолчанию

    Цитата Сообщение от John888 Посмотреть сообщение
    и все таки возможно ли обойтись без коэффициентов? ну или где то в файле настроек прописать их для того чтобы наружу модбасс передавался корректно? Вопрос прям очень принципиальный!!! и принимался тоже. Эта проблема вроде только на ПЛК с индексом ТЛ только присутствует на остальных вроде все корректно
    Без коэффициентов не обойтись, они должны выставляться на ПО, которое является мастером для ПЛК. Это не проблема, это особенность, внутри своей среды (контроллеры "ТЛ" и SCADA Телемеханика лайт) проблем нет, для передачи в другую среду есть особенности, в данном случае коэффициенты.

  5. #35

    По умолчанию

    Цитата Сообщение от Сергей Сисейкин Посмотреть сообщение
    Без коэффициентов не обойтись, они должны выставляться на ПО, которое является мастером для ПЛК. Это не проблема, это особенность, внутри своей среды (контроллеры "ТЛ" и SCADA Телемеханика лайт) проблем нет, для передачи в другую среду есть особенности, в данном случае коэффициенты.
    Хорошо, тогда поясните пожалуйста подробнее где эти коэффициенты выставлять?

  6. #36
    Сергей Сисейкин
    Гость

    По умолчанию

    В каждом программном обеспечении есть свой формат карты адресов опрашиваемых устройств, обратитесь в техническую поддержку openhab.
    я приводил выше пример, где данная настройка задается в Телемеханике, должно быть что то похожее и вашем ПО.

  7. #37
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,583

    По умолчанию

    Сергей Сисейкин это какой-то треш, ну уже признали бы, что формат IEEE754 в сети вы не поддерживаете в ТЛ. А то выглядит все вышесказанное как отмазка.

  8. #38
    Сергей Сисейкин
    Гость

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    Сергей Сисейкин это какой-то треш, ну уже признали бы, что формат IEEE754 в сети вы не поддерживаете в ТЛ. А то выглядит все вышесказанное как отмазка.
    Карта адресов в ПЛК:
    карта в плк.png
    адреса переменных 2, 4 и 6. Будем в них записывать значения и читать.
    в opc сервере Owen добавляем 6 тэгов, три для чтения, три для записи.

    Начну с записи Float:
    опс запись.png
    использовать нужно настройки как на скриншоте.

    для чтения Float нужно умножать адрес переменной на "2". (отрыл старую доку, в конце приложу описание)
    настройка чтения в OPC.png

    запись и чтение Float работает
    опрос в ОПС.png

    Modbus TCP slave в исполнительной системе EnLogic.

    Протокол MODBUS TCP обеспечивает обмен между устройствами в сети Ethernet, используя модель клиент-сервер (master-slave) со стеком протоколов TCP/IP, где ИС EnLogic выступает в роли сервера (EnLogic также может быть и клиентом, но этот вопрос не рассматривается в данном документе).

    В ИС EnLogic поддержаны три функции Modbus TCP slave:
    0x03 - Read Holding Registers
    Внутри ИС каждый параметр EnLogic имеет размер 4 байта (2 регистра Modbus). При подготовке ответа на запрос мастера значение параметра "ужимается" до одного регистра (2 байта), т.е. вполне может произойти переполнение. В этом случае вместо значения передаётся 0xFFFF. Полноразмерное значение параметра можно получить, используя функцию 0x04.
    Все значения в ответе передаются как short int (от -32767 до 32767), параметры типа Integer передаются без изменений, параметры типа Float умножаются на заданный множитель и обрезаются до целого числа, параметры типа Boolean передаются как 1 (true) или 0 (false). В регистрах, соответствующих несуществующим в конфигурации контроллера параметрам (а также параметрам вне разрешённого диапазона) и в регистрах, соответствующих недостоверным параметрам (с плохим качеством), передаются 0xFFFF.
    В данном запросе адреса Modbus соответствуют МЭК-адресам параметров в конфигурации ИС EnLogic.
    Если адреса запрошенных параметров не попадают в допустимый диапазон, то возвращается исключение Modbus с кодом 2.
    0x04 - Read Input Registers
    В ответ на этот запрос отправляются значения параметров «как есть», без дополнительной обработки, при этом каждый параметр передаётся в двух регистрах Modbus. Адреса Modbus в данном запросе должны представлять собой МЭК-адреса параметров в конфигурации EnLogic, умноженные на 2. Например, для запроса трёх параметров, начиная с МЭК-адреса 21, запрос должен быть на шесть регистров, начиная с адреса 42.
    В ответ в регистрах, соответствующих несуществующим в конфигурации контроллера параметрам (а также параметрам вне разрешённого диапазона) и в регистрах, соответствующих недостоверным параметрам (с плохим качеством), передаются 0xFFFFFFFF. Целочисленные параметры передаются как INT32, параметры с плавающей запятой – как FLOAT32, дискретные значения передаются следующим образом: TRUE - как 0x00000001, FALSE – как 0x00000000.
    Если адреса запрошенных параметров не попадают в допустимый диапазон, то возвращается исключение Modbus с кодом 2.
    0x06 - Write Single Register
    В данном запросе адрес Modbus должен соответствовать МЭК-адресу параметра в конфигурации ИС EnLogic, а само значение параметра должно быть передано в формате short int (от -32767 до 32767), при этом для записи параметров типа Float его значение должно быть умножено на заданный множитель и обрезано до целого числа.
    Если адрес выходит за пределы разрешённого диапазона или отсутствует в конфигурации EnLogic, то возвращается исключение Modbus с кодом 2.

    Настройки задачи Modbus TCP slave
    Настройки задачи Modbus TCP slave и её текущее состояние отображаются в ФБ ModbusTcpSlave:
    123.png
    Настройки по-умолчанию следующие: Порт = 502, Максимум соединений = 5, Начальный адрес = 1, Конечный адрес = 32767, Множитель = 100.

  9. #39
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,583

    По умолчанию

    Вот именно это у вас человек и просил с самого начала...

  10. #40
    Сергей Сисейкин
    Гость

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    Вот именно это у вас человек и просил с самого начала...
    да, понятно, немного не в то русло попали сначала..

Страница 4 из 4 ПерваяПервая ... 234

Похожие темы

  1. Ответов: 26
    Последнее сообщение: 31.01.2023, 17:42
  2. Не передаётся Float32 c ПР200 в Телемеханника Лайт
    от Вадим2881 в разделе Телемеханика ЛАЙТ
    Ответов: 6
    Последнее сообщение: 27.08.2020, 08:38
  3. Ответов: 2
    Последнее сообщение: 04.06.2019, 16:55
  4. Ответов: 10
    Последнее сообщение: 10.06.2018, 16:36
  5. Ответов: 5
    Последнее сообщение: 14.10.2010, 14:42

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •