Faire un peu de domotique avec un S7-300

Forum traitant des automates industriels de marque Siemens.
Avatar du membre
Brebiou
Dieu du process
Dieu du process
Messages : 946
Enregistré le : 21 oct. 2015, 08:38

Re: Faire un peu de domotique avec un S7-300

Message par Brebiou »

steph31 a écrit :Bonsoir
Brebiou a écrit : Donc prochaine étape déjà, mettre un condo de 0.1µF en parallèle des sondes, et je vais mettre en place mon alim de PC transformée pour avoir une alim plus stable pour les sondes.
Évite d'utilisé une alim de PC, car celle ci ne sont pas prévu pour fonctionné a vide. C'est alims nécessite un courant minimum sur le +5V (approximativement 1/4 de sont courant de sortie) pour que la régulation fonctionne correctement.

Prend plutôt un petit adaptateur 5V.
http://www.cdiscount.com/telephonie/r-c ... .html#_his_
J'ai une résistance de puissance de 10W sur le 5V pour qu'elle ne démarre pas à vide ;)
Avatar du membre
Brebiou
Dieu du process
Dieu du process
Messages : 946
Enregistré le : 21 oct. 2015, 08:38

Re: Faire un peu de domotique avec un S7-300

Message par Brebiou »

Brebiou a écrit : Mise à jour le 13/10/2016

Stade actuel du projet:
  • [FAIT] Implantation d'armoire électrique
  • [FAIT] Migration de la GTL près de ces armoires
  • [FAIT] Modifications et raccordement de la maison a l'automate
  • [FAIT] Création programme simple visant a reproduire une installation domestique classique
  • [FAIT] Implantation d'un Raspberry pour avoir des entrées analogiques a moindre coût
  • [FAIT] Mise en place d'un M2 pour gestion d'un pont élévateur automobile
  • [FAIT] Mise en place d'un poste STEP7 local
  • [FAIT] Mise en place d'un serveur Ubuntu
  • [FAIT] Amélioration programme pour mise en place d'automatisation
  • [FAIT] Programmation du Raspberry pour communiquer avec l'automate via Snap7
  • [EN COURS] Programmation de l'automate pour gestion de scénario
  • [EN COURS] Création interface Web pour statistiques et commandes a distance
Prévisions de développement:
  • Mise en place d'une IHM en façade d'armoire pour diagnostics et commande de secours
  • Création application Android pour statistiques et commandes a distance
Good news!

Grace aux condensateurs au ras des sondes, les signaux sont magnifiques! Plus de perturbations depuis 4 jours!

Merci à tous pour vos contributions.

Autre sujet:

J'utilise le SFC1 pour lire l'heure de la CPU, et ce afin d'automatiser certaines taches à certaines heures et/ou plages horaires. Je stocke l'heure dans un DB.
Aujourd'hui j'utilise des blocs compare pour "cerner" les plages horaires, mais je trouve ça assez lourd au demeurant.

Quelqu'un a déjà fait des choses de ce style?

Je me demande aussi si c'est politiquement correct d’inséré une tempo dans un FC? Vaut il mieux utiliser un FB? Ou même mettre cette tempo à l’extérieur du FC?
Avatar du membre
steph31
Forcené des structures
Forcené des structures
Messages : 177
Enregistré le : 20 oct. 2015, 19:17
Localisation : Toulouse

Re: Faire un peu de domotique avec un S7-300

Message par steph31 »

Bonjour

Bien content que tu avance dan ton projet.
Concernant les sondes, ce sont des composant "actif" le condensateur est préconisé dans la datasheet. C'est une règle en électronique, tous les composant actif qui possède une alimentation dois être muni d'un condensateur de découpage en parallèle son alimentation au plus prés des broches d'alim (µControleur, ram, eeprom, circuit logique, ampli op, etc...)

Concernant l.h'orloge de ma CPU, J'utilise SFC1 pour lire l'horloge de la CPU et FC61(Convert base time to local time) pour le passage heure été hiver et vice ver ça.

Pour le traitement, j'ai crée un bloc FB0 ou je rentre l'heure , minute et secondes de mon horloge actuel et les seuil de marche et d'arrêt.
Avatar du membre
Brebiou
Dieu du process
Dieu du process
Messages : 946
Enregistré le : 21 oct. 2015, 08:38

Re: Faire un peu de domotique avec un S7-300

Message par Brebiou »

Brebiou a écrit : 22 oct. 2015, 14:13 Stade actuel du projet:
  • [FAIT] Implantation d'armoire électrique
  • [FAIT] Migration de la GTL près de ces armoires
  • [FAIT] Modifications et raccordement de la maison a l'automate
  • [FAIT] Création programme simple visant a reproduire une installation domestique classique
  • [FAIT] Implantation d'un Raspberry pour avoir des entrées analogiques a moindre coût
  • [FAIT] Mise en place d'un M2 pour gestion d'un pont élévateur automobile
  • [FAIT] Mise en place d'un poste STEP7 local
  • [FAIT] Mise en place d'un serveur Ubuntu
  • [FAIT] Amélioration programme pour mise en place d'automatisation
  • [FAIT] Programmation du Raspberry pour communiquer avec l'automate via Snap7
  • [FAIT] Création interface Web pour statistiques et commandes a distance
  • [EN COURS] Refonte d'une partie du programme automate
  • [EN COURS] Programmation de l'automate pour gestion de scénario
Prévisions de développement:
  • Mise en place d'une IHM en façade d'armoire pour diagnostics et commande de secours
  • Création application Android pour statistiques et commandes a distance
J'ai pu m'y remettre un peu, notamment pour l'interface web.

