на вскидку попробуйте поставить вместо
SysComRead( port, ADR( part1[ counter ] ), firstPartSize - counter + 1, 0 );
код
SysComRead( port, ADR( part1[ counter ] ), (firstPartSize - counter) + 1, 0 );
это все таки Паскаль на не C
может я и ошибаюсь
на вскидку попробуйте поставить вместо
SysComRead( port, ADR( part1[ counter ] ), firstPartSize - counter + 1, 0 );
код
SysComRead( port, ADR( part1[ counter ] ), (firstPartSize - counter) + 1, 0 );
это все таки Паскаль на не C
может я и ошибаюсь
Часто задаваемые вопросы по кодесис
1) Почему программа не работает - Следует выполнить "Онлайн ->Старт"
2) Где скачать CoDeSys, таргеты, прошивки, библиотеки - http://www.owen.ru/catalog/codesys_v3/opisanie
Я извиняюсь, если некорректно выразился. Под "больными людьми" я имел ввиду СЕБЯ и своих коллег. Просто данный совет мне показался несколько неконструктивным.
a - b + 1 -> ( a - b ) + 1 ...
Следующий совет : a - b + 1 -> 1 + ( a - b )... и тд. по всему коду. Так можно и 2 года " экспериментировать ".
Данная тема была создана в расчете на техподдержку "Овен". У них наверняка под рукой есть два контроллера. Поэтому и использовались 2 "овеновских" плк. И писал две группы примеров, когда ПЛК63 мастер, и ПЛК100 мастер, для сравнения.
63 регулярно делаю мастером. Проблем не имею.
Есть биб-ка modbus.lib. Она рабочая. Исходник открыт. Изучайте.
А где можно найти исходник?
Извиняюсь за свой предыдущий глупый вопрос.
В Modbus.lib читают одним блоком в
rBuf: ARRAY[0..511] OF BYTE;
....
Size := DWORD_TO_WORD(SysComRead(ComHandle, ADR(rBuf), SIZEOF(rBuf), 0));
а меня интересует извлечение и буфера по частям
С Modbus.lib у меня тоже вроде никогда проблем не было