summaryrefslogtreecommitdiff
path: root/host/simu/model
diff options
context:
space:
mode:
authorNicolas Schodet2012-04-17 23:56:55 +0200
committerNicolas Schodet2012-04-18 00:15:39 +0200
commit099e6a5779192fb42fa4713b100411df0e3e34ce (patch)
tree8cbba0297fee371045f9e5dcc0a1274533ccb540 /host/simu/model
parent8fe27e112710a66b3928151563437eb3eb652d4a (diff)
host/simu/mode: add pneumatic cylinder limit switch simulation
Diffstat (limited to 'host/simu/model')
-rw-r--r--host/simu/model/pneumatic_cylinder.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/host/simu/model/pneumatic_cylinder.py b/host/simu/model/pneumatic_cylinder.py
index 05ee0cc3..e25b1866 100644
--- a/host/simu/model/pneumatic_cylinder.py
+++ b/host/simu/model/pneumatic_cylinder.py
@@ -27,19 +27,22 @@ from utils.observable import Observable
class PneumaticCylinder (Observable):
def __init__ (self, link_in, link_out, scheduler,
- pos_in, pos_out, speed_in, speed_out, init_pos):
+ pos_in, pos_out, speed_in, speed_out, init_pos,
+ switch_in = None, switch_out = None):
"""Cylinder parameters:
- link_in, link_out: output conected to valve, if one is none, use
simple effect.
- pos_in, pos_out: maximum position in each direction (minimum and
maximum length) (mm).
- speed_in, speed_out: linear speed (mm/s).
- - init_pos: initial position (mm)."""
+ - init_pos: initial position (mm).
+ - switch_in, switch_out: limit switch models if present."""
Observable.__init__ (self)
self.link_in, self.link_out = link_in, link_out
self.scheduler = scheduler
self.pos_in, self.pos_out = pos_in, pos_out
self.speed_in, self.speed_out = speed_in, speed_out
+ self.switch_in, self.switch_out = switch_in, switch_out
self.last_update = self.scheduler.date
self.speed = 0
self.pos = init_pos
@@ -88,4 +91,10 @@ class PneumaticCylinder (Observable):
self.pos = self.pos_out
if old_pos != self.pos:
self.notify ()
+ if self.switch_in:
+ self.switch_in.state = self.pos == self.pos_in
+ self.switch_in.notify ()
+ if self.switch_out:
+ self.switch_out.state = self.pos == self.pos_out
+ self.switch_out.notify ()