Watlow F4 temperature control

T

Thread Starter

Tyler C

I am attempting to write a program to control a Watlow F4 controller on a TestEquity temperature chamber over a serial connection. I wish to change the temperature of the chamber, nothing fancy. Would anyone be able to provide an example of a string that I would send to the controller to set the temperature in the chamber to an arbitrary temperature, say, 35 degrees Celsius. I have tried many things and I cannot figure out how to get this to work.

<b>moderator's note:</b> this was posted to the Modbus community here on Control.com so the assumption is that he is looking for Modbus help.
 
Watlow has quite an assortment of reference material linked from the F4 page:

http://www.watlow.com/products/controllers/series-f4-process-controller.cfm?famid=15

Comm7 - Communication Diagnostic Software ver.7 .exe 2,470K
Modbus RTU Example in Visual Basic 6.0 (.zip file) .zip 23K
Modbus RTU Example in Visual Basic Net (.zip file) .zip 190K
Sample Modbus Communications Modules for Programmers .zip 283K
WATVIEW HMI Software Download .cfm 47,918K

Why not take a look at it?
 
>>>David

Thank you for providing these, links, but none of them solve the problem. I have looked at a lot of the documentation, but none of them just show an example packet/string to send to the controller. Also, as I am having a program of my own control the chamber, the programs online that do that are little help.
 
You are aware of the F4 comm manual at http://www.watlow.com/downloads/en/manuals/f4pdce_a.pdf

1) Download the MODBUS APPLICATION PROTOCOL SPECIFICATION V1.1b from Modbus.org

2) Page 4 shows the basic structure of a Modbus message:
slave address, function code, address (range), CRC error check.

3) Check out page 19 for an example for the "write single register" 06 instruction

4) Check the Modbus map in the F4 comm manual or the spreadsheet.

The F4 slave map shows a read/write "Set point 1" at modbus number 300, an address, because there's
some Modbus variable at address zero. There's an address 301 following, so the value is probably a signed integer, not floating point (which would require 2 address registers)

It helps to know which functions a device supports, but I can not find such a listing in the Watlow documentation. I'm sure it supports the 06 "write single register" function.

4) To write the setpoint value
- when your F4 controller is slave #1,
- with an example value of 200 (hex 00C8)
- if the working setpoint is at decimal address 301 (hex 012D), register 300 (hex 012C)

The master request would be
01 (slave device's node [ID] address)
06 (function code 06)
01 (register address high)
2D (register address low)
00 (data value high)
C8 (data value low)
A9 (CRC hi)
19 (CRC lo)

There's an on-line CRC calculater at http://www.lammertbies.nl/comm/info/crc-calculation.html

It isn't clear how the F4 handles integer data. Integer data formats frequently assume a certain number of decimal places. For instance, a setpoint of 200 might need be written as 2000, because the F4's value assumes a digit for a single decimal place: 200.0

It sometimes pays to mess around with one of the test Modbus masters, like Simply Modbus or Modscan32, in order to check the controller's response and see how things work with a known working package that will do reads and writes.
 
W

William Sturm

You could try an off the shelf Modbus driver, such as this
http://www.sapia-inc.com/software/default.html

They offer a free trial. simply pop it into a VB form and start testing. It is crucially important to make sure that you have the hardware correct while you start testing software. you usually test both concurrently until you have a proven combination. It is easiest to use a known working software, such as one of Watlow's test programs, until you know that the wiring is correct.

Bill Sturm
 
>4) To write the setpoint value
>- when your F4 controller is slave #1,
>
>- with an example value of 200 (hex
>00C8)
>- if the working setpoint is at decimal
>address 301 (hex 012D), register 300
>(hex 012C)
>
>The master request would be
>01 (slave device's node [ID] address)
>06 (function code 06)
>01 (register address high)
>2D (register address low)
>00 (data value high)
>C8 (data value low)
>A9 (CRC hi)
>19 (CRC lo)
>
>There's an on-line CRC calculater at
>http://www.lammertbies.nl/comm/info/crc-calculation.html

When it comes to this, my largest problem is figuring out the correct format for sending these. Such as is it 'W 300, __', do I send them as one long command, or as a series of commands, then as hex, acsii, integer, etc...

I looked at the
http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf
but it wasn't specific enough.

(I am used to just software, not particularly hardware, so if some of these things are generally common knowledge then I just haven't learned it yet...)
 
Hi

How to generate the CRC values for this case?

>>4) To write the setpoint value
>>- when your F4 controller is slave #1,
>>
>>- with an example value of 200 (hex 00C8)
>>- if the working setpoint is at decimal
>>address 301 (hex 012D), register 300 (hex 012C)
>>
>>The master request would be
>>01 (slave device's node [ID] address)
>>06 (function code 06)
>>01 (register address high)
>>2D (register address low)
>>00 (data value high)
>>C8 (data value low)
>>A9 (CRC hi)
>>19 (CRC lo)
>>
>>There's an on-line CRC calculater at
>>http://www.lammertbies.nl/comm/info/crc-calculation.html
>
>When it comes to this, my largest problem is figuring out
>the correct format for sending these. Such as is it 'W 300,
>__', do I send them as one long command, or as a series of
>commands, then as hex, acsii, integer, etc...
>
>I looked at the
>http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf
>but it wasn't specific enough.
>
>(I am used to just software, not particularly hardware, so
>if some of these things are generally common knowledge then
>I just haven't learned it yet...)
 
Page 39, section 6.2.2 of the Modbus specification <i>Modbus over serial line Specification and Implementation guide V1.02</i> has 5 pages with a logic flow chart for generating a CRC.

Download the spec from Modbus.org
 
Top