wfsteele Posted May 9, 2013 Share Posted May 9, 2013 I wanted to synchronously trigger a gather at a particular point in a motion program by using a synchronous assignment: Gather.Enable == 2 but it didn't work. According to the documentation for synchronous assignments, local variables and self-assigned M-variables cannot be assigned to this way, the implication being that anything else is OK. Since Gather.Enable isn't included in either of those categories, I assumed it would work. If, instead I synchronously assign a Q-variable, and then, in a plc program, enable gather when the Q-variable changes; that works (but then there's the latency of the plc program), so I know that the synchronous assign mechanism is working. Link to comment Share on other sites More sharing options...
curtwilson Posted May 10, 2013 Share Posted May 10, 2013 A clarification is needed in the manual. Data structure elements that are simply registers (or part of registers) can have values assigned synchronously. This is the vast majority of elements. However, a few of the elements are "function" elements -- when assigning a value to one of these in the script environment, a whole host of actions are performed. Gather.Enable is one of these. "Function" elements cannot be written to synchronously. You can tell if an element is a function element by querying its address. If the returned value is 0, it is a function element, so its value cannot be set in a synchronous assignment. So if you query: Gather.Enable.a Power PMAC will return a value of 0. My apologies for the confusion. Link to comment Share on other sites More sharing options...
Recommended Posts