PDA

Просмотр полной версии : Помогите ПЛК110-30 Р.М+МВ224.2А+ ДТС125Л-50М



Прогрессор
18.07.2018, 08:43
В щите электрообогрева устанавливаю следующее оборудование:
1. ПЛК для контроля состояния защитных аппаратов, сигнализации и управления контактором
2. МВ224.2А для обработки и передачи сигнала от датчика до ПЛК по RS-485
3. ДТС125Л-50М для измерения температуры на улице
Программирую первый раз в codesys.
Пока придумал только как включать контактор и собирать сигналы состояния защитных аппаратов.
Будьте добры подскажите:
1. как вывести на выход ПЛК сигнал об обрыве датчика
2. как вывести на выход ПЛК сигнал об коротком замыкании кабеля идущего до датчика
3. как сделать задержку времени замыкания выходного реле ПЛК при достижении необходимой температуры (+5 градусов)

Трофимов Артем
18.07.2018, 13:20
1,2 - при нештатной ситуации вместо данных в float регистре передаётся код ошибки. Вам необходимо скопировать через указатель старший байт в дополнительную байтовую переменную и в соответствии с РЭ на модуль смотреть код ошибки.
3. именно по времени задержку надо сделать или по температуре в +5 градусов, несовсем понятно. если по времени , то используйте тампер TON (задержка включения) и по его срабатыванию выключайте механизм. либо с помощью TOF ( задержка выключения) напрямую на сигнал управления

Прогрессор
18.07.2018, 17:03
Спасибо за ответ. По 1, 2 ни чего не понял. Как я понимаю модуль ввода при обрыве или к.з передаёт код ошибки и этот код может быть считан каким то функциональным блоком, но каким не знаю и найти не могу.
По 3 задержка нужна при +5 что бы не было нескольких включений-выключений при изменении температуры в районе заданных +5, ведь МВ может показать то ниже то выше, то ниже то выше и так несколько раз (может быть зи-за погрешности при вычислении или ещё чего) или этого не происходит?

Трофимов Артем
20.07.2018, 12:07
1.2. читаете Real значение из модуля при помощи Real_input_module
пускай переменная, привязанная к этому модулю зовётся fSensor_Value
тогда обработчик может быть таким

ptr : pointer to byte;
bSensor_Error : byte;
xIllegal_Value : bool;

ptr := ADR(fSensor_Value);
ptr := ptr + 3;
bSensor_Error := ptr^;

if bSensor_Error = 16#FE OR bSensor_Error = 16#FD OR bSensor_Error = 16#FC .... THEN
xIllegal_Value := true:
else
xIllegal_Value := false;
end_if

3. просто гистрезис нужен?
if fSensor_Value < fNeed_Temp then
xOven := true;
elseif fSensor_Value > fNeed_Temp + 5 then
xOven := false;
end_if