|
|
  |
Ethernet+TCP/IP, Самое дешевое решение |
|
|
|
Mar 5 2008, 21:27
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Немного не по теме основного топика, но начал смотреть Ваш код с main и увидел: Код while(ADCSRA_ADSC); __disable_interrupt(); *p=ADC; __enable_interrupt(); и не понял смысл запрещения прерывания на время считывания ADC. Зачем это сделано ? Ааа, понял, просто для того чтобы 16бит значение считывалось за раз, просто я такое чтение ADC в основном цикле никогда не использую и подумал что это нужно(зачем то, иногда) для правильного считывания ADC.
|
|
|
|
|
Mar 5 2008, 22:15
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Rst7 @ Mar 5 2008, 20:42)  zltigo все время пугает приходом супер-камней LPC1000... Да не пугаю совершенно и не думаю, что они супер по возможностям будут, но цены в нижней ценовой категории скорее всего подвинут. А то Luminary с Ethernet  на борту совершенно дикие цены имеют для мелких потребителей. А так скорее всего достаточно обычные Cortex-M3 - софтовую эмуляцию можно пробовать уже сейчас на STR32. Только не могу придумать для чего можно применить подобные решения - для большого количества мелких девайсов уж слишком Ethernet структура громоздкой (не сколько дорогой, сколько именно громоздкой и ненадежной из-за обилия кабелей и свичей) получается. А если девайсы штучные, то и ультраэкономия как-то менее привлекательна. Что остаетя? Что-то офигенно массовое для бытового потребления? Что? Цитата(singlskv @ Mar 6 2008, 00:27)  Ааа, понял, просто для того чтобы 16бит значение считывалось за раз, просто я такое чтение ADC в основном цикле никогда не использую... А просто, какие-нибудь больше, чем 8bit переменные модифицируемые в прерываниях или других процессах используете? Так вот та-же проблема....
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Mar 5 2008, 22:30
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(zltigo @ Mar 6 2008, 01:15)  А просто, какие-нибудь больше, чем 8bit переменные модифицируемые в прерываниях или других процессах используете? Так вот та-же проблема.... Да использую, использую...., просто при беглом просмотре мне показалось что это защита на время считывания 10бит регистра ADC, и кстати к аккурантности в этом вопросе есть некоторые предпосылки..., ну а потом просто понял что здесь 16бит защищенный доступ в чистом виде...
|
|
|
|
|
Mar 6 2008, 08:37
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

|
Цитата(zltigo @ Mar 6 2008, 01:15)  Что-то офигенно массовое для бытового потребления? Что? Дешевая замена Xport - первое, что приходит в голову. PS. Если удастся подключать через OPC-драйверы, то тогда открывается широкая дорога в АСУТП. Представьте только, WinCC, InTouch совместимость.
|
|
|
|
|
Mar 6 2008, 10:53
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

|
Цитата(Rst7 @ Mar 6 2008, 13:02)  Я так понимаю, имеется в виду уже поступившее предложение о конверторе Modbus<->Modbus over TCP? Да. Цитата(Rst7 @ Mar 6 2008, 13:02)  Ну давайте попробуем реализовать. Можете кратенько написать, чего надо? Только не надо отсылать читать мануал по Modbus over TCP  Вобщем-то уже реализовано. По-простому. Используется протокол TCP/IP, соответствующего WinSock 1.1. Сервис использует TCP/IP порты, незадействованный в системе. Обычно контроллеры общаются с другими через сервер данных (база данных) по изеру и выступают в качестве клиентов. Протокол OPC является посредником, он интерпретирует данные TCP/IP портов в пакетах и разносит их по полям ее. Этот протокол предназначен для стыковки с любым типом оборудования. Он весь гибко программируется (порты, поля пакетов). Каждый производитель систем автоматизации считает своим долгом разработать свой набор : - сервер данных (по их мнению наиболее быстрый) - драйвер OPC - систему визуализации. Надо не релизовывать, а проверять на предмет конфигурируемости и совместимости с тем или иным продуктом. PS. Надеюсь, что не запутал Вас.
|
|
|
|
|
Mar 6 2008, 10:54
|
Участник

Группа: Свой
Сообщений: 69
Регистрация: 4-02-08
Из: Винница
Пользователь №: 34 732

|
Цитата(Rst7 @ Mar 6 2008, 12:02)  Я так понимаю, имеется в виду уже поступившее предложение о конверторе Modbus<->Modbus over TCP? Ну давайте попробуем реализовать. Можете кратенько написать, чего надо? Только не надо отсылать читать мануал по Modbus over TCP  В MODBUS может использоваться 2 режима передачи данных: ASCII или RTU. RTU более интересен, т.к. применяется CRC16, а скорость передачи вдвое выше. Также его реализация получается проще(или компактнее). В RTU-режиме сообщение начинается с интервала тишины равного времени передачи 3,5 символов. Максимальная длина фрейма - 255 байт. Для Modbus over TCP разбирать содержимое фрейма необязательно, достачно знать начало и его длину. Алгоритм работы приблизительно такой: Со стороны USARTа: ожидание начала пакета, приём пакета до интервала между ними в 3,5 символа или до длины 255, пересылка полученного пакета в ethernet. Аналогично со стороны ethernet. Возможно, лучше было бы пересылку пакетов осуществлять после проверки CRC. Вот так выглядит фрейм: ---------------T----------T-----------T-----------T----------T---------------¬ ¦ старт_____¦ адрес_¦функция_¦ данные_¦ CRC__¦ конец ¦ +-------------+---------+-----------+-----------+----------+---------------+ ¦T1-T2-T3-T4¦ 8 бит ¦ 8 бит ¦n x бит ¦ 16 бит ¦T1-T2-T3-T4 ¦ L--------------+---------+-----------+-----------+----------+---------------
|
|
|
|
|
Mar 6 2008, 17:48
|
Участник

Группа: Участник
Сообщений: 48
Регистрация: 11-09-05
Пользователь №: 8 451

|
RST7 я вас правильно понял, у вас реализован в том числе и HTTP протокол???
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|