Страница 754 из 1041 ПерваяПервая ... 254654704744752753754755756764804854 ... ПоследняяПоследняя
Показано с 7,531 по 7,540 из 10404

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

  1. #7531

    По умолчанию

    Добрый день. Есть ПЛК154 и ПЧ Электротекс ТТПТ-28-380-50-04. Требуется обеспечить управление по RS-485 (включение, выключение, считывание параметров и т.д.). Можно ли это сделать и как?

  2. #7532
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    1,033

    По умолчанию

    Теоретически можно. ПЧ имеет RS485, ПЛК тоже. Подробная документация на ПЧ доступна на офсайте производителя, там расписаны все регистры.
    Не вижу особой проблемы.

  3. #7533

    По умолчанию

    Да, но в конфигураторе ПЛК Codesys у модбас мастера нет модбас-функции №5 (0x05) для записи значения одного флага (Force Single Coil). Поэтому отправить команду "ПУСК" в COILS 00001 не представляется возможным. Значит включить нельзя или это можно сделать другим способом... Но каким?

  4. #7534
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    1,033

    По умолчанию

    В принципе только старт\стоп передаются битами, остальное в регистрах. Если использовать управление стар\стоп от DO контроллера, а остальное читать\писать по цифре, то может получиться. Либо внимательно ковырять тему с "Функциональный блок FD01".
    Есть предположение, что данный ПЧ очень похож на Данфосс.

  5. #7535

    По умолчанию

    нее, включать и выключать надо именно по 485 порту

  6. #7536

    По умолчанию

    Приветствую всех гуру Кодесис!
    В проекте надо считать время достаточно точно. Желательная погрешность счёта времени +/ - 1 секунда за 10 часов. Изначально в проекте использовал задатчик секунд на R-триггере и разных таймерах , пробовал на блинке ( там погрешность достигает 15-20 сек. за 10 мин.) Потом перешёл по советам с сайта к счёту по функции T(), например
    https://owen.ru/forum/showthread.php?t=10555&page=294
    тут на странице 2 примера. Даже в эмуляторе, разница между двумя ФБ, за 30 мин работы, составляет 11 секунд. 11 секунд за 30 мин!!! В реальном железе (СП310 и ПЛК 154) за 1 час погрешность доходит от 10-12 сек. . Это просто жесть!!!
    На данный момент нашёл выход в коррекции времени каждую 59 секунду. На обычном R-триггере и таймере TON. Добился точности хода 2 сек за 3 часа. Но это всё равно плохо. За 10 час набежит до 7 сек.
    Есть ли у кого какие то наработки или мысли по этому поводу?

  7. #7537

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    мысль простая - какое отношение время в эмуляции к времени в плк ?

    Точнее time() в плк ничего нет. Что есть, то есть. Нужно отбивать точно - "говорит Москва, передаем сигналы точного времени"


    Блинк - для этого смешно. Ton - специфично, в большинстве случаев - специфично. Как Вы там сделали - видимо на другой стороне листа. А все таймеры построены на time(). Т. е. к неточности тайма иногда и + кривые руки.
    Первую функцию сегодня проверял в железе, перед этим проверяю программу в эмуляторе, что непонятно? По результатам проверки 1 функции написал выше, сейчас готовлю 2, завтра проверю в железе.
    Сравнил точность хода в эмуляторе, даже тут дикая погрешноть, что ещё надо выложить?

  8. #7538

    По умолчанию

    Советую использовать системное время контроллера библиотекой CurTimeEx
    GetTime: CurTimeEx;
    TimeAndDate: SystemTimeDate;
    Sys_Time: SysTime64;
    Millisecond:UDINT;
    Second,Second_old: UINT;(**)

    TimeAndDate.Day :=0;
    TimeAndDate.DayOfWeek :=0;
    TimeAndDate.dwHighMsec :=0;
    Millisecond:=TimeAndDate.dwLowMSecs;
    TimeAndDate.dwLowMSecs :=0;
    TimeAndDate.Milliseconds :=0;
    TimeAndDate.Minute :=0;
    Second:=TimeAndDate.Second;
    TimeAndDate.Second :=0;
    TimeAndDate.Hour :=0;
    TimeAndDate.Year :=0;
    TimeAndDate.Month :=0;
    Sys_time.ulHigh :=0;
    Sys_time.ulLow :=0;
    GetTime (SystemTime:=Sys_Time , TimeDate:= TimeAndDate);

    YEAR_S:=UINT_TO_STRING(TimeAndDate.Year);
    MONTH_S:=UINT_TO_STRING(TimeAndDate.Month);
    DAY_S:=UINT_TO_STRING(TimeAndDate.Day);
    HOUR_S:=UINT_TO_STRING(TimeAndDate.Hour);
    MIN_S:=UINT_TO_STRING(TimeAndDate.Minute);
    SEC_S:=UINT_TO_STRING(TimeAndDate.Second);

    cur_datetime_str:=concat(':',sec_s);
    cur_datetime_str:=concat(MIN_S,cur_datetime_str);
    cur_datetime_str:=concat(':',cur_datetime_str);
    cur_datetime_str:=concat(hour_s,cur_datetime_str);
    cur_datetime_str:=concat('-',cur_datetime_str);
    cur_datetime_str:=concat(day_s,cur_datetime_str);
    cur_datetime_str:=concat('-',cur_datetime_str);
    cur_datetime_str:=concat(month_s,cur_datetime_str) ;
    cur_datetime_str:=concat('-',cur_datetime_str);
    cur_datetime_str:=concat(year_s,cur_datetime_str);
    cur_datetime_str:=concat('dt#',cur_datetime_str);
    +79104444236
    С уважением,
    Лапшин Вячеслав

  9. #7539

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Время для эмулятора берется из вашего ноута. Что с ноутом-то ?

    Код. Что толку с картинок ?
    У меня стационарный комп, с ним всё в порядке. Файл проверки в эмуляции выложил в первом посте вместе с картинкой.

  10. #7540

    По умолчанию

    Цитата Сообщение от krollcbas Посмотреть сообщение
    Советую использовать системное время контроллера библиотекой CurTimeEx
    Спасибо, к этому уже готовлюсь, есть наработки, как добью проверку с функцией Т(), займусь. Просто хотелось сделать попроще, но пока не выходит.

Страница 754 из 1041 ПерваяПервая ... 254654704744752753754755756764804854 ... ПоследняяПоследняя

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

Ваши права

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