Страница 29 из 1044 ПерваяПервая ... 19272829303139791295291029 ... ПоследняяПоследняя
Показано с 281 по 290 из 10438

Тема: ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)

  1. #281
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Цитата Сообщение от drvlas Посмотреть сообщение
    Настолько все неочевидно, как с сетями работать...
    Э-хе-хе... Тайна осталась тайной.

    1) Увеличил таймауд с 2,2 до 5 с. Выключил (нечаяно) этот адаптерв компе.

    2) Перезапустил ПК (танцы). Нашел, как включить сетевуху. Проверил с таймаутом 5 с - нормально подключается и работает.

    3) Внимание! Вернул таймаут "обратно взад". Продолжает работать.

    Резюме: после некоторых действий в ПК КДС устыдился и начал работать с теми же установками и с тем же проектом, с которыми сутки назад пил кровушку.

  2. #282

    По умолчанию

    Подскажите пожалуйста, где взять библиотеку LibPLC160.lib? На диске с плк не нашел, или может название отличается?

  3. #283

    По умолчанию

    capzap, нужна функция DWORD GetStatus(void) для диагностики аналоговых входов (Status). На эту библиотеку ссылается руководство по программироваию ПЛК160 (стр. 80). Если есть более простое решение диагностики аналоговых входов/выходов в пользовательской программе, буду рад услышать. Я в этом деле новичок, раньше только сименсами занимался.

  4. #284

    По умолчанию

    такие вопросы рекомендую писать на plc@owen.ru

  5. #285

    По умолчанию

    Библиотеки я видимо не дождусь.
    capzap, помогите новичку, как считать байт из REAL переменой. Никак команду не найду, нашел только как считать бит.

  6. #286
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,246

    По умолчанию

    получить старший байт можно с помощью DWORD_TO_BYTE(SHR(REAL_TO_DWORD(value),24)), где value значение в формате REAL, это навскидку, надо проверять

  7. #287
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Цитата Сообщение от Павел В. Посмотреть сообщение
    Библиотеки я видимо не дождусь.
    capzap, помогите новичку, как считать байт из REAL переменой.
    Какой именно байт? Преобразовать РИАЛ в байт или конкретно 1-й, 2-й, ... байты?

    Если вытащить побайтно - то указатели рулят. Если преобразовать - то стандартная функция. Или нет?

  8. #288
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,246

    По умолчанию

    Наверное с указателями правильнее, потому что преобразования влекут за собой потерю информации и коды будут прочитаны не верно, только как, у меня получается запредельно громоздко
    pt: POINTER TO DWORD;
    value: BYTE;

    pt:= ADR(%IR3.0);
    value:=DWORD_TO_BYTE(SHR(pt^,24));

  9. #289
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    у меня получается запредельно громоздко
    Ну, я не понял, что ты хотел там получить.

    1) Просто уложить на место байта старший байт от DWORD?

    2) преобразовать КАК-ТО значение числа из DWORD в BYTE?

    3) Или в DWORD лежит уже какой-то REAL? И нужно из него что-то в байт?

  10. #290
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Код:
    ptr: POINTER TO BYTE;
    ptrby: POINTER TO BYTE;
    aby: ARRAY [0..3] OF BYTE;
    
    ptr:= ADR(%IR3.0);
    ptrby := ADR( aby[0]);
    
    FOR i := 1 TO 4 DO
    ptrby^ := ptr^;
    ptr := ptr + 1;
    ptrby := ptrby + 1;
    END_FOR
    Не проверял. Но как-то так. И потом рассматривай себе на здоровье, ХОШ - первый байт, ХОШ - второй, ХОШ КАКОЙ ХОШ
    Главное, что меня удивило, когда уважаемый Валенок учил меня здесь пойнтеры юзать, что при прямом наращивании указателя КоДеСис не обращает внимание на размер того, на что он указывает. Поэтому операция ptr := ptr + 1; установит пойнтер именно на следующий байт, а не на следующий РИАЛ (как можно ожидать из опыта Си).

Страница 29 из 1044 ПерваяПервая ... 19272829303139791295291029 ... ПоследняяПоследняя

Метки этой темы

Ваши права

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