• Not Answered

PRIVATE_MASK parameter in a Aquire/Release composite v13

Hello,

I was looking through several EM's we have and within the class EM under the ACQ_REL composite there are instances of different arbitration instrument composites linked and within the composite the PRIVATE_MASK parameter you can have a floating point array set. I will provide those below and I wasn't able to gather much in BOL, so if someone can elaborate on it or point me in a direction for more information on the array.  The example given in the description of the composite doesn't make a lot of sense to me. It talks about private/shared and option 1 or option 2

MIS_AGITSEAL_EM: 4 linked arbitration composite: private_mask: 51
MIS_BATCH_EM: 13 linked arbitration composite: private_mask: 16374
MIS_DIW_EM: 4 linked arbitration composite: private_mask: 8
MIS_SCRUBBER_EM: 4 linked arbitration composite: private_mask: 1728

If these devices are set up as shared, if the ARB composite (non-queue) are being used does the private_mask parameter even have to be exact? How do you determine what the floating point array is?

On the topic of acquiring devices, if the linked composite module is also used in another EM and those devices are shared not private, shouldn't the generic scripting in the ACT of the Acquire/Release composite already handle ownership arbitration? Any information would be greatly appreciated. 

4 Replies

  • Private Devices are acquired as soon as the EM is owned by "something". You configure the mask for these devices where Row 1 is 1-16 devices, Row 2 is 17-32, etc of the PRIVATE_MASK. The device number configuration is done within the individual Device Composites so even if you have 4 composites this doesn't mean they are always devices 1 - 4. You have to check each composite to know the associated device number for that device to determine the private mask. So if you have 4 devices with the first 2 private and the second 2 as shared, the private mask row 1 would be set to 3 and there would be logic to acquire/release the other 2 devices in the command logic. This most likely explains why you could have 4 composites but the mask is 51 for AGITSEAL. I would expect that your composites for AGITSEAL have them configured as 1, 2, 5 and 6.

    If the devices are Shared, this means that logic will acquire them as need thru the Command Logic which will talk directly to the device composites ACQUIRE or RELEASE parameters.

    Private and Shared in this composite has nothing to do the selection of Private/Shared put on Module blocks. The problem with Module Block Private/Shared is that if you need to use the PV of a pump or valve but only one EM is driving it using a module block with private, this will not allow the other instance to reference the pump or valve with a module block as it would need to be shared. This is why a lot of configurations use all the module blocks as shared that allow references anywhere and use this arbitration scheme to handle the "true" private and shared.

    Yes the generic logic doesn't need to change if private or shared. If Private and someone actually owns a device you need, your EM won't be able to run a command from the FP until it owns all the private devices. If you change a device from Private to Shared, you remove the associated bit for that device in Private Mask and then put logic in Command(s) to acquire this device. No other logic changes to the ACQ_REL composite are needed.

    Hope this helps
  • In reply to Matt Stoner:

    Matt, as always you bring a wealth of knowledge, thank you. You indeed were correct on the device_id being 1,2,5 & 6 respectively. Thank you for the clarification of private/shared from module having nothing to do with composite, I assumed that they were the same.

    So if I have devices that are linked in the above MIS_BATCH_EM (16374) devices 11 & 12 respectively and have another EM that I am creating that will utilize those same valves (Devices 1 & 2), I will need to adjust the floating point array in the MIS_BATCH_EM to make those two valves (shared) and in the new EM I will not have anything in the floating point array for number but will acquire them via SFC and action steps (like I am used to). Do I understand you correctly? Thanks again for the clarification on the array.

  • In reply to John Pelfrey:

    The Device numbers are unique for that EM, it doesn't matter if the device is in another EM at Device 1 & 2. The Device number is only locale to that EM and the actual device doesn't know if it is being used by 1, 2 or 5 EMs. The device just has the OWNER_ID which tells who is suppose to be controlling it.

    In the EM logic for shared devices you would have:
    Acquire
    Expression = '^/ACQ_REL/DEVICENAME/ACQUIRE.CV' := '^/MY_TAG.CV';
    Confirm = '^/ACQ_REL/DEVICENAME/ACQUIRE.CV' := ""

    Release
    Expression = '^/ACQ_REL/DEVICENAME/RELEASE.CV' := '^/MY_TAG.CV';
    Confirm = '^/ACQ_REL/DEVICENAME/RELEASE.CV' := ""

    No, you should have the device composites still as the composites are there either Private or shared. The other checks that are required about Owning that you probably are typically doing are handled by the composite. This should make you coding easier and simpler as shown above.

    If you want to change from Shared to Private, remove the code and change the PRIVATE_MASK.
  • In reply to Matt Stoner:

    Matt, thanks again for the clarification, I understand it now.