Easyelectronics.ru • Просмотр темы - С# & Modbus

Easyelectronics.ru

Электроника для всех
Текущее время: 18 авг 2018, 07:45

Часовой пояс: UTC + 5 часов



    • JLCPCB - Прототипы 10 PCBs всего за 2$ (100*100mm, 2-layer)
    • Как мы делаем платы, смотрите на YouTube
    • Крупнейшая китайская фабрика прототипов. 300000+ заказчиков и 10000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин комплектующих.

Начать новую тему Ответить на тему  [ Сообщений: 33 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: С# & Modbus
СообщениеДобавлено: 22 май 2018, 11:43 
Старожил
Аватара пользователя

Зарегистрирован: 04 окт 2011, 10:19
Сообщения: 1378
А другой компьютер что принимает ?
100500 раз делал разное с ком портом - никогда такого не видел.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: С# & Modbus
СообщениеДобавлено: 22 май 2018, 18:14 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 4829
В софте анализатора выставить автонастройку скорости ...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: С# & Modbus
СообщениеДобавлено: 22 май 2018, 21:32 
Заглядывает иногда

Зарегистрирован: 04 сен 2014, 12:44
Сообщения: 81
так анализатор то принимает от проги на Си правильно, а от проги на шарпе все тоже но в другом виде. Причем расходомер отвечает проге на си, а с прогой на шарпе не хочет :(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: С# & Modbus
СообщениеДобавлено: 22 май 2018, 22:33 
Старожил
Аватара пользователя

Зарегистрирован: 04 окт 2011, 10:19
Сообщения: 1378
Значит остались ещё чудеса.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: С# & Modbus
СообщениеДобавлено: 22 май 2018, 22:42 
Заглядывает иногда

Зарегистрирован: 16 окт 2013, 20:15
Сообщения: 157
Откуда: Екатеринбург
Seyran писал(а):
Код:
<остальной-код>
                port.Encoding = Encoding.UTF32;
<остальной-код>

На правах гипотезы, попробуйте заменить обозначенную в Вашем листинге строку на ниже представленную:
Код:
port.Encoding = Encoding.GetEncoding(28591);

А вдруг?.. как говорится. На всякий пожарный, подробности здесь


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: С# & Modbus
СообщениеДобавлено: 23 май 2018, 11:11 
Старожил
Аватара пользователя

Зарегистрирован: 14 фев 2012, 19:11
Сообщения: 326
Откуда: Энергодар, Нижневартовск, Екатеринбург
Попробуйте тестовый проект:
Код:
using System;
using System.Collections.Generic;
using System.IO.Ports;

namespace SerialTest
{
    class Program
    {
        static private SerialPort port;

        static void Main(string[] args)
        {
            try
            {
                // настройки порта
                port = new SerialPort( "COM2", 19200, Parity.None, 8, StopBits.One )
                {
                    Handshake = Handshake.None,

                    ReadBufferSize = 256,
                    WriteBufferSize = 256,

                    ReadTimeout = 1000,
                    WriteTimeout = 1000
                };

                port.Open();
            }
            catch ( Exception ex )
            {
                Console.WriteLine( "ERROR: невозможно открыть порт: {0}", ex.ToString() );
                return;
            }
            var query = new List<byte>();

            query.Add(1);   //Номер прибора
            query.Add(3);   //Функция

            byte[] _adr = BitConverter.GetBytes(0);
            query.Add( _adr[1] );   //Старший байт № первого регистра
            query.Add( _adr[0] );   //Мл. байт № первого регистра

            byte[] _length = BitConverter.GetBytes(1);
            query.Add( _length[1] );    //Ст. байт кол-ва регистров для чтения
            query.Add( _length[0] );    //Мл. байт кол-ва регистров для чтения

            port.Write( query.ToArray(), 0, query.Count );
        }
    }
}


Только смотреть нужно на стороне ПК при помощи монитора на всякий случай. Например, Serial Port Monitor от Eltima.


Вложения:
Комментарий к файлу: Тест последовательного порта
2018-05-23_11-10-17.png
2018-05-23_11-10-17.png [ 139.86 Кб | Просмотров: 514 ]

_________________
git.io/vOZo0
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: С# & Modbus
СообщениеДобавлено: 23 май 2018, 16:05 
Только пришел

Зарегистрирован: 21 май 2018, 09:22
Сообщения: 8
Порфирий, ранее писал что пробовал разные кодировки. В примере осталось то что пытал в последнюю очередь, а если честно то кодировка совсем не причем. Кодировка нужна в Modbus ANSII, а в RTU на нее наплевать. На самом деле у меня все заработало, но на старой версии того что предлагал neiver, под версию Framework 2.0. Нашел в их старых репозиториях. Ссылку выложу вечером из дома, может еще кому под Win CE пригодиться.

neiver писал(а):
Как организована работа с Modbus на C#? Свой велосипед или библиотека?
Я пользовался вот этим https://github.com/NModbus4/NModbus4 работает хорошо.


А на счет моей реализации прав ShadS, вся проблема в таймингах и синхронизации. Если посмотреть скрины которые я раньше выкладывал, видны перед правильными сообщениями короткие 2-3 пакета 0х71, скорее всего в них и есть весь секрет. Закончу проект, отправлю заказчику, а посля разберусь с этим, на будущее. Я никогда не работал с RTU, обычно было ANSI.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: С# & Modbus
СообщениеДобавлено: 23 май 2018, 21:26 
Заглядывает иногда

Зарегистрирован: 04 сен 2014, 12:44
Сообщения: 81
https://code.google.com/archive/p/nmodbus/source/default/source вот обещанная ссылка


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 33 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


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

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB