Home AMX User Forum AMX General Discussion

Pentair i-Link?

Does anyone know if a Pentair i-Link (serial adapter) requires a null modem adapter to cross over pins 2/3 when connecting to the master's serial port.

Does anyone know if we could connect directly to the Pentair's com bus via RS485 and not use the i-Link adpater?

Comments

  • viningvining Posts: 4,368
    Well I was back today and plugging the i-Link directly into the master's serial port didn't work, using a null modem adapter didn't work. I decided to connect it to a DB-9 break out adpater and wire it to the set screw connection for a com-2 in a slot of the NI-4100 and using just pins 2,3 & 5 didn't work. When reading the i-Link manual it says to use pins 1,4 & 6 also pins 7 & 8 which made no sense for a RS232 DB-9. So instead I connected pins 2,3,5,7,8 and it worked fine when wired to the correct matching pins 1-5 or 11-15 (depending on card slot port). I think 2 & 3 were straight though but I might have crossed them.

    Disregarded i-Link pin out instructions:
    Note: (*) Pins 1, 4, and 6 connected. Pins 7 and 8 connected.
    DB-9S
    Pin Number*
    Signal Name (DCE) Signal Direction
    1 DCD (Data Carrier Detect) Input
    2 RXD (Receive Data) Output
    3 TXD (Transmit Data) Input
    4 DTR (Data Terminal Ready) Input
    5 SGND (Ground) Input/Output
    6 DSR (Data Set Ready) Input
    7 RTS (Request to Send) Output
    8 CTS (Clear to Send) Output
    9 RI (Ring Indicator) Input
  • glr-ftiglr-fti Posts: 286
    I have a site where I have two of these working without issue. Most others are still the old Compool. I'll see if I can find out how I wired it because I don't remember but I know I didn't have any trouble at all. Hopefully I have some documentation somewhere that spells it out. FYI I did not use the module but don't remember why either but if you want some code snippets let me know. I have pretty good feedback working as well. It is not in module format though and the way the Pentair Aux are programmed would need to match mine for it to make sense.

    I recall you do have to purchase the over priced iLink though. I didn't want to run the risk of damaging the controller and there does not appear to be any other way to connect to the keypad bus.
  • viningvining Posts: 4,368
    glr-fti wrote: »
    I have a site where I have two of these working without issue. Most others are still the old Compool. I'll see if I can find out how I wired it because I don't remember but I know I didn't have any trouble at all. Hopefully I have some documentation somewhere that spells it out. FYI I did not use the module but don't remember why either but if you want some code snippets let me know. I have pretty good feedback working as well. It is not in module format though and the way the Pentair Aux are programmed would need to match mine for it to make sense.

    I recall you do have to purchase the over priced iLink though. I didn't want to run the risk of damaging the controller and there does not appear to be any other way to connect to the keypad bus.

    I have it communicating now and maybe if I used the cable specified in the module It would have just worked. Seems I should have been able to just connect straight into the master as it work connecting directly into my PC.

    I'm using the standard netlinx module and if I find it works well and does everything I need I'll just continue using it.

    I might be possible just to connect to the RS485 bus but I too don't want to waste time or fry the system but it doesn't hurt to ask if anyone has tried. It could be just a 232 to 485 converter they're selling us.
  • truetrue Posts: 307
    Connecting 1&4&6 and 7&8 is important for this device to work. Just short these on the device side.

    I've always used the adapter, and never connected to the 485 bus, so I don't know if that would work.
  • viningvining Posts: 4,368
    true wrote: »
    Connecting 1&4&6 and 7&8 is important for this device to work. Just short these on the device side.

    I've always used the adapter, and never connected to the 485 bus, so I don't know if that would work.
    I have 2,3,5,7,8 connected to their matching counterparts on terminal 1-5 or 11-15 on the com2 card slot port and it works just fine with out doing anything else.

    Maybe the note below from the i-Link doc is just them stating they've already shorted these pins together. At first I thought that meant they wanted me to connect to these pins but since it didn't make sense to do that I ignored it and went with my gut instinct which worked. Directly connecting to a DB-9 port on the master didn't nor did it work with a null modem adpater.
    Note: (*) Pins 1, 4, and 6 connected. Pins 7 and 8 connected.
  • truetrue Posts: 307
    They are not connected. If you would have shorted 7&8 on the i-Link side, then standard 2-3-5 would have worked to your master.
  • viningvining Posts: 4,368
    I talked with Pentair TS yesterday and had a chance to inquire about the i-Link. The tech stated the i-link is needed and it is not just a protocol adapter it actually performs logicically operations. Supposedly according to the tech I talked with the i-Link receives and stores the values of the Pentair system and when you query the Pentair system it is the i-Link that responds from it's stored "map" values. When you send the system a command the i-Link receives and passes in on, possibly changes it with an internal driver so the Pentair system can understand it.

    This had me baffled cuz I could query the system and recieve a correct respons but I couldn't issue commands, I would even tually receive a timeout error when trying to control the system. Given the explanation I received from the tech is quite possible my TX/RX lines are fine to the i-Link and my RX on the i-Link from the Pentair system is also god since I receive the correct value but my TX line to the Pentair from the i-Link might be bad or crossed. I had assumed since I was sending queries and received proper responces to the queries that comms had to be good but apparantely is wasn't that simple of an operation.

    Mean while on another job the pool guys are telling me that I don't need an i-Link, that any 232-485 protocol adapter will work cuz that's what the Craptron guys use. Of course I never met a pool guy that knew what they were talking about and the tech did sound credable and it also makes sense that no one here as ever used the Pentair system directly via 485. Oy vey!
  • AuserAuser Posts: 506
    I just had a look for you and there's no official module on the Cre$tron website which means whoever the Cr3stron guys are, they must have rolled it themselves.
  • viningvining Posts: 4,368
    Auser wrote: »
    I just had a look for you and there's no official module on the Cre$tron website which means whoever the Cr3stron guys are, they must have rolled it themselves.
    The only things I've found are referneces to the a module by ControlWorks which specifies using the i-Link so I have no idea what the pool guy was talking about.

    I did find in a pool forum that some software guy connected to Pentair's Itellitouch system direct to the rs485 bus and reverse engineered their protocol to make it work. He said there is some benefit to doing that since there are some parts of the Pentair system like the intelliflo pumps that aren't accessable and whose values aren't available to the i-Link interface.

    I checked the wiring on saturday and put a keypad on the wire running form the i-Link to the Pentair and it worked. I still query various states ok and when I try to control something I get a response but it always the current state and not the state I'm trying to set. I'll have to make another call to Pentair this week and see what they recommend trying.
  • viningvining Posts: 4,368
    The pool forum I mentioned led me to this link (you have to join the forum to download it):

    http://www.cocoontech.com/forums/index.php?app=downloads&showfile=173

    It's a Canadian Security & Automation forum download page of the reverse engineered protocol. Unfortunately it will take some time for me to make sense of the files. Maybe I'll try this on the next pool but for now I'd be happy getting control of the system using the i-Link.
  • jimmywjimmyw Posts: 112
    The meat and potatoes is this:
    9600,n,8,1 485 enabled
    The protocol
    ============
    
    	The protocol uses short binary packages for information exchange. The
    	packages have variable size. The minimum length is 8 bytes and the
    	theoretical maximum is 6+256+2=264 bytes. The largest I have seen on
    	a live Pentair bus is 37 bytes.
    	The format is:
    
    	<ldb> <sub> <dst> <src> <cfi> <len> [<data>] <ckh> <ckl>
    
    	<lpb> - leading packet byte, 0xa5
    	<sub> - ?
    	<dst> - destination address
    	<src> - source address
    	<cfi> - command/function/instruction
    	<len> - size of data field (may be 0!)
    	<data ...>
    	<ckh> - most significant byte of checksum
    	<ckl> - least significant byte of checksum
    
    	The checksum is a 16 bit unsigned sum of all bytes in the message up to
    	the checksum field.
    	Most packages are preceded by a preamble of 1 or more 0xff bytes and a
    	0x00 0xff sequence.
    
    	Every device on the bus has an address:
    	0x0f - is the broadcast address, it is used by the more sophisticated
    	       controllers as <dst> in their system status broadcasts most
    	       likely to keep queries for system status low.
    	0x1x - main controllers (IntelliComII, IntelliTouch, EasyTouch ...)
    	0x2x - remote controllers
    	0x6x - pumps, 0x60 is pump 1
    
    	Apart from unsolicited broadcasts, information exchange is done by
    	a device A sending a message to device B and device B sending an answer
    	to device A. Messages for simple exchanges only differ in the fact
    	that <dst> and <src> are swapped.
    	For example:
    		C: A5 00 60 10 04 01 ff 02 19
    		P: A5 00 10 60 04 01 ff 02 19
    	is a request from the controller to the pump to turn panel control off,
    	which enables it to send other commands to the pump. The pump confirms
    	the action in the answer.
    	The following sequence will turn panel control back on:
    		C: A5 00 60 10 04 01 00 01 1A
    		P: A5 00 10 60 04 01 00 01 1A
    
    	The interpretation of a <cfi> depends on the destination of a message,
    	meaning a <cfi> for one device might mean something else for another.
    
    	And there are exceptions to this protocol. The IntelliChlor C40 puts
    	messages on the bus that start with a 0x10 0x02 sequence, a data field,
    	a single byte checksum and a 0x10 0x03 trailer sequence... The checksum
    	is the unsigned sum over the data field + 18.
    
    	There are many <cfi>s I have seen in data dumps, the interpretation of
    	the datafield is somewhat cumbersome without knowing the system, so my
    	focus is more on messages to and from a pump.
    	However, here are some basics I found:
    	A <cfi> to a controller seems to work like this:
    	bits   <76543210>
    		00xxxxxx - ?
    		01xxxxxx - ?
    		10xxxxxx - transfer(write) <cfi>&0x3f to controller
    		           controller acknowledges the write with <0x01><0x01><cfi>
    		11xxxxxx - request <cfi>&0x3f from controller
    		           the controller broadcasts it in response
    
    	My pump is an IntelliFlow VS, it does follow instructions from an
    	IntelliComII controller, provided the external programs are setup and
    	enabled. It has to be in FILTER mode AND Started to make it go.
    	Unlike other controllers, which take over full control of the pump, the
    	IntelliComII grabs control only for a short interval of time, every 30
    	seconds, to communicate what external program to run. If all inputs are
    	off it does not even do that after it has had a respone from the pump.
    
    	The sequence for input 1 active is:
    
    		C: A500 d=60 s=10 c=04 l=01 FF       <0219> SETCTRL remote
    		P: A500 d=10 s=60 c=04 l=01 FF       <0219> CTRL is remote
    	*	C: A500 d=60 s=10 c=01 l=04 03210008 <0146> WRITE (0x0008) to 0x0321
    		P: A500 d=10 s=60 c=01 l=02 0008     <0120> VALIS (0x0008)
    		C: A500 d=60 s=10 c=04 l=01 00       <011A> SETCTRL local
    		P: A500 d=10 s=60 c=04 l=01 00       <011A> CTRL is local
    
    	*       C: A500 d=60 s=10 c=01 l=04 03210000 <013E> is a stop
    	*	C: A500 d=60 s=10 c=01 l=04 03210010 <014E> is program 2
    	*	C: A500 d=60 s=10 c=01 l=04 03210018 <0156> is program 3
    	*	C: A500 d=60 s=10 c=01 l=04 03210020 <015E> is program 4
    
    	If one quits repeating the sequence for about a minute the pump stops.
    	The IntelliComII is not aware of the status of the pump and will keep
    	repeating the sequence as long as an input is active. You can stop and
    	start the pump with the START/STOP button on the control panel anytime,
    	unless, of course, you hit the period when it is in remote control.
    
    	More decoding of binary data from an IntelliTouch controlled system
    	with a VS pump surfaced that there is a status report from the pump.
    	It is only obtainable when the pump is in remote control.
    
    		C: A500 d=60 s=10 c=07 l=00 <011C> SEND status
    		P: A500 d=10 s=60 c=07 l=0f 0A0602024A08AC120000000A000F22 <028A>
            		RUN 0a   Started
    			MOD 06   Feature 1
    			PMP 02   ? drive state
    			PWR 024a  586 WATT
    			RPM 08ac 2220 RPM
    			GPM 12     18 GPM
    			PPC 00      0 %
    			b09 00   ? 
    			ERR 00   ok
    			b11 0a   ? 
    			TMR 00   0 MIN
    			CLK 0f22 15:34
    
    	The above sequence is embedded within the cyclic exchange of data
    	between the controller and the pump. The full cyclic sequence is:
    
    		C: A500 d=60 s=10 c=04 l=01 FF       <0219> SETCTRL remote
    		P: A500 d=10 s=60 c=04 l=01 FF       <0219> CTRL is remote
    		C: A500 d=60 s=10 c=01 l=04 02E40012 <0212> WRITE (18) to 0x02e4
    		P: A500 d=10 s=60 c=01 l=02 0012 <012A>     VALIS (18)
    		C: A500 d=60 s=10 c=05 l=01 06       <0121> SETMOD 06 (Feature 1)
    		P: A500 d=10 s=60 c=05 l=01 06       <0121> MOD is 06
    		C: A500 d=60 s=10 c=06 l=01 0A       <0126> SETRUN 0a Started
    		P: A500 d=10 s=60 c=06 l=01 0A       <0126> RUN is 0a Started
    		C: A500 d=60 s=10 c=07 l=00          <011C> SEND status
    		P: A500 d=10 s=60 c=07 l=0f 0A0602024908B1120000000A000F22 <028E>
    
    	The controller never releases the pump as long as it is in AUTO mode.
    	The display on the pump shows "Display not active..." and the LEDs
    	above FEATURE 1 and START/STOP are on. Experiments with my pump showed
    	that one can change the GPM setpoint 0x02e4 on the fly, it follows it!
    	If the controller releases the pump the cyclic sequence changes to:
    
    		C: A500 d=60 s=10 c=04 l=01 00 <011A> SETCTRL local
    		P: A500 d=10 s=60 c=04 l=01 00 <011A> CTRL is local
    
    	It is important for any serious controller implementation to know when a
    	pump runs into trouble and the Pentair IntelliFlow VS is fully capable
    	of doing that!
    
    
  • viningvining Posts: 4,368
    Yeah I saw that but that's nothing I want to get into now. I'll save that for another day when I get bored, maybe.
  • jimmywjimmyw Posts: 112
    vining wrote: »
    Yeah I saw that but that's nothing I want to get into now.

    Yeah, I agree, I have another side project I am working on first, but I would love to come back to this, you get a much higher level of control!
  • Pentair Versus Jandy

    Aside from the little serial line reset-issue on the Jandy we have had pretty good success with them, but a new client is asking us to look at using Pentair (we avoided them 5 years ago); I had heard that Pentair is a bit troublesome; can you guys comment on how good the Pentair is compared to the Jandy?

    Thanks!
  • roognationroognation Posts: 138
    roognation wrote: »
    Aside from the little serial line reset-issue on the Jandy we have had pretty good success with them, but a new client is asking us to look at using Pentair (we avoided them 5 years ago); I had heard that Pentair is a bit troublesome; can you guys comment on how good the Pentair is compared to the Jandy?

    Bump this up to the top...
  • I've got it working on a job, though I couldn't get the AMX module to ever work. Like Vining, I could never make it happing connecting the iLink directly to the master. I ultimately ended up using a Aaxeon serial to IP server I had laying around. That seemed to work perfect. I wrote my lil' module using the iLink protocol in their manual; works great & responds very quickly. Surprisingly quick for 485...
  • roognationroognation Posts: 138
    Good news, thanks for the update. Any lockups or wonkiness?

    I'll keep an open mind towards Pentair in the future.
  • John NagyJohn Nagy Posts: 1,742
    We've deployed probably a dozen of the Pentair i9 series... wired direct serial, we rolled our own drivers. No issues other than several have had the wire go bad to the outdoor areas. Can't blame that on the adapter.
  • viningvining Posts: 4,368
    My initial problems were caused by a bad iLink and onced it was replaced comms were fine directly to the master. I still have some issue but those are because the pool guys are idiots and programmed their system wrong and they just learned from Pentair TS that another temp sensor is needed before the heater will respond to commands.
  • roognationroognation Posts: 138
    John and vining, thanks for the response, very helpful. If we get one, I will keep Pentair on a short-leash until we have confidence in the pool-contractor and their programming (oh, it WILL be hammered).
  • John NagyJohn Nagy Posts: 1,742
    Oh the pool guys, such wacky scamps they can be. One installation with a Pentair, they bypassed part of the control to be able to run the heater and pumps somehow on insufficient power, so you couldn't both heat and run the high pump. Then the customer was mad at us because you can't get a water temp without running the pump (this because the sensor isn't in the pool, it's in the pump, and unless the water is running, you don't have pool temperature water in the pump). Oh my.
  • viningvining Posts: 4,368
    You pretty much have to ignore pool temp FB unless the pump is running. If i recall the pool equipment will run the pump every 30 mins in order to read the water temp and heat if necassary if heating is enabled.
  • John NagyJohn Nagy Posts: 1,742
    You don't have to ignore it, the Pentair will not GIVE you temp until the pump has run for a moment. You get nada.
  • viningvining Posts: 4,368
    John Nagy wrote: »
    You don't have to ignore it, the Pentair will not GIVE you temp until the pump has run for a moment. You get nada.
    I'm pretty sure it will only judge a heating call need after the pump has run for a minute or two but still sends you what it reads off the sensor. If the pump isn't running the strap on temp sensor still sends temp as it slowly decreases to the ambient air temp since when the pump isn't running you're just sensing stagnant water in a pipe at the pool equipment. I know on the system i just did when the pumped stopped the pool water temp received from the system would eventualy equal the air temp.
  • viningvining Posts: 4,368
    After giving it some thought maybe i'm seeing these pool temp values when the pump isn't running because i query for the current temps. I also have unsolicated fb enabled so maybe i should re-examine my polling needs.
Sign In or Register to comment.