Marcio,
I was just getting read to send my latest email to the list. I did get the application built, now I’m working on the st.cmd file, which I just pushed to github.
Reading through the st.cmd from Gary, I see lots of lines like:
drvModbusAsynConfigure("watlow_Glb_Num_1.1", "watlow1", 0, 4, 0, 16, 7, 2000, "watlow1");
I think I understand most of this line, except for the number “7”. I think this is a dataType, and I’m guessing that it’s a “Num”, while the ones that have “6” in that location are Enum, from this list:
https://github.com/epicsdeb/modbus/blob/61e61608e758c457b3619c0c71523f8b12f1b11c/modbusApp/src/drvModbusAsyn.c#L75
I’m not sure if Num is a uint or float (not that I necessarily need to know, as long as the code knows what it’s doing).
I think the next step is to match up the modbus start addresses with the manual I have for my Watlow EZ-Zone controller and add comments indicating that. Then I can decide which ones to disable, before figuring out how to run the IOC.
Feels like I’m making progress, but the foothills are tall if you’re starting below sea level!
Greg
From: Tech-talk <tech-talk-bounces at aps.anl.gov> On Behalf Of
Paduan Donadio, Marcio via Tech-talk
Sent: Tuesday, August 10, 2021 4:56 PM
To: EPICS Tech Talk <tech-talk at aps.anl.gov>
Subject: Re: Getting started talking to a device
Greg,
I see that you’ve already fixed what Mark Rivers pointed out. Are you still having problems to build the application?
I don’t know if it will do any difference, but usually the module path comes before EPICS base in the configure/RELEASE file. Place it below “Variables and paths
to dependent modules:”.
Just to make things more organized, you could separate a block for DBDs from a block for LIBS in your src/Makefile. For example, place CsHeater_LIBS += asyn below “Add all the support libraries needed by this IOC”.
I think the next challenge will be to run the IOC. Let us know if you hit another wall.
My best,
Márcio
You should delete the last line in CsHeaterApp/src/Makefile
$(COMMON_DIR)/CsHeater.dbd:
$(COMMON_DIR)/asyn
Mark
I put the code into github at the URL below. I did find one place where I had
CsHeater_DBD += asyn
But it should have been
CsHeater_LIBS += asyn
Latest output from make is at :
https://pastebin.com/5Ft4z6jn
https://github.com/gregoryleblanc/CsHeater
Greg
Greg,
if you don’t have the code in GitHub, could you attach your configure/RELEASE and csHeaterApp/src/Makefile?
My best,
Márcio
This is your error:
perl -CSD
/home/pi/EPICS/epics-base/bin/linux-arm/dbdExpand.pl -I. -I.. -I../O.Common -I../../../dbd -I/home/pi/EPICS/epics-base/dbd -I/home/pi/EPICS/support/asyn/dbd
-o CsHeater.dbd base.dbd asyn.dbd drvAsynIPPort.dbd asyn
It is the final “asyn” that is wrong. I don’t know what it causing it, but I think it must be a mistake in your application Makefile. Is your code on Github or somewhere
else we can see it?
Mark
Marcio,
Thanks, that’s gotten me a lot further than I was last week!
I’ve gotten far enough to try to build my application. When I run make, I get the output at:
https://pastebin.com/esyPHRC4
Based on that, I added “$(COMMON_DIR)/CsHeater.dbd: $(COMMON_DIR)/asyn” to my Makefile under the line that says “# ADD RULES AFTER THIS LINE” which changes the make output to this:
https://pastebin.com/ZaftdjaN
This feels like I have some path incorrect or incomplete, but I haven’t stumbled across it yet.
As a summary, I have:
epics_base installed to /home/pi/EPICS/epics-base
asyn installed to /home/pi/EPICS/support/asyn
StreamDevice installed to /home/pi/EPICS/support/StreamDevice
And I am working to create CsHeater in /home/pi/EPICS/CsHeater
Thanks,
Greg
All you have is the git repo that you've mentioned?
To build an IOC you will need a configure directory, with configure/RELEASE (or configure/RELEASE.local) pointing to the needed modules, like Asyn. You will also need a Makefile on your IOC application
root directory. The st.cmd file usually goes inside an iocBoot/<ioc_name> directory.
My recommendation: assuming that you have EPICS base installed, create a new directory where you want to place your IOC application and, inside it, start a new IOC application directory structure
using
makeBaseApp.pl -t ioc <name_of_your_ioc_application>
Then copy the contents of the Watlow-PM/Watlow_PM862FJ-3LEJAA_Module/watlowApp/Db/ directory to <name_of_your_ioc_application>App/Db.
Next, change your configure/RELEASE file, by adding the path to where you've installed Asyn. You must add to the <name_of_your_ioc_application>App/src/Makefile, the Asyn library and dbds:
<your_application>_DBD += asyn.dbd
<your_application>_DBD += drvAsynIPPort.dbd
<your_application>_LIBS += asyn
The DBDs provides you with the functions used in the IOC shell, like drvAsynIPPortConfigure.
See if issuing make brings a successful build.
Still inside the IOC application top directory use
makeBaseApp.pl -i -t ioc <name_of_your_ioc>
This will create an iocBoot/<name_of_your_ioc> directory. Overwrite the st.cmd file with "st.cmd.ModbusAddresses Only" and rename it back to st.cmd.
This st.cmd from the repo only initializes the driver but doesn't load the databases. Without loading the databases, you will have no PV to read/write in the network.
I hope that the IOC application maintainer can contact you to describe which databases to load for your case. I know nothing about the Watlow controller and couldn't help with this.
|
Márcio Paduan Donadio
| Control Systems Engineer
Advanced Control Systems Department
SLAC National Accelerator Laboratory | Menlo Park, CA
p: 650.926.5007 | w:
slac.stanford.edu
|
Hi folks,
I’m still poking around at this whole EPICS thing, attempting to get my feet wet. I thought that I might try to talk to a temp controller I have on our Cs Sputter source here. Currently we only adjust the setpoint by walking into the
vault and using Bluetooth on our phones. The controller is an EZ-ZONE model number PM6C1CA-GAAAAAA. We have an ethernet module for it, and it’s picked up an address from DHCP, which I can ping from the Raspberry Pi where I’ve installed EPICS Base.
I found the pieces that Gary published at
https://github.com/tauferg/Watlow-PM though I can’t find the controller mentioned on the Watlow website. I cloned via git and determined that the second parameter to drvAsynIPPortConfigure should be the ip address. From Watlow_PM862FJ-3LEJAA_IOC/st.cmd.ModbusAddresses\
Only I have:
drvAsynIPPortConfigure("watlow1", "10.0.0.196", 0, 0, 0)
The next step, per README.md is to “Rename the files and place in the appropriate directories.” Which files need to be renamed, and where do they need to be placed? What is the next step here, or do I need to back up and continue working
on the st.cmd file? Any pointers appreciated.
Greg
--
Gregory Leblanc
Accelerator Engineer
Edwards Accelerator Lab - Ohio University
123 University Terrace
Athens, OH 45701
leblanc at ohio.edu
M: (401) 52-OUAL1 or (401) 526-8251