Easyelectronics.ru

Электроника для всех
Текущее время: 19 ноя 2018, 10:24

Часовой пояс: 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
Сообщения: 1532
А другой компьютер что принимает ?
100500 раз делал разное с ком портом - никогда такого не видел.


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

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


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

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


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

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


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

Зарегистрирован: 16 окт 2013, 20:15
Сообщения: 160
Откуда: Екатеринбург
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 Кб | Просмотров: 542 ]

_________________
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
Сообщения: 90
https://code.google.com/archive/p/nmodbus/source/default/source вот обещанная ссылка


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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

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