Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C# Резервная копия раз в неделю на диск D https://www.cyberforum.ru/ csharp-beginners/ thread2322537.html
Привет, подскажите есть файл в нем хранятся важные данные, подскажите можно ли сделать так что бы раз в неделю делалась копия файла на диск D, если да то как это реализовать
C# Симплекс-метод с равенствами
Нужно решить симплекс-методом задачу линейного программирования например такую: целевую функцию минимизировать: 801*x000 + 391*x001 + 705*x002 + 596*x010 + 472*x011 + 821*x012 + 490*x020 + 261*x021 + 710*x022 + 590*x100 + 322*x101 + 373*x102 + 496*x110 + 514*x111 + 600*x112 + 492*x120 + 405*x121 + 591*x122 + 632*x200 + 535*x201 + 533*x202 + 375*x210 + 564*x211 + 597*x212 + 288*x220 + 372*x221...
C# Вывод арабского языка в консоли https://www.cyberforum.ru/ csharp-beginners/ thread2322509.html
здравствуйте нужно чтоб консоль выводила Арабский язык знаю что для русского нужен Console.OutputEncoding = Encoding.UTF8; а вот для арабского что ?
C# Если пользователь ничего не ввел, выводить error здравствуйте а какой нужно использовать чтоб если пользователь не чего не ввел выводить error знаю только что это else дальше не знаю https://www.cyberforum.ru/ csharp-beginners/ thread2322506.html
C# Разработка класса Book
Разработать классы для описанных ниже объектов. Включить в классе методы set (...), get (...), show (...). Book: Автор, Название, Издательство, Год, Количество страниц. Создать массив Вывести: а) список книг заданного автора; б) список книг, выпущенных заданным издательством; в) список книг, выпущенных после заданного года. Я ток начинаю изучать. И пока не очень понял.
C# Как изменить путь до члена класса? Здравствуйте. Даже не знаю, как технически верно описать свой вопрос... В общем есть такой путь GameVariables.rec_0 где GameVariables - это имя класса, а rec_0 - это статическое поле. Таких полей несколько, т.е. rec_0, rec_1, rec_2 и т.д. Как бы мне динамически изменять имена полей? Например: for (int сс = 0; сс < 5; сс++) { print(GameVariables.rec_ + сс); } Ну или,... https://www.cyberforum.ru/ csharp-beginners/ thread2322482.html
C# Создание консольной программы на тему "музыкальные инструменты" Создать консольную программу на тему музыкальные инструменты: Струнные: гитара, скрипка; Духовые: саксофон. 3-4 классы, так же должны присутствовать дочерние классы"гитара, скрипка", 2-3 метода и свойств, интерфейсы. Кто может помощь, на С#. https://www.cyberforum.ru/ csharp-beginners/ thread2322476.html Дополните программу функцией вывода количества элементов с заданным пользователем значением C#
Программа заполняет массив случайными числами в диапазоне, определённом пользователем, нужно добавить функцию, выводящую на экран количество элементов, соответствующих введённому пользователем значению (например, посчитать, сколько раз встречается "13" в матрице с диапазоном 10-20). Заранее прошу прощения за криворукость/безграмотность кода, сам тот ещё новичок и C# вижу второй раз в жизни....
C# Report Server. Ошибка входа пользователя 'NT AUTHORITY\ANONYMOUS' При запуске с моего компьютера все работает. Если выполняется запуск с компьютера в сети, то появляется "Ошибка входа пользователя "NT AUTHORITY\АНОНИМНЫЙ ВХОД"." Запрос идет к связному серверу. Имя участника службы (SPN) зарегистрировала. https://www.cyberforum.ru/ csharp-beginners/ thread2322428.html C# Программа проверки неравенства https://www.cyberforum.ru/ csharp-beginners/ thread2322397.html
Ребят, есть такая задачка. Требуется написать программу проверки, является ли x - решением неравенства sqrt(ax+b) > c
C# Спецификаторы и описатели формата
Чем отличаются спецификаторы и описатели формата? Как можно каждое из этих понятий формально определить?
C# Формирование последовательности случайных чисел Здравствуйте товарищи. Помогите пожалуйста исправить ошибки) Задание состоит из следующих пунктов: 1. Формирование последовательности случайных чисел с показательным распределением. 2. Формирование последовательности случайных чисел, равномерно распределенных в интервале . 3. Формирование последовательности случайных чисел, подчиняющихся распределению Пуассона (Приближенный метод). 4.... https://www.cyberforum.ru/ csharp-beginners/ thread2322332.html
1 / 1 / 0
Регистрация: 08.04.2015
Сообщений: 9
22.10.2018, 21:08 0

Эмуляция Modbus - C# - Ответ 12992443

22.10.2018, 21:08. Показов 5972. Ответов 11
Метки (Все метки)

Ответ

