Показано с 1 по 8 из 8

Тема: TPM202, Modbus, C#, System.TimeoutException

  1. #1

    По умолчанию TPM202, Modbus, C#, System.TimeoutException

    Добрый день.
    Я пытаюсь взаимодействовать с TPM202 из кода по протоколу Modbus. Пишу на C#, Visual Studio 2013. Использую библиотеку NModbus.
    Устройство подключено через преобразователь AC4, системой порт определяется как COM2. Через выложенную у вас на сайте утилиту устройство видится, управлять им возможно.
    Однако, при попытке связаться с ним из кода у меня вылетает System.TimeoutException на строчках, отсылающих запросы устройству.
    Код следующий:
    Код:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.IO.Ports;
    using Modbus.Data;
    using Modbus.Device;
    using Modbus.Utility;
    using Modbus.Serial;
    
    namespace OWEN_TPM202_Control
    {
        class Data
        {
            public string ReturnedCommand { get; private set; }
            private bool connected;
            private SerialPort serialPort;      
    
            public Data()
            {
                connected = false;
            }
            public void Connect()
            {          
                if (!connected)
                {
                    serialPort = new SerialPort("COM2");
                    serialPort.BaudRate = 9600;
                    serialPort.Parity = Parity.None;
                    serialPort.DataBits = 8;
                    serialPort.StopBits = StopBits.One;
                    serialPort.Handshake = Handshake.None;
                    serialPort.ReadTimeout = 500;
                    serialPort.WriteTimeout = 500;
                    serialPort.Open();
                    connected = true;
                }
                var adapter = new SerialPortAdapter(serialPort);
                ModbusSerialMaster master = ModbusSerialMaster.CreateRtu(adapter);
                master.ReturnQueryData(1, 0); // вот здесь выдает исключение
    
                byte slaveID = 1; 
                ushort startAddress = 0; 
                ushort numOfPoints = 5;
                ushort[] registers = master.ReadHoldingRegisters(slaveID, startAddress, numOfPoints); // и здесь
            }        
        }
    }
    Объясните мне, пожалуйста, что я делаю не так и в чем может быть проблема.
    Последний раз редактировалось Tiruno; 16.03.2016 в 16:47.

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

    По умолчанию

    http://www.owen.ru/forum/showthread.php?t=20122 эту тему читали?
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  3. #3

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    Да, читал.
    Приложенный в теме проект(после правки Modbus TCP на Modbus RTU) у меня тоже выдает исключение System.TimeoutException.
    Лучше задать этот вопрос там?

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

    По умолчанию

    Егор в состоянии читать темы с форума, раз не ответил, значит на то есть причины. Я пишу на Яве, у меня проблем с опросом по рту не было
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  5. #5

    По умолчанию

    Может
    надо сначала запросить

    byte slaveID = 1;
    ushort startAddress = 0;
    ushort numOfPoints = 5;
    ushort[] registers = master.ReadHoldingRegisters(slaveID, startAddress, numOfPoints); // и здесь


    а потом брать данные ?

    master.ReturnQueryData(1, 0); // вот здесь выдает исключение
    Часто задаваемые вопросы по кодесис
    1) Почему программа не работает - Следует выполнить "Онлайн ->Старт"
    2) Где скачать CoDeSys, таргеты, прошивки, библиотеки - http://www.owen.ru/catalog/codesys_v3/opisanie

  6. #6
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Алгоритм стандартный: искать работающий мастер, снифером сравнивать пакеты. Я б помог конкретнее, но ТРМов даже вживую не видел.

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

    По умолчанию

    А что, NModbus единственные исходники, посмотреть и опробовать другие решения нельзя ?

  8. #8

    По умолчанию

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

Похожие темы

  1. Сбор данных с приборов OWEN через System.IO.Ports.SerialPort
    от iKarma в разделе Помощь Разработчикам
    Ответов: 11
    Последнее сообщение: 28.03.2015, 16:34
  2. СПК1xx System Events
    от pqqp в разделе СПК1хх
    Ответов: 5
    Последнее сообщение: 27.10.2014, 11:13
  3. TPM202 RS485
    от Filipp_1 в разделе Эксплуатация
    Ответов: 10
    Последнее сообщение: 16.07.2012, 19:00
  4. Tpm202
    от Alex в разделе Эксплуатация
    Ответов: 7
    Последнее сообщение: 22.11.2007, 11:57

Ваши права

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