Ставил, но не заходит в код :( Просто падает соединение при попытке запуска программы (спустя секунд 5).
Вид для печати
Запуске.
Отловил причину - при добавлении в настройках ПЛК Modbus (Master).
Т.е. При создании нового проекта (простого, с одним условием и булевым флагом) и добавлении Modbus(Master) - контроллер сбрасывает соединение при запуске (загружает проект и виснет).
При добавлении Slave такого не наблюдается (проект загружается, отлаживается).
Подскажите, пожалуйста, почему отказывается работать ПЛК под Modbus (Master)? Может у кого было подобное.
здравствуйте
в программе (на СFC) использую блок "real to dword" чтобы преобразовать показания датчиков давления (real) в тип данных, пригодный для передачи на СП270 (dword). после преобразования значения округляются до целых. как на выходе получить все-таки неокругленные значения?
А как в целом м.б. не округленные значения?
Максимум - умножить на 100 и преобразовать. На выходе будет в сотых. Как пример.
Подскажите как сделать чтоб счётчик CTU мог просчитывать не до 32000 а намного больше 500,000?
или в овени не получится?
вроде как-то так. Если не так, подправите. Написал в Notepad.exe, не проверял.Код:FUNCTION_BLOCK SUPER_CTUD
VAR_INPUT
iCntUp : BOOL; (*Считать вверх*)
iCntDn : BOOL; (*Считать вниз*)
iCntRes : BOOL; (*Сброс на 0*)
iCntSP : DWORD; (*Максимальное значение*)
END_VAR
VAR_OUTPUT
OutCnt : DWORD; (*Выходное значение счетчика*)
OutAlm : BOOL; (*Сигнализация достижения максимального значения*)
END_VAR
VAR
Init: BOOL;
CntUpOld :BOOL;
CntDnOld : BOOL;
END_VAR
IF iCntRes THEN Init := FALSE; END_IF
(*INIT*)
IF NOT Init THEN
Init := TRUE;
iCntUp := iCntDn := CntUpOld := CntDnOld := OutAlm := FALSE;
OutCnt := 0;
END_IF
(*COUNT_UP*)
IF (iCntUp > CntUpOld) AND (iCntSP > OutCnt) THEN OutCnt := OutCnt + 1; END_IF
(*COUNT_DOWN*)
IF (iCntDn > CntDnOld) AND (OutCnt > 0) THEN OutCnt := OutCnt - 1; END_IF
OutAlm := iCntSP > 0 AND OutCnt = iCntSP;
CntUpOld := iCntUp;
CntDnOld := iCntDn;