🎓 תלמיד רשום? חזור לפורטל לאחר הלימוד | 🚀 גולש חדש? הצטרף חינם
🎓 תלמיד רשום? חזור לפורטל לאחר הלימוד פורטל התלמידים | 🚀 גולש חדש? הצטרף חינם
חיישנים נתונים ניתוח דשבורד PLC / API
Industrial Sensors Project Infographic

מבנה הפרויקט

📁 industrial_sensors_project/
├── 📄 sensor_simulator.py # מחולל נתונים
├── 📄 sensor_data.csv # מאגר היסטורי
├── 📄 data_analysis.py # מנוע ניתוח
├── 📄 dashboard.py # תצוגה סטטית
├── 📄 api_server.py # שרת תווך תעשייתי
├── 📄 plc_simulator.py # סימולטור בקר
├── 📄 realtime_data.csv # נתונים חיים
└── 📄 realtime_dashboard.py # דשבורד Real-Time

1 הבנת העולם התעשייתי

המטרה: הבנת האקו-סיסטם של מפעל מודרני מבוסס נתונים.

📚 מושגי יסוד:

  • חיישן (Sensor) - העיניים והאוזניים של המערכת.
  • Industry 4.0 - המהפכה התעשייתית הרביעית - קישוריות מלאה.
  • Data Logging - היכולת לשמור היסטוריה לצורך למידת מכונה וחיזוי.
  • PLC (Programmable Logic Controller) - המוח המבצע בשטח המפעל.
  • API - הגשר המאובטח בין רצפת הייצור לענן או למערכת הניהול.

2 סימולציית חיישנים ב-Python

המטרה: יצירת "תאום דיגיטלי" (Digital Twin) המייצר נתונים פיזיקליים ריאליים.

דגש טכני:
דיוק בשמות העמודות ב-CSV הוא קריטי לסנכרון בין כל רכיבי המערכת.
timestamp, temperature, pressure, vibration
sensor_simulator.py
# ==============================================
# סימולטור חיישנים תעשייתיים
# קובץ: sensor_simulator.py
# ==============================================
import random
import csv
from datetime import datetime, timedelta

def generate_sensor_data(num_samples=100):
    """יוצר נתוני חיישנים מדומים עם רעש אקראי רציף"""
    data = []
    start_time = datetime.now()
    
    for i in range(num_samples):
        timestamp = start_time + timedelta(seconds=i)
        
        # טמפרטורה: בסיס 50°C עם רעש גאוסיאני
        temperature = round(50 + random.gauss(0, 10), 2)
        temperature = max(20, min(80, temperature))
        
        # לחץ: בסיס 5.5 bar
        pressure = round(5.5 + random.gauss(0, 1.5), 2)
        pressure = max(1, min(10, pressure))
        
        # רטט: בסיס 2.5 mm/s
        vibration = round(2.5 + random.gauss(0, 0.8), 2)
        vibration = max(0, min(5, vibration))
        
        data.append({
            'timestamp': timestamp.strftime('%Y-%m-%d %H:%M:%S'),
            'temperature': temperature,
            'pressure': pressure,
            'vibration': vibration
        })
    return data

def save_to_csv(data, filename='sensor_data.csv'):
    with open(filename, 'w', newline='', encoding='utf-8') as file:
        fieldnames = ['timestamp', 'temperature', 'pressure', 'vibration']
        writer = csv.DictWriter(file, fieldnames=fieldnames)
        writer.writeheader()
        writer.writerows(data)
    print(f"✅ נשמרו {len(data)} דגימות לקובץ {filename}")

if __name__ == "__main__":
    sensor_data = generate_sensor_data(100)
    save_to_csv(sensor_data)
python sensor_simulator.py
תוצר: קובץ sensor_data.csv מוכן לניתוח.

3 ניתוח נתונים ותובנות

