powered by simpleCommunicator - 2.0.27     © 2024 Programmizd 02
Map
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / ModBus Как ПРОСТО передать байты данных.
21 сообщений из 21, страница 1 из 1
ModBus Как ПРОСТО передать байты данных.
    #36850628
Dymanovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Скачал библиотеку для MODBUS на C# с http://nmodbus.com/
Также скачал и почитал документацию на ModBus.
Я понял, что это протокол для передачи функций, т.е. управляющих воздействий, где каждой функции соответствует ответ установленного формата.

Мне надо по Ethernet перегнать массив даннх на микроконтроллер (типы char и short). На основании этих данных выполнить программу и вернуть результаты обратно на компьтер.

Как это сделать? А то не знаю с какой стороны к нему подойти.

Спасибо.
...
Рейтинг: 0 / 0
ModBus Как ПРОСТО передать байты данных.
    #36850887
вопрос01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DymanovskyЗдравствуйте.
Скачал библиотеку для MODBUS на C# с http://nmodbus.com/
Также скачал и почитал документацию на ModBus.
Я понял, что это протокол для передачи функций, т.е. управляющих воздействий, где каждой функции соответствует ответ установленного формата.

Мне надо по Ethernet перегнать массив даннх на микроконтроллер (типы char и short). На основании этих данных выполнить программу и вернуть результаты обратно на компьтер.

Как это сделать? А то не знаю с какой стороны к нему подойти.

Спасибо.

а какой контроллер если не секрет
...
Рейтинг: 0 / 0
ModBus Как ПРОСТО передать байты данных.
    #36851069
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dymanovsky,

Со стороны покупки SCADA или хотя бы OPC-сервера.
...
Рейтинг: 0 / 0
ModBus Как ПРОСТО передать байты данных.
    #36851568
Dymanovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Контроллер STR912FAW44X6, но от меня требуется реализация только на стороне компьютера, а не контроллера. Мне-то всего-то надо:
Код: plaintext
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.
        public const byte portCount = 12;
        public const byte testCount = 10;
        public const byte measuresCount = 5;     

        
/*Results got from board*/
        private struct  TTestData{
            public sbyte timeState;//-1 - test failed; 0 - no test; 1 - test passed;2 - waiting to be tested;
            public float [] lastMeasurement;// = new float [measuresCount];//[0] - input voltage
            public TTestData (sbyte timeState){
                this.timeState = timeState;
                lastMeasurement = new float[measuresCount];
            }
        };

        private struct TControlArray{
            public byte device;
            public TTestData [] testInfo;
            public TControlArray (byte device)
            {
                this.device = device;
                testInfo = new TTestData[testCount];
            }
        };

        TControlArray [] Measurement = new TControlArray[portCount];//Принять от контроллера
...
Рейтинг: 0 / 0
ModBus Как ПРОСТО передать байты данных.
    #36851573
Dymanovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И отправить на контроллер
Код: plaintext
1.
2.
Byte [] devOnPortsArray = new Byte [portCount];
Byte [] testsForDevArray = new Byte [portCount*testCount];

и

Код: plaintext
1.
Byte [] stopDevArray = new Byte [portCount];

Пришлось разбить на 2 сообщения, т.к. первое отправил случайно, недописав. Жаль, что здесь нельзя править сообщения.
...
Рейтинг: 0 / 0
ModBus Как ПРОСТО передать байты данных.
    #36851969
вопрос01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dymanovsky,
для начала нужна связь с контроллером, судя по Вашему первому посту она есть, и контроллер готов и умеет общаться с вашим компьютером по протоколу modbus поверх TCP/IP. Подразумеваю что контроллер является слэйвом по отношению к вашему компьютеру.
Если это так то пол дела сделано.
Далее проще всего использовать OPC сервер. Эта штука такая, которая будет сама формировать modbus запросы к контроллеру и принимать данные. А Вы в своей проге будите работать только с OPC сервером, давать ему команды что делать. Про modbus в этом случае Вам вообще ничего знать не понадобится.
Но если хотите сами реализовать всё, то придётся разобраться в протоколе modbus, научиться с ним работать поверх tcp/ip, формировать запросы и отправлять их на контроллер. Впринципе ничего сложного, если есть контроллер под руками, неделя-две работы вместе с каким то простым пользовательским интерфейсом.
...
Рейтинг: 0 / 0
ModBus Как ПРОСТО передать байты данных.
    #36852001
