🎨
BUT INFO / C# / Embarqué
  • Introduction
  • DLL HomeIO
  • Premier exemple pas à pas
  • Premier exemple (en WPF)
  • Gestion des volets
  • Gestion de la porte de garage
  • Mise en place d'une supervision
  • Scénarios à intégrer
  • Astuces WPF
  • Enquête
Powered by GitBook
On this page

Was this helpful?

Gestion des volets

SCÉNARIO 1 : Ouverture des stores d'une pièce.

Proposer une commande qui lors de l'appui sur l'interrupteur du volet permet de lever le volet jusqu'en haut (ou de la baisser), sauf si l'utilisateur appuie de nouveau sur le bouton monter ou descendre.

  1. Proposer le grafcet

  2. Traduire le grafcet en équations

  3. Coder les équations

// Some code
 private bool x0v = true;
private bool x1v = false;
private bool x2v = false;
private bool x3v = false;

private bool ft1v = false;
private bool ft2v = false;
private bool ft3v = false;
private bool ft4v = false;
private bool ft5v = false;

private bool boutonMonterPrec = false;
private bool boutonMonter = false;
private bool boutonDescendrePrec = false;
private bool boutonDescendre = false;

private bool frontMonter = false;
private bool frontDescendre = false;

private bool capteurHaut = false;
private bool capteurBas = false;

private MemoryBit actMonter;
private MemoryBit actDescendre;

private void runCycleVolet()
{
    MemoryMap.Instance.Update();

    boutonMonterPrec = boutonMonter;
    boutonDescendrePrec = boutonDescendre;

    boutonMonter = MemoryMap.Instance.GetBit(3, MemoryType.Input).Value;
    boutonDescendre = MemoryMap.Instance.GetBit(4, MemoryType.Input).Value;
    capteurHaut = MemoryMap.Instance.GetFloat(3, MemoryType.Input).Value == 10.0;
    capteurBas = MemoryMap.Instance.GetFloat(3, MemoryType.Input).Value == 0.0;

    frontMonter = !boutonMonterPrec && boutonMonter;
    frontDescendre = !boutonDescendrePrec && boutonDescendre;

    ft1v = (x0v || x2v) && frontMonter && !capteurHaut;
    ft2v = x1v && capteurHaut;
    ft3v = (x0v || x1v) && frontDescendre && !capteurBas;
    ft4v = x2v && capteurBas;
    ft5v = x3v;

    x0v = ft5v || x0v && !(ft1v || ft3v);
    x1v = ft1v || x1v && !(ft2v || ft3v);
    x2v = ft3v || x2v && !(ft4v || ft1v);
    x3v = (ft2v || ft4v) || x3v && !ft5v;

    actMonter = MemoryMap.Instance.GetBit(1, MemoryType.Output);
    actDescendre = MemoryMap.Instance.GetBit(2, MemoryType.Output);

    actMonter.Value = x1v;
    actDescendre.Value = x2v;

    MemoryMap.Instance.Update();

}
PreviousPremier exemple (en WPF)NextGestion de la porte de garage

Last updated 2 months ago

Was this helpful?