Au départ il avait un formulaire a valider pour forcer les sortie, mais j'ai réussi à généré des requêtes HTTP asynchrone avec AJAX en Javascript, ça permet d'appeler le script sans recharger la page web, et donc d'avoir une action instantanée dès l'appui du bouton.

La je m'attaque à la programmation proprement dite de l'automate.

Aujourd'hui c'est programmé en pseudo grafcet, et je trouve que c'est trop lourd à la modification, j'aimerais bien revoir cela mais je ne sais pas comment m'y prendre pour faire du séquentiel proprement en ladder...

Vous auriez quelque conseil?
PROCOD
Apprend le binaire
Apprend le binaire
Messages : 2
Enregistré le : 25 oct. 2017, 00:15

Re: Faire un peu de domotique avec un S7-300

Message par PROCOD »

Bonjour, très intéressant ton projet.

moi je peux t'aider a la reconstruction de ton grafcet en ladder dans l'automate.

Il existe plusieurs moyen l'un des plus simples et d'utiliser un mot dont chaque bit représente une étape grafcet.

Par exemple MW0 correspond à ton grafcet.

Le premier bit M0.0 sera l’étape initial il devra être mis a 1 dans les OB100 et OB101 pour que à la reprise à chaud ou à froid ton grafect soit initialisé.

ensuite c'est très simple
M0.0 tes conditions M0.1
--||-----.............................---(S)-
|
| M0.0
|--(R)-

Et ainsi de suite avec les autres étapes.

Avec le même principe tu peux faire des sauts d’étapes dans tous les sens, le seul inconvénient c'est quand tu souhaites le voir dans une VAT tu l'aura en décalé. mais en ligne ton bloc aura tout son sens et tu pourra le modifier comme bon te semble

Moi je suis intéressé mais dans l'autre sens, j'ai un automate qui fait l'acquisition des données et je souhaite les exploité sous un Rpi, via la Snap7 et crée un serveur sql pour stocker les données et pouvoir ensuite les exploité dans Excel ou autre.

Quelqu'un a déjà fait ça?
Avatar du membre
Brebiou
Dieu du process
Dieu du process
Messages : 946
Enregistré le : 21 oct. 2015, 08:38

Re: Faire un peu de domotique avec un S7-300

Message par Brebiou »

PROCOD a écrit : 25 oct. 2017, 00:24
Il existe plusieurs moyen l'un des plus simples et d'utiliser un mot dont chaque bit représente une étape grafcet.

Par exemple MW0 correspond à ton grafcet.

Le premier bit M0.0 sera l’étape initial il devra être mis a 1 dans les OB100 et OB101 pour que à la reprise à chaud ou à froid ton grafect soit initialisé.

ensuite c'est très simple
M0.0 tes conditions M0.1
--||-----.............................---(S)-
|
| M0.0
|--(R)-

Et ainsi de suite avec les autres étapes.
C'est déjà ce qui est fait mais je ne trouve pas cela super propre et dès que tu veux ajouter une étape, faut tout décaler, c'est assez lourd au demeurant.
Je suis en train de regarder pour utiliser des FB,
PROCOD a écrit : 25 oct. 2017, 00:24
Moi je suis intéressé mais dans l'autre sens, j'ai un automate qui fait l'acquisition des données et je souhaite les exploité sous un Rpi, via la Snap7 et crée un serveur sql pour stocker les données et pouvoir ensuite les exploité dans Excel ou autre.

Quelqu'un a déjà fait ça?
Il suffit d'utiliser la lecture avec Snap7 depuis le RPI puis de l'injecter dans une base SQL
PROCOD
Apprend le binaire
Apprend le binaire
Messages : 2
Enregistré le : 25 oct. 2017, 00:15

Re: Faire un peu de domotique avec un S7-300

Message par PROCOD »

Dans ce cas tu peux utiliser S7-Graph si tu es sous Step7
Attention c'est un logiciel additionnel qu'il faut installer

ou sous tia portal
tu choisi GRAPH quand tu crée un nouveau FB, tu devras crée un DB associé au moment de l'appel de ton FB.

Quand tu modifieras ton graph tu recompileras et tu devras recharger le DB et le FB :)

Ouai c'est ce que je veux faire mais je suis pas un spécialiste de la création de programme informatique, je reste coté PLC.
Avatar du membre
Brebiou
Dieu du process
Dieu du process
Messages : 946
Enregistré le : 21 oct. 2015, 08:38

Re: Faire un peu de domotique avec un S7-300

Message par Brebiou »

PROCOD a écrit : 25 oct. 2017, 17:25 Ouai c'est ce que je veux faire mais je suis pas un spécialiste de la création de programme informatique, je reste coté PLC.
C'est dommage car Snap7 te donne des fonctions pré-définies pour attaquer l'automate.
Du coup avec un peu de logique tu peux aisément te créer des fonctions lecture de ce genre:

Code : Tout sélectionner

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from time import sleep
import snap7
from snap7.util import *
import struct
 
#=========================================
#       RAPPEL DES ZONES MEMOIRE
#
# Tempos        = 0x1D
# Compteurs     = 0x1C
# DB            = 0x84
# Momento       = 0x83
# Sorties       = 0x82
# Entrees       = 0X81
#
#=========================================

# Conversion des arguments
arg1 = int(sys.argv[1])

# Definition de l'automate et connexion
API = snap7.client.Client()
API.connect("192.168.0.250",0,2)

# Definition des variables
zone_mem = 0x83
debut = arg1
longueur = 2

# Lecture
resultat = API.read_area(zone_mem,0,debut,longueur)

# Affichage sur la console
print get_int(resultat, 0)

# Deconnexion
API.disconnect()
C'est une fonction que le RPi execute pour lire un INT, avec l'adresse passé en argument lors de l'appel.

C'est du Python, mais tu as aussi d'autres langages dispo pour aller encore plus loin.
Répondre