Добрый день. Есть ПЛК154 и ПЧ Электротекс ТТПТ-28-380-50-04. Требуется обеспечить управление по RS-485 (включение, выключение, считывание параметров и т.д.). Можно ли это сделать и как?
Добрый день. Есть ПЛК154 и ПЧ Электротекс ТТПТ-28-380-50-04. Требуется обеспечить управление по RS-485 (включение, выключение, считывание параметров и т.д.). Можно ли это сделать и как?
Теоретически можно. ПЧ имеет RS485, ПЛК тоже. Подробная документация на ПЧ доступна на офсайте производителя, там расписаны все регистры.
Не вижу особой проблемы.
Да, но в конфигураторе ПЛК Codesys у модбас мастера нет модбас-функции №5 (0x05) для записи значения одного флага (Force Single Coil). Поэтому отправить команду "ПУСК" в COILS 00001 не представляется возможным. Значит включить нельзя или это можно сделать другим способом... Но каким?
В принципе только старт\стоп передаются битами, остальное в регистрах. Если использовать управление стар\стоп от DO контроллера, а остальное читать\писать по цифре, то может получиться. Либо внимательно ковырять тему с "Функциональный блок FD01".
Есть предположение, что данный ПЧ очень похож на Данфосс.
нее, включать и выключать надо именно по 485 порту
Приветствую всех гуру Кодесис!
В проекте надо считать время достаточно точно. Желательная погрешность счёта времени +/ - 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 сек.
Есть ли у кого какие то наработки или мысли по этому поводу?
Советую использовать системное время контроллера библиотекой 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
С уважением,
Лапшин Вячеслав