Home
ReaGeniX User`s Manual
Contents
1. An action is a piece of program written in C language It may perform any computation output data modify stores both internal and external to the state machine and control other components ReaGeniX Programmer v 2 0 keep_open a i when v somebody gt r keep_open when timeout timer 25 keep_open people_detected when v somebody when v somebody gt a ja gt ov timer 3 Second give_time_to__pass lt 7 Figure 2 Automatic door state transition diagram In Figure 2 there is a state transition diagram for automatic door control Here we can see three states and four transitions One of the transition arrows starts from nowhere Itis the initial transition The initial transition defines what is done when the state machine is started A new state transition diagram is created with Visio tool using the stencil provided by ReaGeniX delivery It is assumed here that the reader has the basic knowledge of using Visio Tool Figure 3 shows the state transition diagram in Visio tool The symbols in stencil can be seen on the left The symbol is imported in the diagram by drag and drop User s Manual 12 when v somebody gt when timeout tir send keep_open true send keep_open people_detected en lv somebody gt si timerj 3 Second _ mi pera Figure 3 A state transition diagram in Visio A diagram in ReaGenixX for Visio is drawn in separate page
2. The initial value can be written directly to store port or selector symbols both component and state transition diagrams name type initializer Initializer is a expression or macro applicable as an initializer in C 7 2 implicit initialisation An implicit initialisation is connected to a data type The initializer is written to a header file included into diagram define type_init initializer 7 3 explicit uninitialisation It is practical not to define an initial value for large data structures They are better to be initialised by the program For such large data types put a definition define type_uninitialized to a suitable header file to be included in the diagram User s Manual 42 8 MODELLING EXAMPLES 8 1 A simple test environment It is advisable to test a system somehow before it is connected to real power machinery Professional testing methodologies are outside the scope of this manual However you may gain confidence to the operation of the system or you may find errors using a simple interactive simulation environment provided with the ReaGenixX Visual Programmer To run the diagram in an interactive simulated environment make a working directory Let s call it workpath for now on Copy all files from the directory EXAMPLES EXAMPLO1 of the ReaGenixX directory a to workpath Generate code from Visio Diagram see ch 2 2 Check the file MODULE T that controls generation of the testi
3. 2 Second all_red_again when timeout timer flag a_amber flag a_green gt a sequence_lights when timeout timer gt b_amber r b_red ov timer 3 Second amber_for_b when timeout timer gt r b_amber I b_green ov timer 5 Second green_for_b when timeout timer gt b_red I b_amber r b_green ov timer 10 Second ready b else gt r b_amber ov timer 1 Second when timeout timer i gt O a all_red_once_more when v ped_request ped_red r ped_green r ped_grant i ov timer 10 Second green_for pedestrians Figure 17 A Traffic Light Sequencer ReaGeniX Programmer v 2 0 when timeout timer gt r ped_red l ped_green ped_grant ov timer 10 Second 47 The basic sequence of traffic lights is presented in Figure 17 It uses a set of flags to control the lights The lights are assumed to operate so that the value false means dark and the value true means light The crossing directions are called a and b The opposite directions are signalled equally The pedestrians of both directions are shown green only when the cars of both directions are shown red signal ped_button flag ped_request register_pedestrian_request flag ped_grant flag ped_wait Y YV V V register_pedestrian_request gt I ped_request ped_wait on ped_button A when v ped_grant gt gt r ped_re
4. The name of page is important for code generation purposes and a page name of maximum 8 letters is recommended The symbols of the ReaGenixX stencil usually have a right mouse button menu which contains the most common operations for the symbol Usually one of these is editing the custom properties which are asked every time a new symbol instance is created into diagram In addition to states and transitions a complete state transition diagram includes a component body a component specification and local variable declarations A component body is represented by a rectangle around the state machine A component specification is a broken line box A local variable declaration represented by a textual declaration An example of complete model is presented in Figure 4 ReaGeniX Programmer v 2 0 Every diagram must have exactly one component body symbol which names the component type that the diagram describes here shopdoor A component specification defines all the connections between the new component type and its environment A textual declaration is used to define the local variables whose value is to be retained between transitions The timers are also declared using textual declaration shopdoor timer timer I keep_open when v somebody gt 1 keep_open when timeout timer gt I ksep_open people_detected when v somebody when v somebody gt gt ov timer 3 Second
5. A connection between two selectors is made with connector symbol Control ports may not be merged or branched with selectors A control connection can be connected to a component instance without a selector This means that the control is used for controlling enable or disable the component NOTE A continuous connection between two subcomponents needs an initializer in either selector this is not consistent and will be changed later The value of a continuous connection is reset to the initial value when the component containing the connection is enabled or re enabled 6 3 Stores 6 3 1 Store declaration Store in component is declared with store symbol Textual declaration could also be used as in state transition diagrams but it could not be accessed by any other component The text property of a store has the following syntax name type initializer Initialzer can be omitted only if there is a default initializer associated to the type or the type is explicitly uninitialized The value of a store is reset to the initial value when the component containing the store is enabled or re enabled ReaGeniX Programmer v 2 0 35 6 3 2 Accessing a store A store is usually connected without selector The connector_type of store is store and direction is out Name ActorClass Q name1 int Name int Figure 14 Accessing a store If an element of an array or a member of a structure is to be accessed by a
6. by the diagram The state machines are represented by component an actor instances whose label consists of instance name and component type name A connection of ports of the intercommunicating components is drawn using two selectors and a connector Selectors sector symbols which are snapped into component instances select ports to be connected A connector symbol connects the matching selectors together The direction of a selector is presented by the direction of sectors sharp corner and it must match the direction of the selected port A connection of a port of a component to the port of the external interface is drawn using two selectors and a connector Selectors sector symbols select ports to be connected One selector is snapped to the component and another is snapped to the component body symbol framing the diagram A connector symbol connects the matching selectors together The direction of a selector is presented by the direction of sectors sharp corner and it must match the direction of the selected port The actor components in an architecture diagram represent independent concurrent subprocesses Those subprocesses communicate by discrete and continuous communication or shared stores A signal is a special type of discrete communication who has no data value A flag is a special case of continuous communication whose datatype is R_boolean In addition direct control by switching another subprocess on or of is possible Oth
7. emit portname If the port value field is already assigned with v portname s portname Send a signal r portname Raise a flag It is equivalent to send portname R_true 1 portname Lower a flag It is equivalent to send portname R_false e portname Reset and enable a component controlled via a port d portname Disable a component controlled via port 5 4 Indexing in state transition diagrams 5 4 1 Operations on indexed objects Index expressions which refer to elements indexed ports timers or stores are inside of the macro parenthesis Normal C indexes referring to elements of data arrays are outside of the macro parenthesis Examples send p 5 k_pp ov x k_pp There is a special loop construct to make processing of the whole range of an index variable easier and safer in transition action for_each index_variable loop body end_for_each index_variable The loop body is repeated with each value of the index variable User s Manual 30 5 4 2 Indexed transition A state machine can receive from an indexed port using an indexed transition During the execution of transition action an index variable used in a transition condition has the value of index which made the transition condition to trigger The value is valid until the end of the transition on xdatalji gt ov requests i v xdatali Figure 10 An indexed transition It also is possible to test index
8. event may be considered something happening outside of the system e g closing a door or elapsing of a predetermined waiting time However a state machine sees an event as arrival of data or a signal or firing of an internal timer and it can react to all of them A state transition diagram is a picture of a state machine The main parts of a state machine are states and transitions The states are drawn as boxes and the transitions are drawn as arrows in a state transition diagram In a state machine one of the states is the current state at a particular point of time The possible responses of the state machine are defined by the transitions leading from the current state User s Manual 10 z initial action eet condition gt transitiol action paana condition gt transition2 action Figure 1 A state transition diagram A transition leading from the current state may be fired if the condition of the transition holds When a transition is fired the state which the transition leads to becomes the new current state Moreover the actions of the transition are executed The condition and action are defined textually and the condition is separated from action with an arrow gt It is convenient to visualise the operation of a state machine moving a paper clip on a state transition diagram The paper clip is moved from the old current state to the new current state following the arrow of the fired transition
9. must specify the header files of component types used in the architecture diagram This is done using the include textual declaration Forgetting this will produce a C compiler error of type R__componenttypename is undefined 6 1 1 Selector Selector symbol resembles the port symbol A selector symbol is snapped into an actor store or component body see Figure 13 A selector can be changed into port and vice versa The syntax of a selector text property is componentname cindexexpr portname pindexexpr datatype initializer User s Manual 34 e Selectors in a connection may have different names This is needed often when a subcomponent has different type and instance names e If selector has no text name is sought from the object at other end of connector e f datatype is missing datatype is sought from the other end of connector e An initializer is needed for a continuous connection The initializer can currently only be defined in selector symbol This will be changed in later versions The value of a continuous connection is reset to the initial value when the component containing the connection is enabled or re enabled See section Initial Values e Only one initializer is allowed for one connection selector connector selector e No initializers are allowed for input output selectors connected to component body symbol The text of port or selector of type control is simply portname 6 2 Connections
10. operator in the beginning of a transition condition The data value of communication is accessed by a v portname operator The v operator can be used both in conditions and actions Moreover v can be used to assign a value to an output communication Data stores may be internal or external in respect to a system component Both store data for further use External data stores may be shared with other system components The data value of an external store is accessed by a v store value operator The data value of a local store is accessed by an ov store own value operator Both operators can be used both in conditions and in actions The v and ov operators work both in reading the value and assigning a new value Output data is either stored to an external store or it is sent via a data flow If the structure of the data of an output flow is elementary it is convenient to use the send flow expression type statement to send a new value to a flow If the data is a structure new values are assigned to members using v flow member expression type statements and finally the data is released by emit flow for distribution User s Manual 54 discrete label label_type prepare_label gt discrete product_code integer continuous weight real flag weighing signal print_ready flag printer_jam flag stable _ i pp product_parameters flag reset g gt l l include wgparam h prepare _label store pid i
11. symbol Usually ReaGeniX diagram has an actor body and actor specification which have a same name User s Manual 22 4 APPLICATION DESCRIPTIONS BY REAGENIX The application descriptions made by ReaGeniX consist of two major diagram types architecture diagrams AD and state transition diagrams STD A ReaGenix diagram always defines a new component type It is thus possible to form a library of re usable components State transition diagrams describe the dynamics and the computation of the system A state transition diagram describes an elementary sequential process called a state machine Architecture diagrams describe the structure of a system An architecture diagram describes a higher level process composed of concurrent lower level processes called actors some of them might be described as state machines An actor symbol in architecture diagram defines a component instance There may be several component instances of the same component type in a system The hierarchy of architecture diagrams may be arbitrarily deep Actually the depth may be limited by the C compiler used to compile the results of the ReaGeniX Programmer The processes are connected together by communication mechanisms The communication mechanisms available in the ReaGenix language are e shared data stores e discrete communication including signals e continuous communication including flags e control enabling disabling a component Discrete and cont
12. the detection range is seen by the state machine so that flag somebody raises to R_true The operator v access the value of the port and the condition operator when reacts to the value R_t rue of the argument Consequently the action send keep_open R_true causes the door to open Finally the machine is settled in the state people_detected When the people has passed clear of the detection range the expression v somebody becomes R_true and the next transition is fired ov trail_timer 3 Second sets timer to fire in 3 seconds The physical door is not affected at this moment The machine can wait maximum of 3 seconds in the state give_time_to_pass lf somebody appears in the detection range during the wait the machine returns to people_detected otherwise the timer fires timeout trail_timer becomes R_true the door is commanded to close and the machine returns to the state closed The diagram of the automatic door controller is found from the distribution media as exampl101 shopdoor vsd ReaGeniX Programmer v 2 0 2 2 Compilation To store the generated code make a working directory called workpath Check that ReaGeniX Visual Programmer is in the Tools Run Add on menu If it is not you must modify the file Visio ini AddonsPath rgxpath Visio add on To generate code from Visio Diagram select command from menu Tools Run Add on ReaGeniX see Visio documentation for details of running add ons The ReaGeni
13. 0 on Idle and_when ov buffer ov i 0 amp amp get_now ov last gt putch ov buffer ov i z ov i lt ovi last get_now include conio h include omat h include get_now h include string h Figure 24 Simulated Character Based Output Figure 24 shows how to control the output rate using an external condition with Idle signal In the example the external condition is get_now ov last This gives output at the same rate than the system time is updated 18 2 Hz in PC In a real application the test may be upon transmitter buffer not busy etc User s Manual 58 signal Idle signal done aii ani aie rgx_main include omat h include input h Idle include output h include process h ascii_in char outstring s80 g C gt output Figure 25 A Simple Stand Alone Real Time System Figure 25 shows the overall organization of the example system The environment sends in the Idle signal each time the processor is found to be idle The application terminates by sending Done 8 6 Indexing A Mass Storage Multiplexer The problem A mass storage driver accepts requests via a dataflow When the request has been processed the driver sends the response via another dataflow A request is discarded if the handler is processing the previous request The mass storage multiplexer allows several clients to share the mass storage The interface between a client and the mutiplexer is
14. Communication A continuos communication has a value at any time It retains its value until a new value is sent The receiver can read its value whenever it needs to An event is associated to the change of the value so that the receiver can immediately react to the new value User s Manual 18 Value W Event y Ee lt Time A special type of continuous data is a flag whose datatype is Boolean and need not to be specified in declaration Value Event Wy True Fal Time 3 2 3 Shared Data Store A shared data store can be accessed from several components It retains its value until changed No event is associated to the change of the value It is impossible to immediately react to the change of the value without other kinds of signalling Value Time 3 2 4 Control Enable Controls are used to switch a component on and off Controls cannot be branched or merged Value Event Enable Disabl Time Switching a component off means immediate killing of the component with complete loss of data values and state information within the killed component However data in continuous communications and stores outside the killed component retain their values ReaGeniX Programmer v 2 0 Switching a component on means full reset of the component The data in stores and continuous communications inside the component are set to initial values and initial transitions of the state machines are executed 3 3
15. PENDIX 1 9 1 ReaGeniX components for Prosa tool User s Manual 41 41 41 42 42 46 51 52 55 58 61 61 DOCUMENT CONVENTIONS This manual uses the following typographic conventions Example of convention Description duration_max boolean duration_max boolean duration_max boolean parameter file parameter _file name name name name ReaGeniX Programmer v 2a In syntax words in bold indicate language specific keywords In text this font is used for language specific keywords and names referring to examples In text this font is used for language specific examples In text italic letters are used for defined terms and occasionally for emphasis In syntax italic letters indicate placeholders for information you supply In syntax items inside square brackets are optional In syntax a vertical bar indicates a mandatory choice between two or more items You must choose one of the items unless all of the items also are enclosed in square brackets In syntax items inside braces are repeated at least once 1 INTRODUCTION 1 1 Background Embedded software is an essential part of modern electronic products such as mobile phones lifts and domestic applications Embedded software is often called real time software because it has a continuous interaction with its environment and it often has strict response time requirements The behaviour of r
16. Port symbol A declaration of port consist of direction connector_type portname index_namel datatype Name lt discrete portname datatype Figure 6 A port A port symbol is a small triangle snapped to component specification symbol Figure 6 direction of port is shown visually by the direction of triangle The direction of port can be changed from right button menu and from custom properties Triangle head to the component for input port Triangle head from the component for input port connector_type is selected from symbol specific custom property window right button menu discrete for time discrete communication continuous for time continuous communication store for stores signal shorthand for discrete communication with no data value flag shorthand for continuous Boolean valued communication control for component enable disable port name identifies the name of the port that must be unique local for this component datatype is used for discrete and continuous connections datatype User s Manual 20 is either a C standard datatype or it is declared in an included C header file with typedef port name and datatype are written in text property of port symbol For C datatypes used in port declarations a diagram must have a textual declaration symbol see ch 0 where the name of header file where to find the datatype is told e g include ctypes h A port can be indexed A indexed port cons
17. ReaGenixX Programmer 2 0 A Real Time Application Generator User s Manual 14 4 2000 OBP Research Oy Teknologiantie 10 D 90570 OULU Finland Tel 358 8 551 5540 http personal inet fi ousiness obp index htm ReaGeniX Programmer User s Manual Copyright 1999 OBP Research Oy ReaGenixX is a trademark of OBP Research Oy Visio is a registered trademark of Visio Corporation Windows is a trademark of Microsoft Corporation OBP Research Oy does not guarantee merchantability or fitness of the ReaGeniX Programmer to any particular purpose There is no warranty by OBP Research Oy or any other party or person that the functions contained in the software will meet your requirements or that the operation of the software will be uninterrupted or error free You assume all responsibility for the selection of the software to achieve your intended results and for the installation use and results obtained from it Our policy is continuous improvement This can cause slight differences between appearances of actual symbols in the documentation and in the distributed software ReaGeniX Programmer v 2 0 TABLE OF CONTENTS INTRODUCTION 1 1 Background 1 2 Purpose of manual 1 3 Scope of Application 1 4 Components of ReaGenixX Visual Programmer GETTING STARTED 2 1 Modelling an Automatic Door Controller 2 2 Compilation REAGENIX COMPONENT 3 1 Actor component specification 3 2 Ports 3 2 1 Time Discrete Communication 3 2 2 T
18. X Visual Programmer produced files c and H for each diagram C file contains the program code H file contains the data declarations and function prototypes The base of filenames is defined by name of the Visio page of the diagram ReaGeniX uses macro library REACTIME H and a parameter file REACTIME P both of which are found in rgxpath INCLUDE These files must be included in the main program No special run time libraries are needed A simple test environment is provided with the ReaGeniX Visual Programmer to execute the generated program The instructions ara provided in Appendix 1 User s Manual 16 3 REAGENIX COMPONENT 3 1 Actor component specification A component specification describes the interface of a new component type The interface consists of communication channels defined by named ports In ReaGenixX language all components are actors so the name actor and component are used without distinction An actor specification symbol is a rectangle into which the port symbols are snapped to _red flag b pb flag b_amber pS flag b_green r l sequence_lights i flag ped_request po fg ped_red flag ped_grant lt 1 pag ped_green t ee ee a ie flag a_red a_amber flag a_green lt flag Figure 5 An actor component specification 3 2 Ports A port defines the direction name class and datatype of a communication channel in actor component interface A communi
19. cation consists normally of associated data value and event An actor component can respond to an event in a communication channel in its interface A data associated with communication can be used as a basis of calculations inside component A component can read the data associated with communication channel when the component is activated by an event but a change in data without event cannot trigger a response The event that activated the component need not always be in the same communication channel from which the data is read ReaGeniX Programmer v 2 0 Depending on the event time behaviour of data in communication channel the basic communication mechanisms are divided into basic classes or connector types e Time Discrete communication e Time Continuous communication e Store e Control 3 2 1 Time Discrete Communication A discrete communication passes messages from the sender to the receiver The data is passed if the receiver component is waiting for the data at the moment of transmission otherwise the data is lost The message and the accompanying event are not buffered in any way The sender is not affected by the successful reception or the loss of data The datatype of data value is specified when declaring a port of type discrete communication Value W Event V v y 4 Time A special case of discrete communication is a signal it has no data value associated to the event Value Event Time 3 2 2 Time Continuous
20. d local data the ReaGeniX Programmer cannot currently check if the operation is valid for the object An operation using value field of User s Manual 26 signal type port results in C compiler error field pv is not defined Similarly an operation for event field for store results in C compiler error field ev is not defined 5 3 1 Initial transition A state machine must have at least one initial transition An initial transition defines the first operation and the first current state of a state machine The initial transition has no condition if it is the only one If the start operation should depend on some condition one of the initial transitions must have an else condition and the others have when conditions The evaluation order is the same as in a transitory state 5 3 2 Transition condition A condition defines when a transition leaving the current state is fired C programming language with macro extensions is used in transition conditions is possible to call external functions from an action if the header file for C module is included into the diagram on port_name An on condition is used to receive a discrete communication or a signal The value of the received discrete communication is available in this transition only when boolean_expression A when condition is used to wait some condition to hold C syntax is used for the expression The expression can test values of arriving continuous flows e g fla
21. e initial values for all using one array type initializer 6 4 2 Connections to indexed ports When connecting indexed ports the corresponding selector text is of form portname index_expression datatype Note e An index expression may be constant or may contain one or more index variables e Total number of connections is the product of ranges of different index variables found in expressions 6 4 3 Connections to indexed subcomponents When a connection is connected to an indexed subcomponent the index of the subcomponent must be specified in the beginning of the selector text Component_index _ expression name type Note User s Manual 38 e A component index expression may be constant or may contain one or more index variables e tis possible to connect indexed connections to indexed subcomponents e The range of the index expression does not need to cover all the bubble instances Other selectors with the same instance name but different index expressions may cover the gaps However it is important that each connection is connected exactly once to each bubble instance Examples O alarm j flag Row Column new_character char Machine N_SPINNERS Spinner thread speed ReaGeniX Programmer v 2 0 39 6 4 4 What is really connected to which and how A distinct connection is created for each combination of the possible values of the index variables found in the index expressions at the selectors at bot
22. eal time programs differ from the sequential programs and therefore the design and testing of such software require special languages and tools to avoid reliability problems 1 2 Purpose of manual The purpose of this manual is to give detailed instructions how to create real time applications by using ReaGeniX Modelling Language and Visual Programmer The ReaGenix Modelling Language RML is aimed for modelling and implementation of real time systems The models may range from abstract prototypes to the implementation The ReaGenixX Visual Programmer is a tool for compiling of such models to the executable prototypes or to the final production code The ReaGeniX Modelling Language is a visual language which is based on communicating hierarchical state machines Each state machine has a well defined interface describing a component which can be freely instantiated in higher level components i e context free components The ReaGenixX Visual Programmer translates the RML components to C C program modules The computation and data types used in RML are written in C C using a predefined macro library and they are used as such in the produced code The best performance of the code produced by the ReaGeniX Visual Programmer can be achieved by the use of ReaGOS real time operating system However the produced code is independent of operating systems and therefore it can be used with the most real time operating systems 1 3 Scope of Ap
23. ed timers and indexed continuous connections Examples when timeout delay path_index when v drive_enabled i amp amp v drive_out i An indexed transition is enabled if there is an integer value which is within the range and which makes the transition condition to hold When the transition is fired the index variable is assigned a value which makes the condition to hold If there are several possible index values the choice is not determined by the ReaGenixX language ReaGeniX Programmer v 2 0 31 6 ARCHITECTURE DIAGRAM An architecture diagram combines concurrent subsystems subcomponents for now on to larger and more capable systems signal eal gt flag b_red aT flag b_amber control_traffic_lights pb OPS gt flag b_green I l q flag ped_wait l flag a_red flag ped_red l flag a_amber flag Pe ps 9 a_green l ge ete rien ie control_traffic_lights us us C1 register_pedestrian_request ed_wait e include xtlight2 h include xtlight3 h Figure 11 An Architecture Diagram User s Manual 32 Because a component type of a subcomponent can be described also with an architecture diagram a ReaGeniX model is a hierarchical description of the system The hierarchy of architecture diagrams may be arbitrarily deep Figure 12 Actually the depth may be limited by the C compiler used to compile the results of the ReaGenixX Visual Programmer ComponentClass Figure 12 C
24. er kinds of inter process communication are not recommended global variables OS calls etc To follow the subsequent walkthrough example you may take paper copies of the diagrams and use paper clips on the diagrams to show the current states and flags being high Lets consider the case when green is shown to the b direction Moreover nobody has pressed the button since last green for pedestrians The flag b_green is high true and all the others are down false Now a pedestrian presses a button Let s assume that pressing the button down rather than releasing it causes the signal ped_button to be injected to the system From the architecture diagram in the figure 19 the signal goes to the bubble register_pedestrian_request User s Manual 50 The state machine register_pedestrian_request in the Figure 18 is in the state no_pedestrians since button has not yet been pressed Now the signal ped_button triggers the transition to ped_request_pending The transition lits the wait light and raises the ped_request flag The state machine sequence_lights in Figure 17 is showing green light to b direction in the state green_for_b It does not immediately respond to the new value of the flag The machine sequence_lights steps thru the light sequence controlled by the timer until it has shown enough all reds in the state all_red_again When the time is out and the machine leaves that state a decision is made depending on the value of t
25. gs and time outs of timers only When testing continuous or discrete flow a v portname must be used to access the value field in expression when v portname See section 25 Transition for how to refer to values of the ports and local state variables in expressions on portname or_on portname The above construct is used for waiting any of several signals No discrimination between signals is possible on portname and_when boolean_expression The above construct allows extra conditions for arrival of data There are no limitations for the expression The expression can test the value of the arriving data 5 3 2 1 Transition condition from a transitory state ReaGeniX Programmer v 2 0 27 when boolean_expression A when condition allows branching to this transition if the expression is true C syntax is used for the expression There are no limitations for the expression else else is used to mark exactly one default transition from a transitory state This branch is taken if none of the conditions hold A condition is not needed if there is only one transition leaving a transitory state 5 3 3 Transition action An action defines the computation and output of the transition C programming language with macro extensions is used in actions It is possible to call external functions from an action if the header file for C module is included into the diagram An action is not allowed to wait anything Actio
26. h ends of a connection selector connector selector The same index variable means the same value in each of the expressions The values of different index variables are independent ActorClass b ifare switch farefifare a count_fare Tawi Se lt fare 1 2 L fare 2 fare 3 lt index ifare lt 4 sora arelifare count_fare aie switch l signal ti lt i l f signal 21 ae ea N ae ee i pare switches lt J l l signal t4 4 eens J Figure 16 Examples of indexing In Figure 16 the component specifications are shown at the bottom First there is a connection from a to b where and indexed port is connected to an indexed component instance Each element of the fare port is connected to an non indexed port t of the indexed component b with same index as the User s Manual 40 port index E g fare 0 of ais connected to t of b 0 fare 1 of a is connected to t of b 1 and so on Here the index if are in both selectors of the connection binds the index expressions together In connections from a to c the indexed port is connected into separate ports in component c ReaGeniX Programmer v 2 0 41 7 INITIALISING SYSTEM VARIABLES The purpose of initial values is to make the initial state of a system deterministic Each store and continuous connection must be given explicit or implicit initial value or it must be explicitly left uninitialized 7 1 explicit initialisation
27. he driver it is sent to the driver Unprocessed requests are stored in the internal store rsave The selection of the next request is simple but relatively unfair in this example It is however easy to modify the solution for more sophisticated resource scheduling algorithm rqt request_t client1 rsp response_t rqt_out rqt request_t V mx1 LP e mass_ multiplexer 4 SP_0ut rspresponse_t Al driver 7 rsp response_t client2 rqt request_t Figure 27 Examples of Indexed Connections This diagram connects two clients to mass storage driver via a mass storage multiplexer A client sends requests via the rqt flow connector and accepts responses via the rsp connector The request and the response flows of a client are connected to the mass storage multiplexer using same index values inthe rqt_in and rsp_out connectors of the multiplexer ReaGeniX Programmer v 2 0 61 9 APPENDIX 1 9 1 ReaGeniX components for Prosa tool The following files are common with the Prosa version Roxpathreagenix scy ReaGenix licence file Roxpath include ReaGenix C header files including reactime h RoxpathiSupport ReaGeniX support C modules including test c and main c RgoxpathiExamples Some modelling examples with TurboC 2 0 project and configuration files Examples of generated code after macro preprosessing are included The Prosa version 1 4 of ReaGenixX generator including ReaGOS is in directory Roxpa
28. he flag ped_request Because the flag is high the path to the state green_for_pedestrians is taken ped_green is lit and ped_grant is raised The state machine register_pedestrian_request is still in the state ped_request_pending lt responds immediately to raising of the ped_grant by dropping the ped_request and turning off the wait light New pedestrian requests cannot be registered until red is lit for pedestrians again The light sequence continues controlled only by the timer until the sequence_lights is leaving the state all_red_again again ReaGeniX Programmer v 2 0 51 8 3 Component instancing Ping Pong ee z discrete c_in integer discrete c_out integer l pong signal done D BE a eee l pong when ov c gt 0 7 p i on c_in gt i gt c v c_in send c_out ov c 1 else l gt S done store c integer Figure 20 Pong In Figure 20 is presented a transition diagram of subcomponent pong Its struction is very simple Pong gets in integer value called c_in and if c_in is more than zero it sends out integer value called c_out but if c_in is zero it sends signal called done User s Manual 52 discrete count integer L pingpong r odd signal even gt l l l pingpong c_out integer c_in integer gt C gt c_in integer c_out integer g oN include pong h ran oO OD i i c gt Q O Figure 21 A Pingpong Figure 21 show
29. i give_time_to pass Figure 4 Automatic door control diagram for ReaGeniX In the shopdoor component specification there is one input port a triangle pointing inwards a flag called somebody which tells whether somebody is User s Manual 14 seen near to the door A flag may have Boolean values true and false Here it is assumed that the value false means that nobody is seen and the value true means that somebody is seen To avoid conflicts with standard Windows header files ReaGeniX uses names R_boolean R_false and R_true for Boolean type and values There is also one output port a triangle pointing outwards a flag called keep_open It is used to command the physical door either open or closed Here it is assumed that the value R_false commands the door to close or keep closed and the value R_t rue commands the door to open or keep open One timer trail_timer is declared A timer is a variable whose value is automatically decrement in pace of real time When the door controller is enabled switched on the initial transition is fired and its action the statement send keep_open R_false is executed The statement sends the value R_false to the output port to keep the door initially closed Therefore the controller is first in the state closed From this state only one transition is possible If somebody appears in the detection range the condition when v somebody causes the transition to fire A person in
30. ile are 1 The directory where the Visio model to be generated is 2 Page name of generated diagram used for file names Roxpath Visio5 gener vis2rgx exe a MSDOS executable converting visio format diagram information into ReaGenix rgx format run by rgxbat exe Rgoxpath Visio5 gener rgx2c exe a MSDOS executable generating C code from ReaGenixX rgx format run by rgxbat exe VisiopathSolutions Reagenix reagenix hlp a shape help for reagenix vss ReaGeniX Programmer v 2 0 2 GETTING STARTED 2 1 Modelling an Automatic Door Controller The problem You should design an automatic controller for a market door You have a door machinery and a radar The door machinery is controlled by a two state electrical relay a flag for now on If the flag is high the servo drives the door open If the flag is low the servo drives the door closed The radar output is also a flag If the radar senses something within its range the output flag is high otherwise low If the radar senses something the door must be driven open The door is allowed to close after 3 seconds has elapsed after the last indication of something within the range of the radar A state machine is the solution for a simple sequence control problem like this State machines are the basic building blocks of a ReaGeniX system description A state machine reacts to events with computation control output and updating internal and external data An
31. ime Continuous Communication 3 2 3 Shared Data Store 3 2 4 Control Enable 3 3 Port symbol 3 4 Component body APPLICATION DESCRIPTIONS BY REAGENIX STATE TRANSITION DIAGRAM User s Manual 15 16 16 16 17 17 18 18 19 21 22 23 5 1 5 2 5 3 5 4 Local Declarations State 5 2 1 Transition node Transition 5 3 1 Initial transition 5 3 2 Transition condition 5 3 3 Transition action Indexing in state transition diagrams 5 4 1 Operations on indexed objects 5 4 2 Indexed transition 6 ARCHITECTURE DIAGRAM 6 1 6 2 6 3 6 4 Subcomponents 6 1 1 Selector Connections Stores 6 3 1 Store declaration 6 3 2 Accessing a store 6 3 3 Scope of names Indexing in architecture diagrams 6 4 1 Indexed subcomponents 6 4 2 Connections to indexed ports 6 4 3 Connections to indexed subcomponents 6 4 4 What is really connected to which and how 7 INITIALISING SYSTEM VARIABLES ReaGeniX Programmer v 2 0 24 24 24 25 26 26 27 29 29 30 31 32 33 34 34 34 35 36 36 37 37 37 39 41 7 1 explicit initialisation 7 2 implicit initialisation 7 3 explicit uninitialisation 8 MODELLING EXAMPLES 8 1 A simple test environment 8 2 A Compound System a Traffic Light Controller 8 3 Component instancing Ping Pong 8 4 Data Processing a Weighing System 8 5 Connecting to Real Time and Real World 8 6 Indexing A Mass Storage Multiplexer 9 AP
32. inuous communication and control carry an event It means that a state machine can immediately react to e change of the value of a continuous input e new data even if the same value in a discrete input e enabling via an control Moreover a ReaGeniX component can react to a timeout using a timer concept A change of the value of a store cannot be immediately reacted to The value of a store can be tested in a reaction to some event e g to a timeout of a timer However high frequency polling of a store results computationally heavy implementation and should be used with discretion ReaGeniX Programmer v 2 0 23 5 STATE TRANSITION DIAGRAM A state transition diagram defines a state machine State machine reacts to events with computation control output and updating internal and external data An event may be considered something happening outside of the system e g closing a door or elapsing of a predetermined waiting time However a state machine sees an event as arrival of data a signal or firing of an internal timer and it can react to them all a gt flag eee shopdoor peer shopdoor timer timer I keep_open i when v somebody gt keep open when timeout timer gt I ksep_open people_detected when v somebody when v somebody 25 Des ov timer 3 Second give_time_to pass Figure 8 A State Transition Diagram User s Manual 24 A state trans
33. ists of ports with the same connector type and datatype who are separated by port index An indexed port has a separate event and data value for each index Note that a port with C array type has only one event index name must be declared with textual declaration symbol see ch 0 before it can be used in port declarations in a diagram e g index I lt ntrans defines index I so that its range is 0 ntrans 1 The syntax of an index definition clause is index_variable lt repeat_count where index_variable is a legal C variable name and repeat_count is a constant expression that can be evaluated during C compilation The repeat_count may contain symbols defined in an included header file The definition makes the lower bound of the index_variable to be 0 and the upper bound to be repeat_count 1 inclusive ReaGeniX Programmer v 2 0 21 3 4 Component body An actor component body symbol is used to describe the implementation of a component type The actor body symbol is used to draw a border around a state transition or an architecture diagram in ReaGeniX language ActorClass Figure 7 An actor body symbol In ReaGeniX diagrams the component type symbol is used to represent the interface of component for connections to the outside world The ReaGeniX state transition diagrams and architecture diagrams are drawn inside the component body symbol The name of component type is written in text custom property of actor body
34. ition diagram consists of states transitions timers and local stores 5 1 Local Declarations A textual declaration of form store storename datatype initializer declares a local state variable in state transition diagram Each time the state machine is reset the initializer value is assigned to the variable The initializer can be omitted if the type has a default initializer or the type is explicitly uninitialized See section initial values A textual declaration of form timer timername initializer declares a timer A timer is initialised like a store The default initializer is 0 A timer is almost like a store of type duration whose value decreases with passing of time A timer produces an event when its value reaches zero Value Event Time 5 2 State A state is used to define waiting In a state a state machine can wait for an external event or a condition to hold The different states of a state machine represent different ways to react to the same kind of events States are drawn as boxes in a state transition diagram The states are given descriptive C names If a state machine is enabled one of the states is called current state 5 2 1 Transition node Transitory states are used if a transition should branch to several states based on Boolean conditions or several transitions should join or a combination of both is needed ReaGeniX Programmer v 2 0 25 else gt i r b_amber EErEE g
35. ng environment It should contain the line include shopdoor h MODULE T must include the header file of the main module of the subsystem to be tested Let s use rgxpath for now on to denote the path to the ReaGeniX compiler and the associated files e g C REAGENIX Compile the following files SHOPDOOR C rgxpath SUPPORT TEST C Those files include macro library REACTIME H and a parameter file REACTIME P both of which are found in rgxpath INCLUDE Link the results to file SHOPDOOR EXE No special run time libraries are needed For Turbo C 2 01 the following procedure is applicable 1 Check that the project file SHOPDOOR P20 contains the following XDOORCTR C rgxpath SUPPORT TEST C ReaGeniX Programmer v 2 0 43 2 Start Turbo C TC XDOORCTR 3 Select Options Directories Include directories Append rgxpath INCLUDE to the end of include directory list Using cursor keys first retains the original list 4 Select Project Project name Select XDOORCTR PRJ as the project file 5 Select Project Auto dependencies On 6 Select Options Save options for further use Save options to local directory in order not to interfere other activities 7 Select Run or Ctrl F9 Start the tester with command SHOPDOOR Not needed if you started it directly from Turbo C Now the display should look like this keep_open low shop_door disabled total
36. ns with some kind of waiting OS calls for delays receiving messages reading data from devices waiting some condition to change in a tight loop are erroneous Such actions cause the whole system to occasionally halt permanently or temporarily All waiting must be organised to states OS interactions should be organised to task main routines calling the ReaGenixX generated modules Following C macros are used to access the values of ports and local stores and timers User s Manual 28 Table 1 Available access macros and their definitions Available access macros v portname Access to the value field of a port v portname index Access to an element of an array type value field v portname member_name Access to a member of a structure type value field v portname method_name Access to a method of a C object type value field amp v portname Access to a pointer to the value field ov store timer name Access to a value field of local data store or timer Accessing elements and members of local data can be done with ov as in V timeout timername Access to a timer It can be used also in actions it has the value R_t rue if the time assigned to the timer has been elapsed otherwise R_false ReaGeniX Programmer v 2 0 29 Table 2 Available output macros and their definitions Available output macros send portname expression Sending the value of the expression to a port
37. nteger timer timer on product_code gt when timeout timer ov pid v product_code gt ov timer 10 second ening r weighing when v stable and v weight gt v pp ov pid minimum gt weighing v label weight v weight v label price v weight v pp ov pid price vi label name v pp ov pid name j emit label on printer _ ready ov timer 7 second a on when timeout timer printer_jam Fa r printer_jam printer_ jammed Figure 22 Label Printing Logic ReaGeniX Programmer v 2 0 55 The label printing logic of an automatic grocery store scale is presented in Figure 22 The operation is launced upon arrival of product code data The product code is stored in a local variable pid for further use using statement ov pid v product_code If the weight reading stabilizes within 10 seconds the price is computed using statement v label price v weight v pp ov pid price and the label data is sent for printing The complex expression above boldface selects the member price from the pid th element of the array pp In above example the label structure is filled member by member When the whole data structure is completed it is sent by emit label If you forget to acknowledge printing by the print_ready signal the system will go to the printer_jammed state and requires the reset signal 8 5 Connecting to Real Time and Real World This example i
38. omponent hierarchy in ReaGeniX models 6 1 Subcomponents The label of a subcomponent determines the names of the subcomponent instance and the component type The name of the subcomponent instance is used to refer to the specific component instance The name of the component type refers to the declaration of the subcomponent The name of a component instance is used e g by the other components enabling or disabling the component or by a testing environment to identify the location of interest ReaGeniX Programmer v 2 0 33 The name of the component type is the name of the actor class the data type or the object class ped_button ped_request C1 ped_wait register_pedestrian_request ped _grant Figure 13 An actor component instance with selectors The names of the subcomponent instance and the subcomponent type can be different especially in following cases e Library components are applied e There are several instances of the same component type e There is a conceptual difference between the inside mechanics and the application of the component The syntax used if the names of the instance and type are different is instance_name component_type Examples keep_fuel_level PID_control remove_ripples 728 monitor_pre_heater_current monitor_current If the names of the subcomponent instance and the subcomponent type are the same the simple syntax is used component_name NOTE In ReaGeniX for Visio you
39. plication The ReaGeniX Visual Programmer can be used to produce code for hard real time and embedded computer systems The application areas include but are User s Manual not limited to control measurement sequence control process simulation and data communications ReaGenixX Visual Programmer can be used in quick prototyping demonstration validation of specifications and intermediate designs and final implementation 1 4 Components of ReaGeniX Visual Programmer ReaGeniX Visual Programmer consists of following parts Visiopath Solutions Reagenix reagenix vss a Visio stencil for ReaGeniX Modelling Language Visiopath Solutions Reagenix Rgx3w vst or Rgx4h vst templates which use the reagenix vss Visiopath Solutions Reagenix reagenix exe a Visio add on which reads the diagram information from Visio tool using OLE2 interface into pagename vis file The ReaGenix add on should reside in one of Visi add on paths see Installation Guide for editing visiopath System visio ini which calls rgxbat bat after conversion Roxpath Visio5 gener rgxmsg exe a Windows executable for viewing the ReaGeniX warnings and error messages fille pagename err Opens the diagram page in Visio and shows the object The error message is referring by selecting it Works best if to be assosiated in Windows with err files Roxpath Visio5 gener rgxbat exe a Windows executable file called by reagenix exe add on Parameters for batch f
40. quest I ped_request r ped_wait ped_wait ped_request_pending Figure 18 A Pedestrian Button Registration Registration of pedestrian passing requests is presented in Figure 18 A signal ped_button is received every time a pedestrian presses a request button The flag ped_grant is high when the pedestrians are allowed to pass The logic is arranged so that ped_button raises the request flag ped_request and User s Manual 48 lights the wait light by raising ped_wait The wait light is lit until the pedestrians are let to pass If the button is pressed while there is a green light for pedestrians a virtual flash of the wait light takes place However the flash does not take real time it cannot be seen and it does not stress the power electronics or the light bulb I flag b_red gt S flag b_amber flag b_green gt signal ped butong control_traffic_lights I l flag ped_wait l q l flag a_red flag ped_red l flag a_amber flag ped_oreen Jq gt flag a_green l Pe ire control_traffic_lights AS dS C1 include xtlight2 h include xtlight3 h Figure 19 A Traffic Light Controller ReaGeniX Programmer v 2 0 49 Figure 19 shows an architecture diagram It combines the state machines and makes them a system a system is just a new component type As in state transition diagrams the diagram needs a component body symbol and component specification symbol for the new component type defined
41. s an architecture diagram Pingpong In the diagram there are two subcomponents named ping pong and pong The pong could be also named pong pong because the first pong means a name of component and the pong after colon a type of component We can see that subcomponents have same names of inputs and outputs Both subcomponents have also samekind inside structure and same operations So both ping pong and pong are a same type A component named ping is same type as pong so it points to the type of pong If components are a same type there is no use to make two samekind pictures by different names The best way is point to the type of component as in the Pingpong diagram in subcomponents name ping pong have done 8 4 Data Processing a Weighing System In data processing operations data is received from discrete and continuous communication inputs accessed from stores new data is computed from ReaGeniX Programmer v 2 0 53 previous values and the results are stored to stores or sent via outputs for further processing Data processing is frequently initiated by data arriving via a discrete communication A discrete communication passes messages which can contain a data value The receiver should either use the value immediately or store it for further use Each message is considered meaningful even if it contains the same value as the previous one The arrival of data from a discrete communication is detected by an macro on portname
42. s specific to IBM style PC and MS DOS environments and Turbo Borland C run time library Other environments may require modifications to the example and the support files The simplest way to connect a system generated by the ReaGenixX is to use a polling non pre emptive real time environment main c The main c is a minimum environment which provides time for timers and an Idle signal for polling peripherial devices User s Manual 56 i signal ie input cS discrete ascii_in char discrete extend_in char D gt l include conio h Input store c char else when ov ov 0 mee send ascii_in ov c if kphit send extend_in getch Figure 23 Real Time Keyboard Input In Figure 23 you can see how the keyboard input buffer is polled each time the processor becomes idle If a key has been hit a BIOS interrupt handler has stored the character to the keyboard input buffer If there is a character in the keyboard input buffer the kbhit returns 1 nonzero and the getch returns the character code For non ASCII keys e g ALT codes and function keys a sequence zero function code is returned ReaGeniX Programmer v 2 0 57 signal dle output discrete outstring i Ai oe output store buffer s80 store i int 0 store last RGX_time on outstring rae strncpy ov buffer v outstring sizeof ov buffer ov i 0 ov buffer sizeof ov buffer sizeof ov buffer 0 1
43. s transferred to the give_time_to_pass state keep_open is still high Let the time pass by giving g It advances the simulated time until the next timeout occurs in the system keep_open low shop_door closed total time 3 000000 s e exit test c configure g GO i show inputs s show states o show outputs r RESET t time lapse 1 somebody low choice It required 3 seconds before the system started closing the door The person had time enough to pull his hers heels from the door opening Now we are at the initial state again Hit e when you want to exit As an exercise you could try to add a signal close door button into model Pressing the button closes the door immediately if there is the door is clear User s Manual 46 8 2 A Compound System a Traffic Light Controller flag ped_request flag a red flag ped_grant 4 I flag b_red I flag ped_red D flag b_amber flag ped loreen lt 4 gt flag b_green gt r a_red r b_red I b_amber l b_green r ped_red l ped_green I ped_grant l a_green a_amber ov timer 10 Second initially_all_red when timeout timer gt r a_amber ov timer 3 Second when timeout timer 1 gt I a_red l a_amber z r a_green z ov timer 3 Second green _for_a when timeout timer gt r a_amber l a_green ov timer 5 Second when timeout timer gt I a_amber r a_red ov timer
44. similar to the interface between the multiplexer and the driver so that it is possible without modifications to connect a client to the driver either directly or via the multiplexer ReaGeniX Programmer v 2 0 59 discrete rainfrequest tp mass_storage_ discrete rqt_out request_t discrete rsp_in response_tin multiplexer Soe rsp_out i response_t index i lt request_n include tyres MASS storage_multiplexer store rsava i request store pending i boolean for_each i ov pending i false end_for_each i on rqt_in i gt ov cur_i i ov rsavefi v rqt_in i ov pending i true on rsp_in gt s send rsp_out ov cur_i v rsp_in Ox ease ae eon we lt ov pending ov cur_i false ov cur_i 1 for_each i if ov pending i send rqt_out ov rsave ov cur_i Ai on rqtin i end_for_each i gt ov rsave i v rqt_in i ov pending i true Figure 26 The Mass Storage Multiplexer The multiplexer accepts requests from the indexed dataflow rqt_in It sends the response to the indexed dataflow rsp_out with the same index value If the mass storage driver is idle the multiplexer passes the request immediately to rqt_out Responses from the driver arrive from the dataflow rsp_in The multiplexer immediately passes the response to the rsp_out with the proper index User s Manual 60 If there is an unprocessed request when the response arrives from t
45. subcomponent a selector connected to store is used A selector expression is an index expression or a name of a member of a structure or a combination of several of both kinds The member name should be preceded with a The selector may be followed by the type Name ActorClass name1 int name2 int Name gt structtype Figure 15 Accessing a part of a store User s Manual 36 Examples i position iservo position variance float corrections x y bias 6 3 3 Scope of names A name of actor or store has a diagram wide scope A name at a selector connected to component body symbol has a diagram wide scope A name in a subcomponent selector has a scope limited to the interface of the subcomponent instance There might be selectors of the same name connected to different component instances but having nothing else common but the name Examples fuel_level float EMPTY_LEVEL front_positioning positioning_command 6 4 Indexing in architecture diagrams Indexing a component is a shorthand notation to specify a multitude of similar objects An indexed item behaves like several independent items Special index variables are needed for indexing Any component except a store can be made indexed Indexing is a powerful tool to create complicated connections between components The primary reasons to use indexing are e to avoid drawing many similar objects e to get clearer picture e to make
46. t Q ov timer 1 Second 3 when timeout timer gt all_red_again else all_red_once_more when timeout timer gt _ Wwhen timeout timer gt _ when v ped_request gt 0 r ped_red ped_green ped_grant ped_red r ped_green r ped_grant ov timer 10 Second 2 ov timer 10 Second gt green_for_pedestrians Figure 9 Example of transitory states No waiting happens in a transitory state One of the transitions leaving a transitory state is the default transition The default transition is executed if no other transition can be immediately executed A transitory state has no name The conditions leaving from a transitory state are evaluated in arbitrary order not in random order The first transition with a satisfied condition is executed If none holds the else branch is executed 5 3 Transition The transitions describe the responses of a state machine A transition leading from the current state may be fired if the condition of the transition holds When a transition is fired the action of the transition is executed and the state which the transition is leading to becomes the new current state The transitions between states are drawn as arrows annotated with text The syntax of text is condition gt action If the gt is missing the whole text is assumed describe an action NOTE Because C macros are used in transition condition and actions for accessing the ports an
47. th Prosa User s Manual
48. the design easier to reconfigure and re use e copy paste renaming increases the size of specification and the code and is a source of possible errors Without indexing it would be very impractical to specify tens of parallel independent processes with same behavioural description Indexed ports are useful in following situations ReaGeniX Programmer v 2 0 37 e Requests and responses to and from a server component This makes it possible for the server to use port indexes as client numbers The server receives indexed ports using indexed transitions e Data can be distributed to or collected from the elements of an indexed component e Commands and reports from and to a central controller This makes it possible for the controller to use port indexes to keep track on subsystems 6 4 1 Indexed subcomponents To define an indexed subcomponent the text property of component is of format name index _variable component_type Examples maintain_display Row Column maintain_reactor_temperature Reactor_Id temp_controller Indexed components are used when many similar but independent controls or monitoring processes are needed It is easy to connect processes with different indexes to different ports Moreover it is easy to give each process a different set of parameters To give different set of parameters to processes with different index values you can connect a different element of a C array store to each process Giv
49. time 0 000000 s e exit test c configure g GO i show inputs s show states o show outputs r RESET t time lapse 1 somebody low choice Let s start and reset the system with command r The system responds by resetting the output keep_open to low state and going to the closed state keep_open low User s Manual 44 shop_door closed total time 0 000000 s e exit test c configure g GO show inputs s show states o show outputs r RESET t time lapse 1 somebody low choice Simulate a person entering in the detection range Toggle flag somebody by typing 1 The response should look like this keep_open high shop_door people_detected total time 0 000000 s e exit test c configure g GO i show inputs s show states o show outputs rv RESET t time lapse 1 somebody high choice You can see the new value of the input flag and that the system has initiated opening the door by driving the output flag keep_open to high state The system is now in the people_detected state Let s assume that the person enters the door and goes out of the detection range Drop somebody by giving 1 again keep_open high shop_door give_time_to_pass ReaGeniX Programmer v 2 0 45 total time 0 000000 s e exit test c configure g GO i show inputs s show states o show outputs r RESET t time lapse 1 somebody low choice The system i
Download Pdf Manuals
Related Search
Related Contents
Magnetometer KOSVAHA-USB User Manual Impex PWR 8 User's Manual Identificazione dei componenti – ThermoLazer ProMelt BlackBerry Mobile Voice System - BlackBerry MVS Client InfraSolution® Installations - Swisstherm AG User Manual Model 187 & 189 ROMÂNĂ ҚАЗАҚ РУССКИЙ DEUTSCH ENGLISH Copyright © All rights reserved.
Failed to retrieve file