; Ex_04B_GR.txt : ΠΑΡΑΔΕΙΓΜΑ #04B (20/4/10, EDY electronics)
;----------------------------------------------------------
;
ΕΠΕΚΤΑΣΗ ΠΑΡΑΔΕΙΓΜΑΤΟΣ 4
;
ΕΠΙΤΗΡΗΣΗ ΜΕΤΡΗΤΩΝ ΚΑΙ ΠΡΟΓΡΑΜΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ
;----------------------------------------------------------
;
ΠΑΡΟΥΣΙΑΖΟΝΤΑΙ:
;
ΕΝΤΟΛΕΣ ΡΥΘΜΙΣΗΣ ΠΑΡΑΜΕΤΡΩΝ: RN, HD, IC, ICS
;
ΕΝΤΟΛΗ ΑΜΕΣΗΣ ΕΚΤΕΛΕΣΗΣ: RS
;
ΠΡΟΓΡΑΜΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ
;----------------------------------------------------------

;ΣΕΝΑΡΙΟ: "ΕΠΙΤΗΡΗΣΗ ΜΕΤΡΗΤΩΝ ΠΡΟΪΟΝΤΩΝ KAI ΜΕΤΡΗΤΗ ΣΥΝΟΛΟΥ ΣΕ ΑΥΤΟΜΑΤΟ ΠΩΛΗΤΗ"

;ΣΥΝΔΕΣΕΙΣ:ΟΙ ΕΙΣΟΔΟΙ 1 ΕΩΣ 8 ΣΥΝΔΕΟΝΤΑΙ ΜΕ ΑΙΣΘΗΤΗΡΙΑ ΠΟΥ ΚΑΤΑΜΕΤΡΟΥΝ ΤΗΝ ΚΑΤΑΝΑΛΩΣΗ ΤΩΝ ΔΙΑΦΟΡΩΝ ΠΡΟΪΟΝΤΩΝ

