Guest Анатолий Posted November 30, 2010 Share Posted November 30, 2010 Здравствуйте! Помогите разобраться. Проблема такая. Схема подключения следующая: 1.PC XP,Proga1 - RS232(COM1,9600 ) - MOXA TCC-80i,RS422 - RS422,Port1,MOXA 5430i,Ethernet IP1 - switch1. RS232(COM2,19200) - MOXA TCC-80i,RS422 - RS422,Port2,MOXA 5430i,Ethernet IP1 - switch1. 2.Device WinCE,Proga2 - Ethernet IP2:NetPort1,NetPort2 - switch1. Т.е. Proga1 через 2 СОМ порта соединяется с Proga2 через Ethernet IP2,NetPort1,NetPort2 - 2 канала связи. Обмен между MOXA 5430i и Proga2 - в UDP mode. Значит, как это работает. 1.Proga1 по 1-му каналу связи(СОМ1) каждые 500мс посылает пакет размером 211байт. MOXA 5430i,получив пакет, разбивает его на три датаграммы(104+104+3) и отправляет их последовательно Proga2. Proga2 получив датаграммы, отправляет квитанцию. 2.Proga2 по 2-му каналу связи каждые 100мс шлет пакеты размером 28байт в Proga1(СОМ1). Proga1 отвечает, но не на каждый пакет. Сначала все это работает нормально. Потом периодически(никакой закономерности нет: через 2,5,10,... минут) начинают проскакивать искажения на нулевом байте 2-й или 3-й датаграммы в 1-ом канале связи. Только 1 байт. Причем, если прервать 2 канал связи, все работает нормально. Спасибо. Link to comment
Guest Alekseev Posted November 30, 2010 Share Posted November 30, 2010 Добрый день! Попробуйте поэкспериментировать со значениями параметров Force Transmit ( в данном режиме пакет будет упаковываться после возникновения паузы между полученными данными) и Packet Length (пакеты фиксированной длины). Функции можно комбинировать и упаковка пакета будет наступать по тому что наступит раньше, пауза или пакеты фиксированной длины. Link to comment
Guest Анатолий Posted November 30, 2010 Share Posted November 30, 2010 Спасибо, Александр Алексеев! Извиняюсь за задержку с ответом - пробую варианты.Пока ничего не помогает. 1.Packet length = 211 - в этом случае, сначала все нормально(8мин),затем искажается последний байт пакета и все следующие пакеты так и идут с искаженным последним байтом. 2.Изменения Force Tx приводят к тому, что датаграмм становится 2 и рано или поздно появляются те же ошибки. Link to comment
Guest Alekseev Posted November 30, 2010 Share Posted November 30, 2010 Попробуйте переключить нагрузочные резисторы порта 485 при помощи DIP переключателей на нижней стороне Nport. Переключатели 1 и 2 в положение ON. Link to comment
Guest Анатолий Posted November 30, 2010 Share Posted November 30, 2010 (edited) В моем понимании, эти настройки и являются оптимальными. Можете даже попробовать Force Transmit уменьшить до 5 миллисекунд. Хотя, если и так всё работает, то может лучше не трогать? Если указываете 2 правила упаковки данных, то срабатывает та ситуация, которая возникнет первой. В Вашем случае дейтаграмма отправится в случае, если: придет 211 символов или наступит пауза во входящем потоке данных На скорости 9600 бит/сек время передачи 1 байта примерно равно 1 мсек. Т.е. паузы в 5 мсек вполне хватит, чтобы понять, что входной пакет закончен. Edited November 30, 2010 by Komantsev Упс.... Сорри, случайно затер сообщение автора и вместо него написал свой комментарий. Команцев. Link to comment
Guest Анатолий Posted December 1, 2010 Share Posted December 1, 2010 Добрый день! Прошу прощения за столь длительную паузу. Пробовал и, в конце концов, нашел, к своему стыду, ошибку в программе. Я дико извиняюсь, что отнял у вас время. Все стало работать несравнимо стабильней, хотя и проскочила 1 ошибка на 1.5 часа нормальной работы, при Force Tx=0 и Packet length=0. Но что-то мне не дает покоя. В Вашем случае дейтаграмма отправится в случае, если:•придет 211 символов •или наступит пауза во входящем потоке данных При Force Tx=10 и Packet length=211 я стал получать 2 датаграммы - 104+107 байт. Пакет отправляется целиком -211 байт. Значит он и должен целиком прийти, без пауз. Но где-то возникает пауза больше 10мс, если пакет разбивается на 2 датаграммы. Где и почему это может происходить? Link to comment
Komantsev Posted December 2, 2010 Share Posted December 2, 2010 Знаете, очень странно. А можете посмотреть, большая ли получается пауза между отправленными датаграммами? (просто хочу понять, действительно ли NPort получает сообщение 2 частями или же получает сообщение целиком, но отправляет 2-мя датаграммами)? "Большая" пауза - имеется ввиду порядка 100 мсек. Небольшая - в пределах 10 мсек. Кстати, попробуйте вообще Packet Length (и Delimiter) не ставить. Оставьте только Force TX. Что-то изменится? Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now