Страница 148 из 1044 ПерваяПервая ... 4898138146147148149150158198248648 ... ПоследняяПоследняя
Показано с 1,471 по 1,480 из 10436

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

  1. #1471

    По умолчанию

    Можно ли как-то с контроллера (ПЛК63) отслеживать, влючен ли соединенный с ним ПК? Именно в автоматическом режиме, без необходимости регулярно что-то нажимать.

    На ПК крутится CoDeSys HMI, других средств не предвидится.

  2. #1472

    По умолчанию

    ПЛК63 не сможет Вам дать CoDeSys HMI. Он в нем не заработает.

  3. #1473

    По умолчанию

    Цитата Сообщение от drvlas Посмотреть сообщение
    Краткое резюме. Достаточно заменить абсолютный адрес на имя - и исходный проект работает. Почему для этого нужно, чтобы были имя - хз. Пусть на это ответят знатоки теории.

    Итак, вот минимальная правка к проекту автора вопроса, что б ему сладко спалось сегодня:
    Вложение 8185

    Вот результа работы в симуляторе:
    Вложение 8186

    Как видим, ничего с пойнтерами и не нужно делать. Хотя все равно пойнтеры - сила

    Прошу прощения у модераторов за разведенный здесь долгий и малополезный с... э... спор.
    Коллеги большое спасибо за помощь !

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

    По умолчанию

    "Спасибо" в стакан не нальешь Ты бы хоть сказал, получилось ли? Ведь был постинг с утерждением. что использование имени "не помогло". Вот это меня и беспокоит. Хотя не очень

  5. #1475
    Пользователь
    Регистрация
    13.08.2012
    Адрес
    Питер
    Сообщений
    127

    По умолчанию

    Цитата Сообщение от жекон Посмотреть сообщение
    У Вас скорость обмена выставлена 115200 ,а там максимум 38400 и тип данных не много не соответствует Вложение 8148
    Приехали... Если мерить положительную температуру - все просто. А вот отрицательную - то получается 632.45 - классический "переход через ноль"... Пока решил
    IF TEMP > 32300 THEN
    Temperature := (655.35-(REAL_TO_WORD(TEMP))*-1;
    END_IF
    Может, есть какой более простой способ?

  6. #1476

    По умолчанию

    Здравствуйте, kosmas.
    Цитата Сообщение от kosmas Посмотреть сообщение
    Приехали... Если мерить положительную температуру - все просто. А вот отрицательную - то получается 632.45 - классический "переход через ноль"... Пока решил

    Может, есть какой более простой способ?
    Попробуйте функцию - real_to_int и если не лень то предварительно температуру ограничьте до +-32 тысячи :-)
    Автоматизация Диспетчеризация Сервис
    e-mail: ads-kaluga@mail.ru

  7. #1477
    Пользователь
    Регистрация
    13.08.2012
    Адрес
    Питер
    Сообщений
    127

    По умолчанию

    Цитата Сообщение от Gans Посмотреть сообщение
    Здравствуйте, kosmas.
    Попробуйте функцию - real_to_int и если не лень то предварительно температуру ограничьте до +-32 тысячи :-)
    Прошу прощения, обманул... Плохо спрашивать вдали от текста..
    На самом деле я написал такое:

    Код:
    FUNCTION Temperatur : REAL
    VAR_INPUT
    	Temper_W: WORD;
    END_VAR
    ====================================
    IF Temper_W > 32767 THEN
    	Temperatur := -1*(655.35 - WORD_TO_REAL(Temper_W)/100);
    ELSIF Temper_W < 32767 THEN
    	Temperatur := WORD_TO_REAL(Temper_W)/100;
    ELSE
    	Temperatur := 327.67;
    END_IF
    Волшебная цифра 327.67 - это значит, что датчик отвалился...

    Оно работает, но что-то мне это не очень нравится...

    Да, и как REAL округлить до двух знаков после запятой?

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

    По умолчанию

    Приехали... Если мерить положительную температуру - все просто. А вот отрицательную - то получается 632.45 - классический "переход через ноль"
    Нету никакого перехода. Он вам приснился. Пробуйте так:
    Код:
    PROGRAM PLC_PRG
    VAR
    	TMP: REAL;
    END_VAR
    
    TMP := INT_TO_REAL(WORD_TO_INT(TEMP01)) / 100.0;

  9. #1479
    Пользователь
    Регистрация
    13.08.2012
    Адрес
    Питер
    Сообщений
    127

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    Нету никакого перехода. Он вам приснился. Пробуйте так:
    Код:
    PROGRAM PLC_PRG
    VAR
    	TMP: REAL;
    END_VAR
    
    TMP := INT_TO_REAL(WORD_TO_INT(TEMP01)) / 100.0;
    Это великое колдунство... Прилетает 64624, в итоге получается -9.12 .

    Однако 65535 - 64624 = 911/100 = 9.11.

    В общем, ответа сходу в хелпе не нашел. Требую объяснений про WORD_TO_INT... Или ссылки...

  10. #1480
    Пользователь
    Регистрация
    13.08.2012
    Адрес
    Питер
    Сообщений
    127

    По умолчанию

    Код:
    Тип   Нижний предел   Верхний предел   Размер памяти
    WORD      0                      65535                   16 Бит
    INT       -32768                32767                    16 Бит
    Т.е. я догадываюсь, что рамерность у WORD и INT одинаковая. То, что 0 в WORD это 0 в INT - тоже.
    Но то, что 32768 в WORD это -32768 в INT я и представить не мог...

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

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

Ваши права

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