Убрал вообще state 1 - ничего не поменялось.
Я не понимаю эту штуковину..
Убрал вообще state 1 - ничего не поменялось.
Я не понимаю эту штуковину..
по документации рекомендуемое время таймаута 10мс, почему у Вас 3мс? В таком коде как у Вас почему он должен переходить в следующий кейс, если функция записи постоянно висит во включенном состоянии, где пересброс? Хотя бы в условии проверки комплита, сделайте WR_M_REG.enable:=FALSE;
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Тайм-ауты делал самые разные, в т.ч. и 10 мс. Сейчас поставил 10 мс - без изменений.
В следующий кейс он переходит по комплиту, WR_M_REG.Enable никак не мешает это делать. В следующем кейсе я как раз и делаю WR_M_REG.enable:=FALSE;
Сделал, как Вы предложили - без изменений.
Попробовал вместо пилы подать всегда константу - выбросов-ступенек нет.
Т.е. только когда значение меняется, что-то происходит..
Последний раз редактировалось Daedal; 18.06.2017 в 12:27.
я это исправил - без изменений.
тем более, что переход я делаю по комплиту, т.е. когда текущая посылка завершена. О чём Вы говорите?
В первом посте есть архив проекта, попробуйте, пожалуйста.
Попутно ещё вопрос, может имеет отношение к проблеме:
Почему WR_M_REG.RegCnt = 0 всегда? Я ведь записываю 1 регистр и вижу на выходе МУ110-6У результат, пусть и с багом.
Последний раз редактировалось Daedal; 18.06.2017 в 12:51.
но у Вас то возник вопрос, почему не переходит в следующий кейс, это может быть только по тому что enable не передернут, даже если блок не выполнил свою функцию, комплит наступит когда пройдет время таймаута.
ЗЫ Проект не открывал в КДС, но при просмотре в архиве, видел что конфигурация заполнена какими то модулями по модбас и овен, а тут еще и библиотека что то пытается писать, Вам это точно всё нужно?
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
не переходит из state 1(отключаю порт после отправки данных) в state 0(передаю данные) т.к. условие:
IF WR_M_REG.Complete = TRUE THEN
state:= 0;
END_IF
всегда ложное. Т.е. комплит на стадии ОТКЛЮЧЕНИЯ порта не приходит никогда, получается даже по тайм-ауту..
Следовательно я на СЛЕДУЮЩЕМ цикле ПЛК не могу ничего передать.
Т.к. я один раз передаю, потому жду комплита на стадии отключения и не дожидаюсь его никогда.
Я этот комплит поставил по совету Aso, у меня его не было. Сейчас я его убрал.
В проекте есть Modbus TCP, Овенов никаких нет. Но в примере, который я выслал сюда Modbus TCP не активен, а в реалии он нужен, я его просто не подчистил в конфигурации ПЛК.
уж не знаю что Вы там называете закрытием порта, комплит естественно не наступит если энабле будет фальш, сомневаюсь что Вам именно это советовали. Чтоб перейти в нулевой кейс, в первом кейсе нужно реализовать таймер, по истечении которого переходить к очередной записи
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Счётчик не помогает. Картина просто растягивается по времени.
Есть ли разница в работе, если настраивать работу Modbus RTU в конфигурации задач ПЛК?
Спецы, как вы настраиваете работу ПЛК110 + МУ110-6У ?
Последний раз редактировалось Daedal; 18.06.2017 в 15:23.