Codesys |
Ответить | Страница <12 |
Автор | |
Действительный член Присоединился: 08 Март 2006 Категория: Russian Federation Online Status: Offline Публикации: 440 |
Опубликовано: 11 Декабрь 2012 22:40 |
Если идет обмен данными по линии то принятые байты сразу переносят в переменную нужного типа, т-е если внутреннее число типа Real то создется переменная типа Real в неё помещается четыре принятых байта и вся внутренняя работа программы идет уже только с этой переменной - с буфером приема-передачи прямо никогда не работают С уважением, SAN |
|
Новичок Присоединился: 14 Март 2012 Online Status: Offline Публикации: 16 |
|
Собственно в этом и вопрос. В ваговской библиотеке обмен по модбасу с помощью буфера
rBuf : ARRAY [0..99] OF WORD; (* Readed data from remote modbus slave *) в нем могут содержаться значения как целые так и вещественные например в rBuf[0]-rBuf[1] вещественное число как корректно его поместить в переменную Real? Например без использования указателей? |
|
Действительный член Присоединился: 08 Март 2006 Категория: Russian Federation Online Status: Offline Публикации: 440 |
|
В проекте CoDeSys надо подключить библиотеку SysLibMem.lib в ней есть функции работы с памятью:
SysMemCpy() - копирование из одной области памяти в другую SysMemMove() - тоже, но позволяет копировать с перекрытием SysMemSet() - заполняет область памяти заданным значением SysMemSwap() - переставляет байты местами SysMemCmp() - сравнивает блоки памяти SysMemFree() - освобождение занятой области Обычно нужна SysMemCpy, иногда SysMemSet чтобы сразу очистить блок памяти Во первых приемный буфер надо сделать байтовым чтобы легко работать с любыми данными: rBuf: ARRAY[0..199]OF BYTE, и пусть будет переменная rVar: REAL Чтобы скопировать из буфера в переменную 4 байта начиная например с 5-го (считая с 0) элемента массива: SysMemCpy(ADR(rVar), ADR(rBuf[5]), 4); Обычно функции работы с памятью есть для всех целевых платформ, для всех типпов процессоров С уважением, SAN |
|
Ответить | Страница <12 |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |