Забыл выложить
Забыл выложить
Про какие навороты вы говорите, там код меньше 100 строк. Первая лаб. работа в институте более объемная. Надо Просто не полениться и залить проекты в железо. Неужели у техподдержки Овен под рукой нет одного ПЛК100 и одного ПЛК63
рад бы, да не имею плк63
Нашел на складе MBA8... Пример PR1 прекрасно работает.
Внимание вопрос, считаете ли Вы замену корректной:
наКод:byte_read:=SysComRead(port_number, ADR(buf_otvet), 8, 0);
Код:byte_read:=SysComRead(port_number, ADR(buf_otvet[ 0 ]), 1, 0); byte_read:= byte_read + SysComRead(port_number, ADR( buf_otvet[ 1 ] ), 1, 0); byte_read:= byte_read + SysComRead(port_number, ADR( buf_otvet[ 2 ] ), 1, 0); byte_read:= byte_read + SysComRead(port_number, ADR( buf_otvet[ 3 ] ), 1, 0); byte_read:= byte_read + SysComRead(port_number, ADR( buf_otvet[ 4 ] ), 1, 0); byte_read:= byte_read + SysComRead(port_number, ADR( buf_otvet[ 5 ] ), 1, 0); byte_read:= byte_read + SysComRead(port_number, ADR( buf_otvet[ 6 ] ), 1, 0); byte_read:= byte_read + SysComRead(port_number, ADR( buf_otvet[ 7 ] ), 1, 0);
Кто-нибудь, положит этим мучениям конец. Скажет, что-нибудь дельное по теме...
а почему Вас такой то код не устраивает?WHILE SysComRead(ComHand, ADR(Buffer), SIZEOF(Buffer), 0) <> 0 DO ; END_WHILE
SysMemCpy(ADR(buf_otvet[0]),ADR(Buffer[0]),1);
SysMemCpy(ADR(buf_otvet[1]),ADR(Buffer[1]),1);
SysMemCpy(ADR(buf_otvet[2]),ADR(Buffer[2]),1);
SysMemCpy(ADR(buf_otvet[3]),ADR(Buffer[3]),1);
SysMemCpy(ADR(buf_otvet[4]),ADR(Buffer[4]),1);
SysMemCpy(ADR(buf_otvet[5]),ADR(Buffer[5]),1);
SysMemCpy(ADR(buf_otvet[6]),ADR(Buffer[6]),1);
SysMemCpy(ADR(buf_otvet[7]),ADR(Buffer[7]),1);
Передача данных осуществляется непрерывно, если больше определенного размера, то передача делится на кадры. Если приемный буфер переполняется, то начинают теряться данные, проверка четности и контрольная сумма не исправляют код а лишь информируют что данные некорректны. Поэтому всякая трата времени процессора на второстепенные задачи, вроде закрытия ПОУ, открытия ПОУ (причем с таким же функционалом) неизбежно приведет к потере данных, рано или поздно. То что один ПЛК справляется с двумя чтениями подряд, так может у него объем буферной памяти больше, другая микросхема и т.п. Поэтому заостряю еще раз внимание, на то что прочитать информацию надо за более короткий срок, а потом уже делайте с ней (информацией) что угодно
Лучше бы так разбирались как SysComWrite заставить соблюдать интервалы тишины между кадрами
ЗЫ посмотрел один из проектов, впечатление удручающее по поводу использования функций для таймера, полный атас
Последний раз редактировалось capzap; 21.03.2012 в 18:18.
Ответе, пожалуйста, вы сотрудник Овен?
Если да, то значит у Вас можно уточнить тех. нюансы, которые отсутствуют в документации. Например может ли переполниться буфер порта rs-485 от приема 13 байт... А если это предположения, то у меня от своих уже голова пухнет