המטרה: הפעלת "בינה" על הנתונים הגולמיים וזיהוי חריגות (Anomaly Detection).

data_analysis.py
# ==============================================
# ניתוח נתוני חיישנים
# קובץ: data_analysis.py
# ==============================================
import pandas as pd

def analyze_sensor_data(filename='sensor_data.csv'):
    df = pd.read_csv(filename)
    
    print("\n� סטטיסטיקות מערכת:")
    print("-" * 30)
    for col in ['temperature', 'pressure', 'vibration']:
        print(f"{col.capitalize()}: Mean={df[col].mean():.2f}, Max={df[col].max():.2f}")
    
    # זיהוי חריגות
    critical_temp = df[df['temperature'] > 70]
    print(f"\n⚠️ התראות קריטיות: {len(critical_temp)} דגימות מעל 70°C")
    return df

if __name__ == "__main__":
    analyze_sensor_data()
pip install pandas && python data_analysis.py

4 בניית Dashboard (ויזואליזציה)

המטרה: יצירת יחידת HMI (Human Machine Interface) להנגשת נתונים למקבלי החלטות.

dashboard.py
# ==============================================
# דשבורד חיישנים - Streamlit
# קובץ: dashboard.py
# ==============================================
import streamlit as st
import pandas as pd
import plotly.graph_objects as go
from plotly.subplots import make_subplots

st.set_page_config(page_title="🏭 Industrial Dashboard", layout="wide")
st.title("🏭 ניטור חיישנים תעשייתי")

df = pd.read_csv('sensor_data.csv')
df['timestamp'] = pd.to_datetime(df['timestamp'])

# KPIs
cols = st.columns(3)
cols[0].metric("🌡️ טמפרטורה", f"{df['temperature'].mean():.1f}°C")
cols[1].metric("🔧 לחץ", f"{df['pressure'].mean():.1f} bar")
cols[2].metric("📳 רטט", f"{df['vibration'].mean():.2f} mm/s")

# Charts
fig = make_subplots(rows=3, cols=1, shared_xaxes=True)
fig.add_trace(go.Scatter(x=df['timestamp'], y=df['temperature'], name="Temp"), row=1, col=1)
fig.add_trace(go.Scatter(x=df['timestamp'], y=df['pressure'], name="Pressure"), row=2, col=1)
fig.add_trace(go.Scatter(x=df['timestamp'], y=df['vibration'], name="Vibration"), row=3, col=1)

st.plotly_chart(fig, use_container_width=True)
pip install streamlit plotly && streamlit run dashboard.py
תוצר: דשבורד אינטראקטיבי מקצועי בדפדפן.

5 חשיבה תעשייתית (מה חסר?)

שאלות קיומיות למערכת:

  • מה קורה אם החיישן מנותק? (Data Integrity)
  • איך שולחים נתונים למערכות אחרות במפעל? (Interoperability)
  • איך עובדים עם נתונים זורמים ולא מקובץ סטטי? (Stream Processing)
📌 שלב קריטי – גשר בין הלמידה לתעשייה. בשלבים הבאים נבנה את החלקים החסרים!

6 שכבת API (תשתית Industry 4.0)

המטרה: יצירת פרוטוקול תקשורת מודרני מבוסס HTTP לאיסוף נתונים מיחידות הקצה (PLC/Edge).

api_server.py
from fastapi import FastAPI
from pydantic import BaseModel
import csv, os, datetime

app = FastAPI(title="Industrial Edge API")
@app.post("/sensor")
def receive_data(r: Reading):
    ts = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    with open('realtime_data.csv', 'a', newline='') as f:
        writer = csv.writer(f)
        writer.writerow([ts, r.temperature, r.pressure, r.vibration])
    return {"status": "received", "timestamp": ts, "data": r.dict()}

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)
pip install fastapi uvicorn && python api_server.py
🌐 תובנה טכנולוגית: ה-API הוא הלב של "תעשייה 4.0" – הוא מאפשר לכל רכיב במפעל "לדבר" עם העולם החיצון באופן מאובטח וסטנדרטי.

7 סימולציית PLC (Requests)

דימוי של בקר מתוכנת השולח פקודות ונתונים לשרת ה-API באופן אוטונומי.

plc_simulator.py
import requests, time, random

def send_data():
    while True:
        data = {
            "temperature": round(random.uniform(20, 100), 2),
            "pressure": round(random.uniform(0, 15), 2),
            "vibration": round(random.uniform(0, 5), 2)
        }
        try:
            r = requests.post("http://localhost:8000/sensor", json=data)
            print(f"Sent: {data} | Status: {r.status_code}")
        except:
            print("Connection failed...")
        time.sleep(1)

if __name__ == "__main__":
    send_data()
python plc_simulator.py
⚠️ שימו לב: השרת (Step 6) חייב לרוץ כדי שהסימולטור יוכל לשלוח אליו נתונים.

8 דאשבורד בזמן אמת (Streamlit)

השלב הסופי והמרשים ביותר! יצירת ממשק ויזואלי המציג את נתוני המפעל בגרפים אינטראקטיביים.

dashboard.py
import streamlit as st
import pandas as pd
import plotly.express as px
import time

st.set_page_config(page_title="Industrial Dashboard", layout="wide")
st.title("🏭 Real-Time Factory Monitor")

def load_data():
    return pd.read_csv('realtime_data.csv', names=['time', 'temp', 'pres', 'vib'])

placeholder = st.empty()

while True:
    try:
        df = load_data()
        with placeholder.container():
            kpi1, kpi2, kpi3 = st.columns(3)
            kpi1.metric("Temperature", f"{df['temp'].iloc[-1]}°C")
            kpi2.metric("Pressure", f"{df['pres'].iloc[-1]} bar")
            kpi3.metric("Vibration", f"{df['vib'].iloc[-1]} mm/s")
            
            fig = px.line(df.tail(20), x='time', y=['temp', 'pres', 'vib'], title="Sensor Trends")
            st.plotly_chart(fig, use_container_width=True)
    except:
        st.info("Waiting for sensor data...")
    time.sleep(1)
streamlit run dashboard.py
הישג אדיר! בניתם מערכת מקצה לקצה: מחיישן (סימולטור) דרך שרת ועד לדאשבורד ניהולי.

9 מיפוי לעולם האמיתי

איך מה שלמדנו בכיתה מתרגם למפעל חכם אמיתי?

רכיב בקורס מקביל במפעל תפקיד במערכת
🔌 sensor_simulator.py חיישן פיזי (RTD, Pressure Transducer) מדידת ערכים פיזיים בשטח והמרתם לאותות דיגיטליים.
🐍 Python Scripts Edge Computer / IoT Gateway עיבוד נתונים קרוב למקור, סינון ודחיסה לפני שליחה לענן.
📄 CSV Files Industrial Historian (OSIsoft, InfluxDB) אחסון ארוך טווח של נתוני תהליך לצורך אופטימיזציה וניתוח.
📊 Dashboard SCADA / HMI (WinCC, Ignition) ממשק פיקוח ובקרה המאפשר למפעיל לקבל החלטות בזמן אמת.
System Architecture Overview

10 הרחבות ואתגרים (לא חובה)

למי שרוצה לקחת את המערכת לשלב הבא של מקצועיות.

התראות SMS/Email

שליחת הודעות אוטומטיות לנייד כאשר מזוהה חריגה מסוכנת באחד החיישנים.

זיהוי חריגות (AI)

שימוש במודלים של Machine Learning כדי לזהות תקלות עוד לפני שהן קורות (Predictive Maintenance).

מסד נתונים SQL

מעבר מעבודה עם קבצי CSV למסד נתונים מקצועי כמו SQLite או PostgreSQL לניהול נתונים מאובטח.