ΠΑΡΑΔΟΣΕΙΣ ΜΑΘΗΜΑΤΟΣ «ΔΙΚΤΥΑ ΕΛΕΓΧΟΥ» ΟΚΤΩΒΡΙΟΣ 2004
10o ΜΕΡΟΣ ΤΟ ΕΠΙΠΕΔΟ ΕΦΑΡΜΟΓΗΣ (7ο επίπεδο) & ΤΟ ΕΠΙΠΕΔΟ ΧΡΗΣΤΗ (8ο επίπεδο) ΣΤΟ ΔΙΚΤΥΟ ΠΕΔΙΟΥ LONWORKS
ΤΟ ‘ΠΕΡΙΟΡΙΣΜΕΝΟ’ OSI MONTΕΛΟ ΑΝΑΦΟΡΑΣ
Το 7o Επίπεδο Εφαρμογής (Application) στο Lonworks
Γενικά Χαρακτηριστικά της γλώσσας Neuron C Προγραμματιστική γλώσσα βασισμένη στην ANSI C Σχεδιάστηκε ειδικά για το Neuron Chip Εμπεριέχει επεκτάσεις (extensions) - Network Communication Model ( FB’s & NV’s ) για την απλοποιημένη επικοινωνία απομακρυσμένων συσκευών - Network Configuration Model ( FB’s & Conf. Properties ) για την εύκολη μορφοποίηση του δικτύου - Type Model ( standard & user resource files ) για την ολοκλήρωση και διαλειτουργικότητα ετερογενών συσκευών - Ένα σύνολο από I/O Objects για το Ι/Ο του Neuron Chip - Διαχείριση των Events (Timer – I/O – Network Event Handling) με την δήλωση when
Data - Driven Φιλοσοφία vs. Command - Driven
Event - Driven Φιλοσοφία vs. Polled - Scheduling
Network Variables (Δήλωση στη Neuron C και Firmware) Δημιουργεί το ένα μέρος του Lonworks Device Interface. Standard Network Variable Types = SNVT’s Πχ. network output SNVT_lev_disc nvo_switch; Configuration Properties (Device Behavior Customization) Δημιουργεί το άλλο μέρος του Lonworks Device Interface. Standard Configuration Property Types = SCPT’s Μορφοποιούνται από κάποιο Network Tool (πχ. LonMaker) Functional Blocks (Network Variables + Configuration Properties) defined by Functional Profiles Event driven scheduling system Πχ. // Event driven Task when (io_changes(Switch2) ) { nvo_switch_state = input_value; } Lower level messaging service Πχ. // Message Task when (msg_arrives(10) ) { ………… } Neuron C (NV, CP, FB, Events, Msgs)
Neuron C (Timer, I/O Object) Timer (Δηλώνονται στη Neuron C σαν μεταβλητές και ελέγχονται από το Firmware) Πχ. stimer timer1 = 5; // start timer1 with value 5 seconds when (timer_expires(timer1) ) { ………… } I/O Objects (Δήλωση στη Neuron C και Firmware) Είναι standardized I/O Device Drivers για το Neuron chip. Πχ. IO_4 input bit Switch1; IO_1 output bit relay1; IO_1 output bit relay1; IO_6 output bit io_nw1_cs = CS_OFF; IO_6 output bit io_nw1_cs = CS_OFF; IO_7 output bit io_nw2_cs = CS_OFF; IO_7 output bit io_nw2_cs = CS_OFF; IO_8 neurowire master select(IO_0) kbaud(20) io_nw1; IO_8 neurowire master select(IO_0) kbaud(20) io_nw1; IO_8 neurowire master select(IO_7) kbaud(20) io_nw2; IO_8 neurowire master select(IO_7) kbaud(20) io_nw2;
I / O O B J E C T S
Direct I/O Objects (logic at pins) Timer / Counter I/O Objects I/O Objects
Serial I/O Objects (I or O) Serial I/O Objects Parallel I/O Objects
Neuron Chip I/O Objects
Δυνατότητα ανά I/O
E V E N T S “WHEN”
Events Συστήματος / Scheduler Πχ. when (timer_expires(timer1) ) {…………} Events από Ι/Ο Πχ. when (io_changes(Switch2) ) {…………} Προκαθορισμένα (Predefined) Events
Events από NV Πχ. when (nv_update_occurs(nvi_relay_state) ) { io_out(relay1, nvi_relay_state); io_out(relay1, nvi_relay_state);} Events από Messages Πχ. when (msg_arrives(10) ) {…………} Προκαθορισμένα (Predefined) Events
Όλα τα Προκαθορισμένα (Predefined) Events γίνονται αντιληπτά με την Δήλωση «When» (when clause or statement)
User - Defined Events Κάθε Neuron C έκφραση η οποία έχει Boolean αποτέλεσμα Δηλαδή 1 ή 0 (True or False) Πχ. when ((timer_expires(timer1) ) && (flag == TRUE)) // Task to execute {…………}
NETWORKVARIABLES(NV’s) nvo (output NV) nvi (input NV)
Η Φιλοσοφία της Σύνδεσης Εισόδων με Εξόδους μέσω των Μεταβλητών Δικτύου Νοητό Καλώδιο Δημιουργείται και μορφοποιείται από ένα Network Tool Αλλάζει χωρίς επαναπρογραμματισμό της συσκευής Είναι ευκολόχρηστο
Node1 Node2 nvo… nvi3…. Node1 Node2 Node3 Node3 nvo… nvi1…. nvi2… nvi2…
NV Declaration Modifier (sync, polled …) Class (const, eeprom …) Conn (ackd, unackd …) Type (SNVT…) Παραδείγματα Απλή δήλωση Με Priority Χωρίς ACK
NV Events (When) Παραδείγματα
Γενικός Κατάλογος (Master List) SNVT
Δομές - SNVT Structures
Enumeration Lists
CONFIGURATIONPARAMETER TYPES TYPES(SCPT’s)
FUNCTIONAL BLOCKS
Παράδειγμα Functional Blocks σε ένα Σύστημα Έξυπνου Φωτισμού
ΣΥΝΑΡΤΗΣΕΙΣ ΤΗΣ NEURON C (Functions)
Execution Control
Network Configuration
Integer Mathematics Κλπ ………………..
Floating point Mathematics Κλπ ………………..
Strings
Utilities
I / O
Preprocessor / Compiler Directives
Directives (Preprocessor, Compiler) Πχ. #ifndef smart_io #………………… #………………… #……………….. #……………….. #endif #endif Πχ. #pragma enable_io_pullups (Επιτρέπει στον Compiler να ενεργοποιεί εσωτερικές pull-up αντιστάσεις κάτι το οποίο δεν μπορεί να γίνει με την γλώσσα προγραμματισμού και δεν χρειάζεται να γίνει εξωτερικά με H/W)