Показано с 1 по 10 из 16

Тема: Упаковка переменных BOOL, INT, REAL в Modbus String

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #2
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Это происходит когда не соблюдается выравнивание (доступ к REAL по некратному 4 адресу или к WORD по некратному 2 адресу, например), либо от неудачного вылета за границы массива. Скорее всего, первое, потому что строки попадают на «кривые» адреса, которые вы потом разыменовываете. Можете попробовать SysLibMem — там есть SysMemCpy.

    Код:
    SysMemSet(ADR(modbus_group1), PACK(parameter11, parameter12...), 1);
    SysMemCpy(ADR(modbus_group2) + 0, ADR(parameter21), SIZEOF(parameter21));
    SysMemCpy(ADR(modbus_group2) + 2, ADR(parameter22), SIZEOF(parameter22));
    tmp := REAL_TO_INT(parameter31 * 100);
    SysMemCpy(ADR(modbus_group3) + 0, ADR(tmp), SIZEOF(tmp));
    tmp := REAL_TO_INT(parameter32 * 100);
    SysMemCpy(ADR(modbus_group3) + 2, ADR(tmp), SIZEOF(tmp));
    Последний раз редактировалось Yegor; 16.04.2015 в 11:08.

Похожие темы

  1. Ответов: 20
    Последнее сообщение: 03.05.2015, 16:01
  2. Упаковка переменных ПЛК
    от ramilgim в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 28.04.2013, 21:06
  3. Переменная REAL ведет себя как Int при вычислениях
    от lomtik в разделе Сетевые технологии
    Ответов: 9
    Последнее сообщение: 16.01.2013, 11:50
  4. преобразование Real>string кракозябры
    от K580BB55A в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 09.11.2010, 17:07

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •