Jump to content
OMRON Forums

Accessing upper channels on ACC36E


Recommended Posts

We're having problems accessing data from the upper channels (9-16) of our ACC36E. Our board is at $B00000 so we've set up the following:


AdcDemux.Address[0] = $B00000;

AdcDemux.ConvertCode[0] = 0;

AdcDemux.ConvertCode[1] = $400;

AdcDemux.Enable = 2

AdcDemux.ResultLow[0] does contain result {Analog In #1}

AdcDemux.ResultLow[1] does contain result {Analog In #5}

AdcDemux.ResultHigh[0] should contain result but doesn't {Analog In #9}

AdcDemux.ResultHigh[1] should contain result but doesn't {Analog In #13}



We're reading a unipolar device between pins 1 & 9 using the voltage out between pins 7 & 6. Since all four connectors are the same, we moved the device around to each spot to test the values. The values for 1 and 4 are just as expected but we do not seem to get anything from 9 and 13.


After setting Acc36E[1].ConvertCode=0, I also looked at Acc36E[1].ADCuLow (for #1) when the data showed ready and it was correct but Acc36E[1].ADCuHigh (for #9) again showed nothing.


Did I miss a step or something? What would make the Low registers work and not the High ones?

Link to comment
Share on other sites

  • Replies 10
  • Created
  • Last Reply

Top Posters In This Topic

Per the manual documentation:

- Try setting up the AdcDemux.Address[] for all the pairs you intend to use. (i.e. AdcDemux.Address[1]=$B00000)

- Why is AdcDemux.ConvertCode[1] = $400? shouldn't it be =$100?


If you would copy the first example settings from the manual, and only change the base address, then you should be fine:


AdcDemux.Address[0] = $B00000; // ADC Pair #1 (ADC#1 & #09)
AdcDemux.Address[1] = $B00000; // ADC Pair #2 (ADC#2 & #10)
AdcDemux.Address[2] = $B00000; // ADC Pair #3 (ADC#3 & #11)
AdcDemux.Address[3] = $B00000; // ADC Pair #4 (ADC#4 & #12)
AdcDemux.Address[4] = $B00000; // ADC Pair #5 (ADC#5 & #13)
AdcDemux.Address[5] = $B00000; // ADC Pair #6 (ADC#6 & #14)
AdcDemux.Address[6] = $B00000; // ADC Pair #7 (ADC#7 & #15)
AdcDemux.Address[7] = $B00000; // ADC Pair #8 (ADC#8 & #16)

AdcDemux.ConvertCode[0]=$000; // ADC Pair #1 Unipolar
AdcDemux.ConvertCode[1]=$100; // ADC Pair #2 Unipolar
AdcDemux.ConvertCode[2]=$200; // ADC Pair #3 Unipolar
AdcDemux.ConvertCode[3]=$300; // ADC Pair #4 Unipolar
AdcDemux.ConvertCode[4]=$400; // ADC Pair #5 Unipolar
AdcDemux.ConvertCode[5]=$500; // ADC Pair #6 Unipolar
AdcDemux.ConvertCode[6]=$600; // ADC Pair #7 Unipolar
AdcDemux.ConvertCode[7]=$700; // ADC Pair #8 Unipolar

AdcDemux.Enable = 8; // Demux 8 ADC pairs





Link to comment
Share on other sites

No, we were only testing #1, #5, #9, and #13 so we set the second convert code to $400 (for #5 and #13). #5 works correctly but we do not get #9 or #13 on the high element. We already have the base addresses set to $B00000. Even if the second convert code were wrong, the first one should have given us #9. (Forgot to mention, I already set AdcDemux.Address[1] = $B00000 as well.) When I get a chance (tomorrow), I will try setting them all as suggested but I can't see how that would make a difference.
Link to comment
Share on other sites

So I did as you suggested and got the exact same results. The lower pair values are in the AdcDemux.ResultLow[0] and AdcDemux.ResultLow[4] registers but the high pair values are not in AdcDemux.ResultHigh[0] or AdcDemux.ResultHigh[4], they just read 0. The connections are exactly the same so the values should be within a couple of bits of each other.
Link to comment
Share on other sites

Is there any way to find out the address of the boards without taking them out. We have 1 Acc24E3 (reported as ACC24E3[0]) in slots 1 and 2, two Acc24E2As (reported as ACC24E2A[6] and ACC24E2A[7]) in slots 3-6, and the one ACC-36E (reported as ACC36E[1] which I do know is at $B00000) in slot 8. (Assuming the Power PMAC is in slot 0).
Link to comment
Share on other sites



The accessories that you have are setup correctly since you can detect all of them on Power PMAC. Also, since you have no other IO card other than the ACC-36E, this means the ACC-36E can not be conflicting with any other board (the rest of your boards are not using expansion IO space addresses).


Can you send us the Serial Number of the ACC-36E? We have to make sure that it is compatible with your Power PMAC.

Link to comment
Share on other sites



The bar-code is what we use as serial number. I have checked and there is an ECO required on your ACC-36E which may explain what you're seeing on Power PMAC. Do you have a Turbo UMAC so you can check the functionality of this ACC-36E? The ECO is specifically affecting the communication between the accessory and Power PMAC CPU.


We can implement the ECO is you RMA the unit through your distributor or our tech support group.


Link to comment
Share on other sites

  • 3 months later...

Once I get the board back, how do I know that the ECO was implemented. The returned board (same serial number {C000097DA}) does the exact same thing as it did before I sent it away for the ECO implementation. The lower channels (0-7) work but the higher channels (8-13) do not--all AdcDemux.ResultHigh read 0. Even the ADCuHigh never changes (the ADCuLow does cycle through correctly).


We appear to have found the problem. We are using the +12V/AGND to power a thermistor circuit and the +12V pins (#7) read correctly on the lower channels (actually read 15V) but are floating on the upper channels. The manual shows that the connectors are the same but they do not appear to be. Is this a known issue?


Link to comment
Share on other sites

Hi pennells,


Thanks for pointing this one out. J1 Bottom and J2 Bottom connectors on ACC-36E are not connected to AGND, -12V or +12V. This is a mistake in the manual for D-Sub connector version of ACC-36E, but it is correct on terminal block version. I've initiated a corrective action on it.

Link to comment
Share on other sites

This topic is now closed to further replies.

  • Create New...