вопрос01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопрос01,
+ это при условии того что карта памяти устройства Вам известна, так как modbus на сколько я помню не с переменными работает, а с ячейками памяти. Да и что то мне подсказывает, что возможно этот контроллер не по модбасу работает.
...
Рейтинг: 0 / 0
ModBus Как ПРОСТО передать байты данных.
    #36852163
Dymanovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Контроллер вообще ни по чему не работает. Просто программу для него буду писать не я :|)
Мне интересно, что надо сделать (какую библеотеку подключить, функции вызвать) чтобы отправить на него хоть какие-нибудь данные, а не функции. До этого с протоколами вообще не сталкивался.
...
Рейтинг: 0 / 0
ModBus Как ПРОСТО передать байты данных.
    #36852291
вопрос01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DymanovskyКонтроллер вообще ни по чему не работает. Просто программу для него буду писать не я :|)

Врят ли контроллер ни по чему не работает, нужно смотреть документацию к нему. У контроллера должно быть програмное ядро, по сути, как операционка на обычных компах. Врят ли тот, кто будет что то писать для контроллера, будет писать свою операционку. Он будет писать программу, которую будет запускать операционка контроллера.
Я конечно, допускаю, что в ядре не реализовано никаких механизмов общения с внешними устройствами через порты контроллера, но врят ли. Это всёравно, что бы виндоуз не умела работать с сетевой картой и не знала бы никакого протокола. Тогда в одну из задач этой пользовательской программы, которую будет писать тот другой человек, будет являться реализация протокола обмена, выбор почемуто пал на модбас (зачем тогда этот протокол выбран, вообще не понятно).

автор
Мне интересно, что надо сделать (какую библеотеку подключить, функции вызвать) чтобы отправить на него хоть какие-нибудь данные, а не функции.

так просто не получится, тут придётся программировать =)

Вообще любая железяка обычно предоставляет и программное сопровождение какоето, возможно, его будет даже достаточно для Ваших целей.
авторДо этого с протоколами вообще не сталкивался.

для начала, изучать сетевое программирование tcp/ip потом только перебираться к модбасу, что бы пустить его поверх
...
Рейтинг: 0 / 0
ModBus Как ПРОСТО передать байты данных.
    #36852362
вопрос01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопрос01,

и написали бы всетаки название контроллера
STR912FAW44X6 - это походу микросхема.. уш больно название стрёмное )
...
Рейтинг: 0 / 0
ModBus Как ПРОСТО передать байты данных.
    #36852375
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
STR912FAW44X6

Главные
Архитектура: ARM966E-S 32-bit
FLASH, byte: 544K
RAM, byte: 96K
Напряжение питания, В: CORE: 1.65…2 В, IO: 2.7…3.6
Периферия
АЦП: 8 x 10bit (1.5MSPS)
ШИМ: 7 x 16bit
Сторожевой таймер: есть
Часы реального времени: есть
Универсальный последовательный порт, шт: 3
CAN интерфейс, шт: 1
Количество USB Device, шт: 1
Ethernet, Mbit/s: 10/100
...
Рейтинг: 0 / 0
ModBus Как ПРОСТО передать байты данных.
    #36852385
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
ModBus Как ПРОСТО передать байты данных.
    #36852395
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
там вообще всё просто - это обычный web-server

