Deutsch

Вопросы по ПЛК

547  
uscheswoi_82 коренной житель30.01.24 04:05
uscheswoi_82
30.01.24 04:05 

Всем привет, очень скучно и решил поиграться в ПЛК, часа 4 потратил на разработку алгоритма лифта. В Германии очень распространено ПЛК. Вот сами вопросы:

1. Итак есть допустим 2 входа (I1 и I2), и 2 выхода (Q1 и Q2) можно ли так делать т.е. соеденить Q1 с B001 см. https://i.ibb.co/pX8Kx5b/siemens-comfort-V8-01-22-42-29-01..., я ни у кого не видел в примерах чтобы кто-то так делал, обычно я делаю так соединяю B001 с Q1 см. https://i.ibb.co/h2M5YH9/siemens-comfort-V8-02-22-43-29-01...

2. Есть допустим 4-х этажный дом, в нём лифт, как думаете это правильный алгоритм работы лифта или нет см. https://i.ibb.co/6B012sx/etage-03-13-30-01-2024-min.jpg ? Как разработать алгоритм чтобы дверь лифта открывалась и закрывалась?

Вот симуляция работы лифта https://i.ibb.co/GHk7Wgs/bandicam-2024-01-30-03-12-21-908....

Поясняю:I1 по I4 это кнопки, которые расположены в подъезде на каждом этаже, I1 - 1 этаж, I2 - 2 этаж, ... . I5 срабатывает когда дверь лифта закрыта, I6 по I9 срабатывают когда кабинка лифта подъежзает к определённому этажу. Допустим I6 - 1 этаж, I7 - 2 этаж, ...

Если не понимаете что такое ПЛК, тут рассказывается подробно: https://www.youtube.com/watch?v=q_Y9arhYLgA

Вот так работает лифт - https://www.youtube.com/watch?v=aKbKQu1wR3I

3. Как думаете можно это как-то управлять на C#? См. https://snap7.sourceforge.net/sharp7.html


Всем заранее спасибо!

кто как обзывается, тот так сам называется... маску ношу чтобы не заразить антиваксеров... Дневник тяжелобольного инвалида
#1 
uscheswoi_82 коренной житель30.01.24 04:15
uscheswoi_82
NEW 30.01.24 04:15 
в ответ uscheswoi_82 30.01.24 04:05

А как бы это выглядело на C#? Вот простой пример:

Код Program.cs:

using System;
namespace Aufzug2 {
   class Program {
        // Метод срабатывает, когда происходит срабатывание события
        public static void MyAufzugEvent(object sender, AufzugMove e) {
            Console.WriteLine("Der Aufzug befindet sich auf " + e.etage + " Etage."); // Отображаем Der Aufzug befindet sich auf ..- Etage.
        }
        public static void Main(string[] args) {
            var aufzug = new Aufzug(); // Наш лифт
            aufzug.AufzugMoveEvent += MyAufzugEvent; // Обработчик событий
            aufzug.Move(1); // Посылаем лифт на 1-й этаж
            Console.ReadLine(); // Ожидаем назжатия клавиши Enter/Return
        }
   }
}


Код AufzugGeraet.cs:

using System;

public class AufzugMove : EventArgs {
 public int etage { get; set; }
}

public interface IMyInterface {
    event EventHandler<AufzugMove> AufzugMoveEvent;
}

public class Aufzug : IMyInterface {
    public event EventHandler<AufzugMove> AufzugMoveEvent;

    public void Move(int etage) {
       AufzugMoveEvent.Invoke(this, new AufzugMove { etage = etage });
    }
}

Для задержки лифта, имхо можно было бы в принципе использовать Thread.Sleep.

кто как обзывается, тот так сам называется... маску ношу чтобы не заразить антиваксеров... Дневник тяжелобольного инвалида
#2 
AlexNek патриот30.01.24 17:55
AlexNek
NEW 30.01.24 17:55 
в ответ uscheswoi_82 30.01.24 04:15
public class Aufzug

Сразу хочется сказать что-то видя в коде немецкий...

#3 
alex445 коренной житель30.01.24 18:05
NEW 30.01.24 18:05 
в ответ AlexNek 30.01.24 17:55, Последний раз изменено 30.01.24 18:06 (alex445)
Сразу хочется сказать что-то видя в коде немецкий...

Где-то тут Срыв покровов проходил....

#4