вот как то так в таком формате приходят тебе данные ответить нужно так же только вместо адреса регистра свои данные и количество регистров опускаешь. Если корректно в Modbus TCP client то порядок байт надо поменять в программе и твои заработают
C#
1
2
3
4
5
     msg[8] = _adr[1];               // адрес регистра
                    msg[9] = _adr[0];               // для чтения
                    byte[] _length = BitConverter.GetBytes(length);
                    msg[10] = _length[1];           // количество регистров
                    msg[11] = _length[0];           // для чтения
на
C#
1
2
3
4
5
                    msg[8] = _adr[0];               // адрес регистра
                    msg[9] = _adr[1];               // для чтения
                    byte[] _length = BitConverter.GetBytes(length);
                    msg[10] = _length[0];           // количество регистров
                    msg[11] = _length[1];           // для чтения
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
if (connected) // если подключение успешно опрашиваем прибор
 
                { 
 
                NetworkStream tcpStream = TCPMBus.GetStream();
               
               
 
 
                    byte[] _id = BitConverter.GetBytes((ushort)id);
                    msg[0] = _id[1];                // я так понял 
                    msg[1] = _id[0];                // это идентификатор сообщения слейв присылает его обртнатно в том же виде
                    msg[2] = 0;                     // на данный момент не используется по описанию протокола
                    msg[3] = 0;                     // на данный момент не используется по описанию протокола
                    msg[4] = 0;                     // длинна сообщения протокола модбас т.е то что следует после этого байта но почему то этот байт равен 0 всегда хотя посмотрим как будет с другим размером запроса
                    msg[5] = 6;                     // длинна сообщения протокола модбас т.е то что следует после этого байта
                    msg[6] = 1;                     // адрес слейв как в модбас рту
                    msg[7] = 3;                     // код функции 3 или 4
                    byte[] _adr = BitConverter.GetBytes((short)startAddress+i);
                    msg[8] = _adr[1];               // адрес регистра
                    msg[9] = _adr[0];               // для чтения
                    byte[] _length = BitConverter.GetBytes(length);
                    msg[10] = _length[1];           // количество регистров
                    msg[11] = _length[0];           // для чтения
 
 
 
 
                    tcpStream.Write(msg, 0, msg.Length);
                string msd = BitConverter.ToString(msg);
 
                byte[] bytes = new byte[TCPMBus.ReceiveBufferSize];
                int bytesRead = tcpStream.Read(bytes, 0, TCPMBus.ReceiveBufferSize);
 
               
                // Строка, содержащая ответ от сервера
                string returnData = BitConverter.ToString(bytes);
                // Расшифровывает данные
                Console.Clear();
                Console.SetCursorPosition(0, 1);
                Console.WriteLine("Запрос: " + (i+1));
                Console.WriteLine("TX: " + msd);
                Console.WriteLine("RX: "+ returnData);
                byte[] values = new byte[2];
               
 
                        values[1] = (byte)(bytes[9]);
                        values[0] = (byte)(bytes[10]);
                        Console.WriteLine("распознанные данные, регистр "+ (i+1)+ ": " + BitConverter.ToUInt16(values, 0));            
                    
                  
                Thread.Sleep(500);
                    if (i == col_1-1)
                    { TCPMBus.Close(); }
                    i++;
                }
 
            }


Вернуться к обсуждению:
Эмуляция Modbus C#
1
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2018, 21:08
Готовые ответы и решения:

Modbus
Добрый день. Помогите пожалуйста, нужно написать программу для опроса устройства по протоколу...

CRC 16 Modbus
Собственно есть алгоритм, в нём старший и младший байт поменяны местами и при вычислении CRC для...

Файл по Modbus
Всем привет, кто-нибудь сталкивался с таким, как передача файлов по протоколу связи Modbus. Нужна...

Modbus через RS-485
Подскажите пожалуйста,как реализуеться обмен по протоколу Modbus через RS-485? Интересует 6-ая...

11
22.10.2018, 21:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.10.2018, 21:08
Помогаю со студенческими работами здесь

Как работать с modbus tcp?
кто знает как работать с modbus tcp подскажите плиз и подкинте пару примеров заранее блогадарен

Проблемы с подключенияем по Modbus TCP
Один и тот же код в разных программах. Одна библиотека подключена. Тем не менее в одной программе...

Использование классов в modbus TCP
Вообщем, необходимо было написать для одного человека модбас, что в принципе я и сделал. Поставили...

Передать дробное число по modbus
Здравствуйте. Создал два простых приложения (сервер и клиент) с помощью библиотеки EasyModbus,...

Формирование байтов для ответа по Modbus
Здравствуйте. Мне нужно сформировать ответ на запрос по протоколу modbus (TCP/IP). Нашёл весьма...

Лучший вариант для работы с Modbus
Здравствуйте. Внезапно у меня появилась задача: организовать передачу данных от приложения с...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru