Compare commits

...

1 Commits
main ... work

Author SHA1 Message Date
6baa1fb3fc - 29.08.25
- SQLITE3 Datenbank Backup
	- OpenOffice Format gespeichert
2025-08-29 12:11:48 +02:00
4 changed files with 264 additions and 0 deletions

8
.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
*.bak
*.gho
*.ori
*.orig
*.tmp
# SQLite3
*.db-*

BIN
final.ods Normal file

Binary file not shown.

Binary file not shown.

256
machine_1000t.db.sql Normal file
View File

@ -0,0 +1,256 @@
BEGIN TRANSACTION;
DROP TABLE IF EXISTS "betriebsmittel";
CREATE TABLE "betriebsmittel" (
"ID" INTEGER,
"kennzeichen" TEXT NOT NULL COLLATE NOCASE,
"gruppe" INTEGER NOT NULL,
"ort" TEXT,
"bezeichnung" TEXT,
"beschreibung" TEXT,
UNIQUE("kennzeichen" COLLATE NOCASE,"gruppe"),
PRIMARY KEY("ID"),
FOREIGN KEY("gruppe") REFERENCES "gruppen"("gruppe") ON UPDATE CASCADE ON DELETE RESTRICT,
FOREIGN KEY("ort") REFERENCES "orte"("ort") ON UPDATE CASCADE ON DELETE RESTRICT
);
DROP TABLE IF EXISTS "gruppen";
CREATE TABLE "gruppen" (
"gruppe" INTEGER,
"beschreibung" TEXT,
PRIMARY KEY("gruppe")
);
DROP TABLE IF EXISTS "input";
CREATE TABLE "input" (
"ID" INTEGER,
"kennzeichen" TEXT NOT NULL COLLATE NOCASE,
"gruppe" INTEGER NOT NULL,
"byte" INTEGER NOT NULL CHECK("byte" >= 0),
"bit" INTEGER NOT NULL CHECK("bit" BETWEEN 0 AND 7),
"mapping" TEXT,
"funktion" TEXT,
"schaltet_betriebsmittel" TEXT COLLATE NOCASE,
"schaltet_gruppe" INTEGER,
"schaltet_klemme" TEXT COLLATE NOCASE,
UNIQUE("schaltet_betriebsmittel" COLLATE NOCASE,"schaltet_gruppe","schaltet_klemme"),
PRIMARY KEY("ID" AUTOINCREMENT),
UNIQUE("gruppe","byte","bit"),
FOREIGN KEY("kennzeichen","gruppe") REFERENCES "betriebsmittel"("kennzeichen","gruppe") ON UPDATE CASCADE ON DELETE RESTRICT,
FOREIGN KEY("schaltet_betriebsmittel","schaltet_gruppe") REFERENCES "betriebsmittel"("kennzeichen","gruppe") ON UPDATE CASCADE ON DELETE RESTRICT,
CHECK(("schaltet_betriebsmittel" IS NULL AND "schaltet_gruppe" IS NULL) OR ("schaltet_betriebsmittel" IS NOT NULL AND "schaltet_gruppe" IS NOT NULL))
);
DROP TABLE IF EXISTS "orte";
CREATE TABLE "orte" (
"ort" TEXT,
"beschreibung" TEXT,
PRIMARY KEY("ort")
);
DROP TABLE IF EXISTS "output";
CREATE TABLE "output" (
"ID" INTEGER,
"kennzeichen" TEXT NOT NULL COLLATE NOCASE,
"gruppe" INTEGER NOT NULL,
"byte" INTEGER NOT NULL CHECK("byte" >= 0),
"bit" INTEGER NOT NULL CHECK("bit" BETWEEN 0 AND 7),
"mapping" TEXT,
"funktion" TEXT,
"schaltet_betriebsmittel" TEXT COLLATE NOCASE,
"schaltet_gruppe" INTEGER,
"schaltet_klemme" TEXT COLLATE NOCASE,
UNIQUE("schaltet_betriebsmittel" COLLATE NOCASE,"schaltet_gruppe","schaltet_klemme"),
PRIMARY KEY("ID" AUTOINCREMENT),
UNIQUE("gruppe","byte","bit"),
FOREIGN KEY("kennzeichen","gruppe") REFERENCES "betriebsmittel"("kennzeichen","gruppe") ON UPDATE CASCADE ON DELETE RESTRICT,
FOREIGN KEY("schaltet_betriebsmittel","schaltet_gruppe") REFERENCES "betriebsmittel"("kennzeichen","gruppe") ON UPDATE CASCADE ON DELETE RESTRICT,
CHECK(("schaltet_betriebsmittel" IS NULL AND "schaltet_gruppe" IS NULL) OR ("schaltet_betriebsmittel" IS NOT NULL AND "schaltet_gruppe" IS NOT NULL))
);
INSERT INTO "betriebsmittel" ("ID","kennzeichen","gruppe","ort","bezeichnung","beschreibung") VALUES (1,'M25',1,'H1','Schaltschranklüfter',NULL),
(2,'A12',3,'H1','Pilz Basisgerät',NULL),
(3,'F26',1,'H1','Blitzschutz Typ3',NULL),
(4,'H24',1,'H1','Leuchte Hauptschalter EIN',NULL),
(5,'L22',1,'H1','Blitzschutz Typ 2',NULL),
(6,'F16',1,'H1','Sicherung Energiemessung',NULL),
(7,'A14',1,'H1','Energiemessung',NULL),
(8,'B12',1,'H1','Stromsummenzähler (CT) L3',NULL),
(9,'B13',1,'H1','Stromsummenzähler (CT) L2',NULL),
(10,'B14',1,'H1','Stromsummenzähler (CT) L1',NULL),
(11,'S11',1,'H1','Hauptschalter',NULL),
(12,'S25',1,'H1','Temperaturregler Schaltschranklüfter',NULL),
(13,'F25',1,'H1','LS Schaltschranklüfter',NULL),
(17,'A11',3,'H1','Pilz Buskoppler Ethercat',NULL),
(18,'A16',3,'H1','Pilz Ausgangsbaugruppe',NULL),
(19,'A17',3,'H1','Pilz Eingangsbaugruppe',NULL),
(20,'A22',3,'H1','Pilz Eingangsbaugruppe',NULL),
(21,'A23',3,'H1','Pilz Ausgangsbaugruppe',NULL),
(22,'A24',3,'H1','Pilz Ausgangsbaugruppe',NULL),
(24,'S32',3,'H1','Pilz Notausschalter',NULL),
(25,'K62',15,'H1','Relais Ventil Y65 (Presse öffnen)',NULL),
(26,'K63',15,'H1','Relais Ventil Y66 (Presse öffnen)',NULL),
(27,'Y65',15,'H1','Ventil Presse öffnen 1',NULL),
(28,'Y66',15,'H1','Ventil Presse öffnen 2',NULL),
(29,'K72',15,'H1','Relais Ventil Y75 (Presse öffnen)',NULL),
(30,'K73',15,'H1','Relais Ventil Y76 (Presse öffnen)',NULL),
(31,'Y75',15,'H1','Ventil Presse öffnen 3',NULL),
(32,'Y76',15,'H1','Ventil Presse öffnen 4',NULL),
(34,'A14',2,'H1','SPS Ausgansbaugruppe',NULL),
(35,'T62',1,'H1','Netzgerät 400V 24VDC',NULL),
(36,'S33',3,'H1','Pilz Notausschalter (oben)',NULL),
(37,'S34',3,'H1','Taster Quittieren Not-Aus',NULL),
(38,'H36',3,'H1','Leuchte Not-Aus Meldung',NULL),
(39,'K37',3,'H1','',NULL),
(40,'K37.1',3,'H1','',NULL),
(41,'S42',3,'H1','Taster Quittieren Störung',NULL),
(42,'A42',3,'H1','PIT m3.2p (Safe Operation Module)',NULL),
(43,'S52',3,'H1','Taster Quittieren Betriebsart','');
INSERT INTO "gruppen" ("gruppe","beschreibung") VALUES (0,'Projektdaten'),
(1,'Einspeisung'),
(2,'Steuerung'),
(3,'Pilz'),
(11,'Bedienung Elemente'),
(15,'Ventile'),
(17,'Auswerfer'),
(20,'Heizung'),
(25,'Wasserbehälter'),
(30,'Klemmleisten');
INSERT INTO "input" ("ID","kennzeichen","gruppe","byte","bit","mapping","funktion","schaltet_betriebsmittel","schaltet_gruppe","schaltet_klemme") VALUES (1,'A12',3,2060,4,'I4','Notaus Quittieren','S34',3,'4'),
(2,'A12',3,2061,0,'I8','Quittieren Störung Pilz','S42',3,'4'),
(3,'A12',3,2061,5,'I13','Betriebsart Einzelhub','A42',3,'SOM1'),
(4,'A12',3,2061,6,'I14','Betriebsart Einrichten','A42',3,'SOM2'),
(5,'A12',3,2061,7,'I15','Betriebsart -frei-','A42',3,'SOM3'),
(6,'A12',3,2062,0,'I16','Betriebsart -frei-','A42',3,'SOM4'),
(7,'A12',3,2062,1,'I17','Betriebsart -frei-','A42',3,'SOM5'),
(8,'A12',3,2062,2,NULL,'reserve',NULL,NULL,NULL),
(9,'A12',3,2062,3,NULL,'reserve',NULL,NULL,NULL);
INSERT INTO "orte" ("ort","beschreibung") VALUES ('H1','Schaltschrank 1, groß'),
('H2','Schaltschrank 2, klein oberhalb H1'),
('H3','Schaltschrank 3, klein, hinter Ventilgruppe'),
('H4','mobiles Bedienelement'),
('H5','Monitorgehäuse, schwenbar'),
('H6','direkt an Presse montiert'),
(NULL,NULL);
INSERT INTO "output" ("ID","kennzeichen","gruppe","byte","bit","mapping","funktion","schaltet_betriebsmittel","schaltet_gruppe","schaltet_klemme") VALUES (1,'A14',2,2,0,NULL,'Schaltet -K72 und damit Ventil -Y75','K72',15,NULL);
DROP VIEW IF EXISTS "v_input";
CREATE VIEW "v_input" AS
SELECT
i.ID,
i.kennzeichen,
i.byte,
i.bit,
printf('%d.%d', i.byte, i.bit) AS adresse,
i.gruppe,
i.funktion
FROM input i;
DROP VIEW IF EXISTS "v_output";
CREATE VIEW "v_output" AS
SELECT
o.ID,
o.kennzeichen,
o.byte,
o.bit,
printf('%d.%d', o.byte, o.bit) AS adresse,
o.gruppe,
o.funktion
FROM output o;
DROP TRIGGER IF EXISTS "bm_upper_ai";
CREATE TRIGGER bm_upper_ai
AFTER INSERT ON betriebsmittel
FOR EACH ROW
BEGIN
UPDATE betriebsmittel
SET kennzeichen = UPPER(kennzeichen)
WHERE rowid = NEW.rowid
AND kennzeichen <> UPPER(kennzeichen) COLLATE BINARY;
END;
DROP TRIGGER IF EXISTS "bm_upper_au";
CREATE TRIGGER bm_upper_au
AFTER UPDATE OF kennzeichen ON betriebsmittel
FOR EACH ROW
BEGIN
UPDATE betriebsmittel
SET kennzeichen = UPPER(kennzeichen)
WHERE rowid = NEW.rowid
AND kennzeichen <> UPPER(kennzeichen) COLLATE BINARY;
END;
DROP TRIGGER IF EXISTS "in_upper_ai";
CREATE TRIGGER in_upper_ai
AFTER INSERT ON input
FOR EACH ROW
BEGIN
UPDATE input
SET kennzeichen = UPPER(kennzeichen),
schaltet_betriebsmittel = CASE
WHEN schaltet_betriebsmittel IS NULL THEN NULL
ELSE UPPER(schaltet_betriebsmittel)
END
WHERE rowid = NEW.rowid
AND (kennzeichen <> UPPER(kennzeichen) COLLATE BINARY
OR (schaltet_betriebsmittel IS NOT NULL
AND schaltet_betriebsmittel <> UPPER(schaltet_betriebsmittel) COLLATE BINARY));
END;
DROP TRIGGER IF EXISTS "in_upper_au";
CREATE TRIGGER in_upper_au
AFTER UPDATE OF kennzeichen, schaltet_betriebsmittel ON input
FOR EACH ROW
BEGIN
UPDATE input
SET kennzeichen = UPPER(kennzeichen),
schaltet_betriebsmittel = CASE
WHEN schaltet_betriebsmittel IS NULL THEN NULL
ELSE UPPER(schaltet_betriebsmittel)
END
WHERE rowid = NEW.rowid
AND (kennzeichen <> UPPER(kennzeichen) COLLATE BINARY
OR (schaltet_betriebsmittel IS NOT NULL
AND schaltet_betriebsmittel <> UPPER(schaltet_betriebsmittel) COLLATE BINARY));
END;
DROP TRIGGER IF EXISTS "orte_upper_ai";
CREATE TRIGGER orte_upper_ai
AFTER INSERT ON orte
FOR EACH ROW
WHEN NEW.ort <> UPPER(NEW.ort)
BEGIN
UPDATE orte
SET ort = UPPER(NEW.ort)
WHERE rowid = NEW.rowid;
END;
DROP TRIGGER IF EXISTS "orte_upper_au";
CREATE TRIGGER orte_upper_au
AFTER UPDATE OF ort ON orte
FOR EACH ROW
WHEN NEW.ort <> UPPER(NEW.ort)
BEGIN
UPDATE orte
SET ort = UPPER(NEW.ort)
WHERE rowid = NEW.rowid;
END;
DROP TRIGGER IF EXISTS "out_upper_ai";
CREATE TRIGGER out_upper_ai
AFTER INSERT ON output
FOR EACH ROW
BEGIN
UPDATE output
SET kennzeichen = UPPER(kennzeichen),
schaltet_betriebsmittel = CASE
WHEN schaltet_betriebsmittel IS NULL THEN NULL
ELSE UPPER(schaltet_betriebsmittel)
END
WHERE rowid = NEW.rowid
AND (kennzeichen <> UPPER(kennzeichen) COLLATE BINARY
OR (schaltet_betriebsmittel IS NOT NULL
AND schaltet_betriebsmittel <> UPPER(schaltet_betriebsmittel) COLLATE BINARY));
END;
DROP TRIGGER IF EXISTS "out_upper_au";
CREATE TRIGGER out_upper_au
AFTER UPDATE OF kennzeichen, schaltet_betriebsmittel ON output
FOR EACH ROW
BEGIN
UPDATE output
SET kennzeichen = UPPER(kennzeichen),
schaltet_betriebsmittel = CASE
WHEN schaltet_betriebsmittel IS NULL THEN NULL
ELSE UPPER(schaltet_betriebsmittel)
END
WHERE rowid = NEW.rowid
AND (kennzeichen <> UPPER(kennzeichen) COLLATE BINARY
OR (schaltet_betriebsmittel IS NOT NULL
AND schaltet_betriebsmittel <> UPPER(schaltet_betriebsmittel) COLLATE BINARY));
END;
COMMIT;