| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- #!/usr/bin/python3
- # This file was automatically generated from drawio2cbd with the command:
- # /home/red/git/DrawioConvert/__main__.py StateEventLocation.xml -av -F CBD -e Experiment -t 100 -E delta=0.1
- from CBD.CBD import *
- from CBD.lib.std import *
- from CBD.lib.interface.plotting import SignalPlotBlock
- DELTA_T = 0.1
- class Experiment(CBD):
- def __init__(self, block_name, axis1=(None), axis2=(None)):
- super().__init__(block_name, input_ports=[], output_ports=[])
- # Create the Blocks
- self.addBlock(StateEventLocationBlock("sel"))
- self.addBlock(SignalPlotBlock("eventplot", axes=(axis1), type=("plot"), xlim=(SignalPlotBlock.full_domain), ylim=(SignalPlotBlock.full_domain)))
- self.addBlock(SignalPlotBlock("valueplot", axes=(axis2), type=("plot"), xlim=(SignalPlotBlock.full_domain), ylim=(SignalPlotBlock.full_domain)))
- self.addBlock(AdderBlock("sum"))
- self.addBlock(ConstantBlock("threshold", value=(-50)))
- self.addBlock(TimeBlock("time"))
- # Create the Connections
- self.addConnection("sel", "eventplot", output_port_name='OUT1', input_port_name='IN1')
- self.addConnection("sum", "valueplot", output_port_name='OUT1', input_port_name='IN1')
- self.addConnection("sum", "sel", output_port_name='OUT1', input_port_name='IN1')
- self.addConnection("threshold", "sum", output_port_name='OUT1', input_port_name='IN1')
- self.addConnection("time", "sum", output_port_name='OUT1', input_port_name='IN2')
- class StateEventLocationBlock(CBD):
- """
- Outputs '1' if the IN1 signal passes through zero at the current point in time (or in between the previous and the current point in time), otherwise it outputs '0'.
- """
- def __init__(self, block_name):
- super().__init__(block_name, input_ports=['IN1'], output_ports=['OUT1'])
- # Create the Blocks
- self.addBlock(ConstantBlock("zero", value=(0)))
- self.addBlock(LessThanBlock("lt"))
- self.addBlock(LessThanOrEqualsBlock("lte"))
- self.addBlock(DelayBlock("delay"))
- self.addBlock(AndBlock("and", numberOfInputs=(2)))
- # Create the Connections
- self.addConnection("IN1", "lte", input_port_name='IN2')
- self.addConnection("IN1", "delay", input_port_name='IN1')
- self.addConnection("IN1", "delay", input_port_name='IC')
- self.addConnection("zero", "lt", output_port_name='OUT1', input_port_name='IN2')
- self.addConnection("zero", "lte", output_port_name='OUT1', input_port_name='IN1')
- self.addConnection("delay", "lt", output_port_name='OUT1', input_port_name='IN1')
- self.addConnection("lt", "and", output_port_name='OUT1', input_port_name='IN1')
- self.addConnection("lte", "and", output_port_name='OUT1', input_port_name='IN2')
- self.addConnection("and", "OUT1", output_port_name='OUT1')
|