;ΑΠΟΤΕΛΕΣΜΑ:
;Η συσκευη μετραει τους παλμους σε 8 εισοδους, με μεγιστη ταχυτητα 50 παλμων ανα δευτερολεπτο ( 1/0.02" )
;Ο ενδιαφερομενος θα ειδοποιηθει με μηνυμα οταν καποιος απο τους μετρητες φτασει το προκαθορισμενο γι'αυτον οριο.
;Επισης υπαρχει μετρητης συνολου με παραμετρο οριου που εκκινει αποστολη μηνυματος.
;Οι μετρητες αποθηκευονται στην ανεξιτηλη μνημη, ετσι ωστε να διατηρουνται κατα τη διαρκεια διακοπων της τασης.
;
;για παραδειγμα, οταν στην Εισοδο 1 μετρηθουν συνολικα 50 παλμοι η συσκευη θα στειλει το μηνυμα:
;
;
VENDING MACHINE #1 2010/04/20 15:10:45
;
PRODUCT 1: 50 PIECES
;
;για να μαθει ο ενδιαφερομενος τις τρεχουσες τιμες των μετρητων, θα στειλει την ερωτηση:
;
;
REPORT COUNTERS
;
;η συσκευη θα απαντησει με το μηνυμα:
;
;
VENDING MACHINE #1 2010/04/20 15:10:45
;
COUNTERS:
;
C1=25 C2=100 C3=56 C4=223 C5=12 C6=129 C7=345 C8=220
;
TOTAL:1110
;
;για να μηδενιστουν ολοι οι μετρητες, πρεπει να αποσταλει το μηνυμα:
;
;
ZERO COUNTERS
;
;η συσκευη θα απαντησει με το μηνυμα:
;
;
VENDING MACHINE #1 2010/04/20 15:10:45
;
ZERO COUNTERS Ο.Κ.
;
;Εστω οτι θελουμε να ειδοποιηθουμε με μηνυμα οταν το συνολο των μετρητων φτασει τον αριθμο 1500.
;Για να οριστει αυτη η τιμη (οριο μετρητη συνολου), πρεπει να αποσταλει το μηνυμα:
;
;
COMPARE SET 1500
;
;Η συσκευη θα απαντησει με το μηνυμα:
;
;
VENDING MACHINE #1 2010/04/20 15:10:45
;
COMPARE SET TO 1500
;
;Οταν το συνολο των μετρητων φτασει τον αριθμο 1500, η συσκευη θα στειλει το μηνυμα:
;
;
VENDING MACHINE #1 2010/04/20 15:10:45
;
COUNTERS TOTAL:1500
;
;Για να ρωτησουμε την τιμη του οριου συνολου, πρεπει να στειλουμε το μηνυμα:
;
;
COMPARE SET
;
;Η συσκευη θα απαντησει με το μηνυμα:
;
;
VENDING MACHINE #1 2010/04/20 15:10:45
;
COMPARE SET TO 1500
;

;--------------------------------------------------------
;ΥΛΟΠΟΙΗΣΗ

; ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΛΕΙΤΟΥΡΓΙΩΝ

RS__;ΑΡΧΙΚΟΠΟΙΗΣΗ (ΣΥΝΙΣΤΑΤΑΙ ΟΤΑΝ ΧΡΗΣΙΜΟΠΟΙΟΥΝΤΑΙ ΛΕΙΤΟΥΡΓΙΕΣ ΑΠΟΘΗΚΕΥΣΗΣ ΜΕΤΑΒΛΗΤΩΝ)

RN 6911111111____;ΤΗΛΕΦΩΝΙΚΟΣ ΑΡΙΘΜΟΣ ΠΑΡΑΛΗΠΤΗ
HD "VENDING MACHINE #1 %D %T"__;ΕΠΙΚΕΦΑΛΙΔΑ ΕΞΕΡΧΟΜΕΝΩΝ ΜΗΝΥΜΑΤΩΝ: "VENDING MACHINE #1 ΗΜΕΡΟΜΗΝΙΑ ΩΡΑ"

;Ρυθμιση ταχυτητας αποκρισης των εισοδων
IT 1 0__;Χρονος αντιδρασης εισοδου 1: 0,02 δευτερολεπτο
IT 2 0__;Χρονος αντιδρασης εισοδου 2: 0,02 δευτερολεπτο
IT 3 0__;Χρονος αντιδρασης εισοδου 3: 0,02 δευτερολεπτο
IT 4 0__;Χρονος αντιδρασης εισοδου 4: 0,02 δευτερολεπτο
IT 5 0__;Χρονος αντιδρασης εισοδου 5: 0,02 δευτερολεπτο
IT 6 0__;Χρονος αντιδρασης εισοδου 6: 0,02 δευτερολεπτο
IT 7 0__;Χρονος αντιδρασης εισοδου 7: 0,02 δευτερολεπτο
IT 8 0__;Χρονος αντιδρασης εισοδου 8: 0,02 δευτερολεπτο

;ΡΥΘΜΙΣΗ ΛΕΙΤΟΥΡΓΙΑΣ ΜΕΤΡΗΤΩΝ
IC 1 2 1 50 "PRODUCT 1: %C1"__;Μετρητης εισοδου 1: Οταν αυτος φτασει το 50, θα αποσταλει το μηνυμα "PRODUCT 1: τιμή μετρητή"
IC 2 2 1 70 "PRODUCT 2: %C2"__;Μετρητης εισοδου 2: Οταν αυτος φτασει το 70, θα αποσταλει το μηνυμα "PRODUCT 2: τιμή μετρητή"
IC 3 2 1 150 "PRODUCT 3: %C3"__;Μετρητης εισοδου 3: Οταν αυτος φτασει το 150, θα αποσταλει το μηνυμα "PRODUCT 3: τιμή μετρητή"
IC 4 2 1 50 "PRODUCT 4: %C4"__;Μετρητης εισοδου 4: Οταν αυτος φτασει το 50, θα αποσταλει το μηνυμα "PRODUCT 4: τιμή μετρητή"
IC 5 2 1 100 "PRODUCT 5: %C5"__;Μετρητης εισοδου 5: Οταν αυτος φτασει το 100, θα αποσταλει το μηνυμα "PRODUCT 5: τιμή μετρητή"
IC 6 2 1 100 "PRODUCT 6: %C6"__;Μετρητης εισοδου 6: Οταν αυτος φτασει το 100, θα αποσταλει το μηνυμα "PRODUCT 6: τιμή μετρητή"
IC 7 2 1 200 "PRODUCT 7: %C7"__;Μετρητης εισοδου 7: Οταν αυτος φτασει το 200, θα αποσταλει το μηνυμα "PRODUCT 7: τιμή μετρητή"
IC 8 2 1 150 "PRODUCT 8: %C8"__;Μετρητης εισοδου 8: Οταν αυτος φτασει το 150, θα αποσταλει το μηνυμα "PRODUCT 8: τιμή μετρητή"

ICS 7 10;Αποθηκευση μετρητων το πολυ 8 δευτερολεπτα μετα απο αλλαγη τιμης, με αντοχη για τουλαχιστον 1.000.000 εγγραφες (διαφορετικες τιμες) ανα μετρητη

;ΠΡΟΓΡΑΜΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

__;χρηση μεταβλητων
__;----------------
__;Ν1: αθροισμα ολων των μετρητων
__;Ν2: τιμη οριου για Ν1 (τιθεται απο το χρηστη με μηνυμα, χρησιμευει για συγκριση με το αθροισμα μετρητων)
__;Β1: μνημη αποστολης μηνυματος (γινεται 1 οταν αποσταλει μηνυμα "οριου συνολου", μηδενιζεται μαζι με τους μετρητες ή με αλλαγη Ν2)

P(__;ΠΡΟΛΟΓΟΣ
__NVV N1 N2 8 4__;οι μεταβλητες Ν1,Ν2 θα αποθηκευονται το πολυ 4 δευτερολεπτα μετα απο αλλαγη τιμης, με αντοχη 400.000 εγγραφες

__NVV B1 B1 8 2__;η μεταβλητη B1 θα αποθηκευεται το πολυ 4 δευτερολεπτα μετα απο αλλαγη τιμησ, με αντοχη 200.000 εγγραφες

__IF N2==0 ( N2=100 )__;εαν η Ν2 ισουται με 0 (ανεπιτρεπτο), εκχωρησε της τον αριθμο 100
)

M(__;ΚΕΝΤΡΙΚΗ ΕΝΟΤΗΤΑ
__N1 = C1+C2+C3+C4+C5+C6+C7+C8__; Ν1: αθροισμα ολων των μετρητων

__IF RMS "REPORT COUNTERS"
__(__;ληψη μηνυματος που ξεκιναει με "REPORT COUNTERS"
____;απαντηση στον αποστολεα με αναφορα των επιμερους μετρητων (C1..C8) και του συνολικου μετρητη (N1)
____SM 0 "COUNTERS:%nC1=%C1 C2=%C2 C3=%C3 C4=%C4 C5=%C5 C6=%C6 C7=%C7 C8=%C8%nTOTAL=%N1"
__)

__IF RMS "ZERO COUNTERS"
__(__;ληψη μηνυματος που ξεκιναει με "ZERO COUNTERS"
____C1=0 C2=0 C3=0 C4=0;μηδενισμος επιμερους μετρητων 1..4
____C5=0 C6=0 C7=0 C8=0;μηδενισμος επιμερους μετρητων 5..8
____N1=0____;μηδενισμος συνολικου μετρητη
____B1=0____;μηδενισμος μνημης αποστολης μηνυματος
____SM 0 "ZERO COUNTERS O.K.";απαντηση στον αποστολεα με μηνυμα επιβεβαιωσης
__)

__IF RMS "COMPARE SET"
__(__;ληψη μηνυματος που ξεκιναει με "COMPARE SET"
____RMN N2 N2____;συλλογη του αριθμου που ακολουθει (αν υπαρχει), στην μεταβλητη Ν2
____SM 0 "COMPARE SET TO %N2"__;αποστολη μηνυματος επιβεβαιωσης
__)

;η B2 θα χρησιμευσει σαν προσωρινη μεταβλητη, για τη ληψη αποφασης για αποστολη του μηνυματος "οριου συνολου"
__B2 = N1 >= N2___;Η B2 ΘΑ ΓΙΝΕΙ 1 ΕΑΝ Ν1 >= Ν2
__B2 = B2 a !B1___;Η Β2 ΘΑ ΓΙΝΕΙ 1 ΕΑΝ ΗΤΑΝ ΗΔΗ 1 ΚΑΙ Η Β1 ΕΙΝΑΙ 0

__IF B2
__(__;ο συνολικος μετρητης (Ν1) ειναι μεγ. ή ισος με το οριο (Ν2), και το μηνυμα "οριου συνολου" δεν εχει αποσταλει ακομα (!Β1)
____SM 1 "COUNTERS TOTAL:%N1"__;αποστολη μηνυματος "οριου συνολου"
____B1=1____;B1 = 1, μνημη αποστολης μηνυματος
__)
)

APR 1__;Αυτοματη εναρξη εκτελεσης του προγραμματος αυτοματισμου

;Τελος προγραμματος
;