PDA

Просмотр полной версии : Снова о сокетах!



Леонид
23.02.2011, 00:30
Продолжаю разбираться с сокетами в ПЛК Овен !
В следствии чего появились вопросы:
1. Сколько байт можно передать в одной посыле при помощи протокола TCP, у меня получается только 492, если отправлять 493 и более то приходят сначала 492, а затем 1 или более, хотя в какомто примере писали что 1536. А еще если передавать более 492 байт, отключить принимающий ПЛК, предающий ПЛК перезагружается.
2. Насколько сильно предача данных по TCP или UDP нагружает ПЛК. В качестве эксперемента передавал по 15 TCP сокетам, одновременно, по 492 байта! Так вот к принимаюему ПЛК особых замечаний нет, а вот время скана передающего переодически "подпрыгивало" до 600мс, а моментами и более.

Дмитрий Артюховский
24.02.2011, 10:52
RCV_BYTES_CNT := SysSockRecv( SOCK_ACC, ADR( RCV_SND_BUF[ 0 ] ) , 1536, SOCKET_MSG_OOB );

1536 - параметр MRU, нужно указывать при чтении....

Леонид
02.03.2011, 18:24
RCV_BYTES_CNT := SysSockRecv( SOCK_ACC, ADR( RCV_SND_BUF[ 0 ] ) , 1536, SOCKET_MSG_OOB );

1536 - параметр MRU, нужно указывать при чтении....

Здравствуте!
Спасибо за ответ!
А можно подробнее, что за параметр MRU?
Если речь идет о количестве передавемых и принимаемых байт, то я там прописываю по 493 и более, а эффект такой как описано выше.

Филоненко Владислав
03.03.2011, 09:42
Очень странно. размер посылки 1536 байт. 492 нигде нет.

Александр Приходько
03.03.2011, 09:49
А если попробовать увеличить минимальную длительность цикла?

Дмитрий Артюховский
03.03.2011, 09:52
дело не в циклах, нужно ставить стандартизованное значение парамтера MRU

Леонид
05.03.2011, 10:17
дело не в циклах, нужно ставить стандартизованное значение парамтера MRU

А где можно взять эти стандартизированые значения MRU.

Дмитрий Артюховский
05.03.2011, 13:08
в описании протокола TCP... а чем вас 1536 не устраивает??? ваша посылка укладывается без вопросов )))

Леонид
06.03.2011, 16:06
1536 нужно прописывать только в функции чтения буфера принятых данных, или и в функции отправки, если и в функции отправки, то объявленый массив данных может быть меньшего размера чем 1536 байт!
А если только в функции чтения, то можно ли во всех случаях прописывать 1536, как это може повлиять на работу обмена, на время передачи/приема, на скан плк?
Спасибо.