On Wednesday, 23 April 2014 18:43, quoth Florian Pose: > ecrt_domain_state() is the one and only way to determine, if the data > are valid. If you want to monitor different slave groups, you have to > place them in several domains.
Something that I've observed with a particular slave (perhaps it's technically the fault of the slave) is that if only inputs are mapped to it, then it will start producing EC_WC_COMPLETE as soon as the slave hits SAFEOP, and it will produce some input data -- however it stops updating the input data during the subsequent transition from SAFEOP to OP. (And then resumes as normal.) Similarly if I map both inputs and outputs then it will start reading EC_WC_COMPLETE *just slightly* before it acknowledges the transition to OP, and there seems to be a small window in there where it's not updating the input data. I guess that's what the PDO Toggle is for, though. > If you have a dynamic topology, you should make use of the alias > addressing scheme. Can aliases be assigned automatically? I didn't see any API for that. But I was mostly thinking of the case where the network is powered down on app startup, and then powered up later. Different slaves will complete boot at different times. In a simple chain topology this will just result in one or more devices appearing at the end of the ring, but with cable redundancy or with tee/star branches this could result in odd changes to the ring positions. Ideally what I really want is to (a) identify devices by their serial, without having to assign some other id to them, and (b) cope gracefully with any particular slave being offline (either due to being powered off in star topology, or manually bypassed in chain topology), mostly by ignoring the data they're no longer producing (and passing the fact they're offline to the higher level, so it can disable certain things). At the moment the only ways I can see to do (b) are to either constantly be checking ecrt_master_get_slave (which doesn't seem like it'd scale well, and only supports ring positions) or to deactivate/rescan/reactivate whenever the slave_count changes (to include only online slaves in the domain); which is fine for the most part as most changes would occur when not "live", but it does mean hotplugging wouldn't work. I suppose I could make a domain per slave, but that doesn't sound very efficient. (Perhaps I'm wrong about that though.) _______________________________________________ etherlab-users mailing list [email protected] http://lists.etherlab.org/mailman/listinfo/etherlab-users
