From 099e6a5779192fb42fa4713b100411df0e3e34ce Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Tue, 17 Apr 2012 23:56:55 +0200 Subject: host/simu/mode: add pneumatic cylinder limit switch simulation --- host/simu/model/pneumatic_cylinder.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'host/simu') 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 () -- cgit v1.2.3