Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 17

Тема: Запись регистров ТРМ202

  1. #1

    По умолчанию Запись регистров ТРМ202

    Добрый день, есть два прибора ПР200 и ТРМ202, подключены в компьютеру через 485 интерфейс. Есть программа на C#, в которую я интегрировал библиотеку для работы с протоколом Modbus, а именно NmodBus4.

    Для прибора ПР200 все замечательно читает и пишет(ReadHoldingRegisters/WriteMultipleRegisters/WriteSingleRegisters).

    Что касается прибора ТРМ202, корректно только читает регистры(ReadHoldingRegisters), не могу записать 5 и 6 регистры, выдает ошибку(WriteMultipleRegisters/WriteSingleRegisters).

    Насколько я понимаю у ПР200 функция записи имеет вид 0х06, а у ТРМ202 - 0х10? Кто-нибудь знает что нужно изменить или дополнить чтобы функция записи для ТРМ202 заработала?

  2. #2

    По умолчанию

    а писать в трм 16ой функцией никак?

  3. #3
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,248

    По умолчанию

    если пытались записать значения от нуля до девяти, то в настройках прибора добавьте один знак после запятой и записывайте нужное значение умноженое на десять
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  4. #4
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,248

    По умолчанию

    Цитата Сообщение от RA. Посмотреть сообщение
    а писать в трм 16ой функцией никак?
    а 0x10 это по Вашему чему равно?
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  5. #5

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    а 0x10 это по Вашему чему равно?
    по написанному понял что и в пр200 и в трм пишет 0х06

  6. #6

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    если пытались записать значения от нуля до девяти, то в настройках прибора добавьте один знак после запятой и записывайте нужное значение умноженое на десять
    пытался и 1 записывать, и 100 и 1000 один и тот же результат, что по 0х06 (WriteSingleRegisters) что по 0х10 (WriteMultipleRegisters)

    меняется только код Exception с 1 на 3

    Выдано исключение типа "Modbus.SlaveException".
    Function Code: 134
    Exception Code: 1 - The function code received in the query is not an allowable action for the server (or slave). This may be because the function code is only applicable to newer devices, and was not implemented in the unit selected. It could also indicate that the server (or slave) is in the wrong state to process a request of this type, for example because it is unconfigured and is being asked to return register values.

    Exception Code: 3 - A value contained in the query data field is not an allowable value for server (or slave).
    This indicates a fault in the structure of the remainder of a complex request, such as that the implied length is incorrect.
    It specifically does NOT mean that a data item submitted for storage in a register has a value outside the expectation of the application program,
    since the MODBUS protocol is unaware of the significance of any particular value of any particular register.

    Так же заметил что при создании запроса IModbusMessage ReadResponse - для чтения (ReadHoldingRegisters) byte[] frameStart создается корректно - 17, 3, 2, 0

    а при использовании метода записи WriteSingleRegister/WriteMultiplyRegister - создается некорректно насколько я понимаю? - 17, 134, 1, 130
    Последний раз редактировалось Saratov; 12.09.2016 в 14:37.

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

    По умолчанию

    что то не сходится, как тогда мастер опрашивает ПР. запишите в трм из другого источника, например с ПРки
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  8. #8
    Пользователь
    Регистрация
    17.06.2016
    Адрес
    Витебск
    Сообщений
    245

    По умолчанию

    Цитата Сообщение от Saratov Посмотреть сообщение
    Добрый день, есть два прибора ПР200 и ТРМ202, подключены в компьютеру через 485 интерфейс. Есть программа на C#, в которую я интегрировал библиотеку для работы с протоколом Modbus, а именно NmodBus4.

    Для прибора ПР200 все замечательно читает и пишет(ReadHoldingRegisters/WriteMultipleRegisters/WriteSingleRegisters).

    Что касается прибора ТРМ202, корректно только читает регистры(ReadHoldingRegisters), не могу записать 5 и 6 регистры, выдает ошибку(WriteMultipleRegisters/WriteSingleRegisters).

    Насколько я понимаю у ПР200 функция записи имеет вид 0х06, а у ТРМ202 - 0х10? Кто-нибудь знает что нужно изменить или дополнить чтобы функция записи для ТРМ202 заработала?
    Действительно в ТРМ202 можно записывать только функцией 10hex, но хоть эта функция в Модбасе предполагает возможность записи нескольких регистров, в ТРМ возможно запись только одного регистра. Если попытаететесь записать за одну операцию 2 или более регистров - получите ошибку. Это касается не только ТРМ, но и некоторых других приборов ОВЕН.

  9. #9

    По умолчанию

    Цитата Сообщение от Santi Посмотреть сообщение
    Действительно в ТРМ202 можно записывать только функцией 10hex, но хоть эта функция в Модбасе предполагает возможность записи нескольких регистров, в ТРМ возможно запись только одного регистра. Если попытаететесь записать за одну операцию 2 или более регистров - получите ошибку. Это касается не только ТРМ, но и некоторых других приборов ОВЕН.
    У Вас есть пример кода для записи в ТРМ202? Я пробовал менять в классе Modbus код функции(WriteMultipleRegisters) с 16 на 10 и давать на запись массив с одним элементом, все равно ошибку выдает.

  10. #10

    По умолчанию

    Цитата Сообщение от Saratov Посмотреть сообщение
    Я пробовал менять в классе Modbus код функции(WriteMultipleRegisters) с 16 на 10 и давать на запись массив с одним элементом, все равно ошибку выдает.
    Я надеюсь, тут опечатка... или же Вы изменяете адрес начального опрашиваемого регистра для функции WriteMultiplyRegister (0х10), предполагая что меняете номер функции. Можете полностью предоставить структуру Вашей функции?

    Цитата Сообщение от Saratov Посмотреть сообщение
    и давать на запись массив с одним элементом, все равно ошибку выдает.
    Какая размерность массива?

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. СП270 Slave. Чтение и запись регистров PFW
    от petera в разделе Панели оператора (HMI)
    Ответов: 4
    Последнее сообщение: 02.05.2015, 18:36
  2. Переворачивание регистров
    от alek.yum в разделе ПЛК3хх
    Ответов: 36
    Последнее сообщение: 19.09.2014, 13:30
  3. Ответов: 9
    Последнее сообщение: 05.09.2008, 20:35
  4. Ответов: 23
    Последнее сообщение: 17.10.2007, 08:35

Ваши права

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