PDA

Просмотр полной версии : Контроль движения поезда и светофора на LD в Unity Pro



axeluk
03.04.2015, 20:22
Добрый вечер!
На этом форуме 1-й раз, поэтому заранее извиняюсь за свою узкую терминологию в АСУТП.
Задание состоит в том, что бы создать в Unity Pro блок-участок железной дороги по которому движется поезд(нарисовав в конструкторе: путь показанный на картинке 1.) По параллельным линиям блок-участка, должны передаваться импульсы , а по вертикальным будет подаваться поезд(справа налево).
Когда на П1 подается 3 импульса (зеленый сигнал светофора) то поезд начинает двигаться занимая (активируя) П1 , при этом Р1 и Р2 должны мигать голубым цветом. Продолжая двигаться справа налево и достигнув П2 , блок П1 должен отключится, а Р1 и Р2, загореться красным цветом , имитируя занятость пути. И т.д.
Если же на блок П1 подается 2 импульса (желтый сигнал светофора), то поезд подается с большим замедлением (с меньшей скоростью).
Если 1 импульс (красный сигнал светофора) , то поезд не должен подаваться.
Соответственно далее он должен пройти весь участок по всем блокам и в конце: П5,Р7,Р8 - горят , например, красным цветом как "занятые"., а Р9 и Р10 мигают голубым предвещая остановку/замедление/подачу поезда.


Если вопрос не понятен, прочитайте 2-й вариант формулировки:
Блок участок железной дороги отделяется двумя светофорами С1 и С2. Когда на 2-м светофоре горит зеленый сигнал, то по горизонтальным блокам(которые имитируют рельсы): Р9 Р7 Р5 Р3 Р1 и Р10 Р8 Р6 Р4 Р2, передается 3 импульса (символизирующие: свободный участок и разрешение движения поезда) на 1-й светофор, после чего с помощью Бегущих огней , по блокам П1 П2 П3 П4 П5 должен проследовать поезд.
Если со 2го светофора подать 2 импульса(символизирующие желтый цвет ) , то поезд должен проследовать с меньшей скоростью (в Unity Pro я так понимаю это означает большее замедление в блоке TOF)
Если со 2-го светофора подается 1 импульс(символизирующий красный цвет) , то поезд не подается.

Я знаю как создать бегущие огни, что для генерирования импульсов необходим блок TP , как я понял импульсы должны приходить в блок CTU и сравниваться со значением PV. Но у меня не получается собрать полноценную схему, если сможете, буду очень благодарен за любую помощь!

17504

zendo057
03.04.2015, 20:29
И что вы хотите? Предоставте свою версию и тогда вам подскажут ответ на конкретный вопрос.

жекон
04.04.2015, 05:59
Честно сказать я не сильно въехал что надо сделать написать в Codesys или нарисовать в Unity Pro, судя по названиям ФБ какую-то программу Вы написали вот и выложите её

alexxx
27.06.2015, 22:53
Объявление переменных:


PROGRAM PLC_PRG
VAR
on: BOOL; *светофор вкючен/отключен
TON_timer: TON;
byt: BOOL;
prbyt: BOOL;
green: BOOL; *зеленая лампа (выход)
red: BOOL; *красная лампа (выход)
yellow: BOOL; *желтая лампа (выход)
timer: BYTE;
go: BOOL;
tgreen: BYTE; *время горения зеленого сигнала в секундах (уставка)
tred: BYTE; *время горения красного сигнала в секундах (уставка)
sec: BYTE; *цифровое табло, сколько в секундах осталось до переключения светофора.
END_VAR

Сама программа:


IF tred=0 THEN tred:=15; tgreen:=10;END_IF; *это на случай если настройки светофора не заданы
TON_timer (IN:=TRUE ,PT:=t#0.5s);
IF TON_timer.q=TRUE THEN TON_timer (IN:= FALSE ); byt:=NOT byt;END_IF;
IF on=0 THEN green:=0;red:=0;
IF byt<>prbyt THEN yellow:=NOT yellow;END_IF;
ELSIF byt<>prbyt THEN
IF timer=0 THEN
IF go=0 THEN go:=1; green:=1; red:=0;yellow:=0; timer:=tgreen*2;
ELSE go:=0; green:=0; yellow:=0; red:=1; timer:=tred*2; END_IF;
ELSIF timer>0 THEN timer:=timer-1;IF timer<7 THEN
IF go=1 THEN green:= NOT green; ELSE yellow:=1;END_IF;
END_IF;
END_IF;
END_IF;
sec:=timer/2;
prbyt:=byt;

Полноценный светофор на ST, полностью повторяет все фазы уличного светофора. Проект для плк150. При желании легко добавляется второй светофор для организации реверсивного движения.