The IAP using HTTP application is a mini web server that offers possibility to upload files. It
is based on the uIP stack that manages all TCP/IP traffic. uIP is a free TCP/IP stack
designed originally for 8-bit/16-bit microcontrollers. For more details about the uIP stack
please refer to: www.sics.se/~adam/uip/.
...
Рейтинг: 0 / 0
ModBus Как ПРОСТО передать байты данных.
    #36852419
вопрос01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneтам вообще всё просто - это обычный web-server

ну так даже не интересно... )
...
Рейтинг: 0 / 0
ModBus Как ПРОСТО передать байты данных.
    #36852432
Dymanovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этот пример я запускал. Хотел сначал сделать всё через Web-сервер на основе примера Adam'а Dunkels'а. Написал свой cgi-скрипт для проверки. Из страницы, с которой уже вызвались другие скрипты он вызывался, а с моей собственной (я заменил about.htm на свою) нет. Все строки, которые должны вызывать скрипт выводились как текст, хотя вызовы написал в соответствии с документацией и имеющимися примерами. Потом выяснилось, что предельная длина страницы ~ 1400 символов, что недостаточно, для описания требуемого интерфейса, даже если убрать все символы форматирования кода и написать его в строчку, используя JavaScript автогенерацию повторяющихся элементов. Там я так и непонял как, если на форме есть кнопка Submit методом GET получить с неё данные - где ловить эту пересылаемую на сервер строку. Попробовал запустить uTasker, но он оказался несовместим с Ethernet чипом (MICREL KSZ8041TL). После этих мучений было решено сделать соединение через сокеты, а т.к. в дальнейшем придётся работать с протоколом Modbus надо постараться его использовать. В документации на ModBus постоянно говорится о передаваемых функциях и данных, необходимых для их выполнения. А мне надо просто с одной стороны запаковать и отправить n байт, а сдругой стороны их принять.
...
Рейтинг: 0 / 0
ModBus Как ПРОСТО передать байты данных.
    #36852451
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
читайте дальше документацию, там на C коды есть и описание вызовов.
...
Рейтинг: 0 / 0
ModBus Как ПРОСТО передать байты данных.
    #36852459
вопрос01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DymanovskyВ документации на ModBus постоянно говорится о передаваемых функциях и данных, необходимых для их выполнения. А мне надо просто с одной стороны запаковать и отправить n байт, а сдругой стороны их принять.
всё правеильно, так уж утроен модбас, в теле отправляемого сообщения помимо всякой "хрени" типо номера устройства, контрольной суммы, блока данных и пр. содержится и номер функции (а не функция). Тот кто принимает посылку, по номеру функции определяет что от него хотят, например, записать какие то данные в определенную область памяти, либо считать оттуда и передать обратно (опять же по протоклу модбас, причем, если не ошибаюсь включая номер функции)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
ModBus Как ПРОСТО передать байты данных.
    #38613408
морик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет, помогите пожалуйста, мне нужно настроить два устройства на передачу данных по сети wifi чтоб они обменивались данными без компьютера по протоколу modbus.Это мой новый проект по АСУТП одного предприятия. И причем данные надо будет передать на несколько киллометров. Контролёр Wago 750-841
...
Рейтинг: 0 / 0
ModBus Как ПРОСТО передать байты данных.
    #38613414
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.net тут при чем?
...
Рейтинг: 0 / 0
ModBus Как ПРОСТО передать байты данных.
    #38616027
LameUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
морик, гугли modbus over wifi, это аппаратная задача
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
ModBus Как ПРОСТО передать байты данных.
    #40097932
Матвей1999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте форумчане, мне необходимо настроить стенд, работающий по протоколу RS485, я мало в этом понимаю, надеюсь на ваши советы. Данные идут через конвертер, модель конвертера CH340/341 model 003, Мне нужно чтобы ноутбук через конвертер отправлял запросы и получал ответы. Подключил конвертер к ноутбуку, запустил программу ModBus Pool, установил связь, светодиоды на конвертере замигали, но программма пишет - Получено недостаточное количество байтов, как исправить это?
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / ModBus Как ПРОСТО передать байты данных.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]