Запуске.
Отловил причину - при добавлении в настройках ПЛК 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;