Re: an_add_objects The call to an_add_objects uses arrays: So, nument = 1 name = "JASON1:CALCA01.RI01" acctyp = 2 rdelta = 2.0 rsr = 2 wdelta = 0 should be something like char name[32]; int acctyp[1]; float rdelta[1]; float rsr[1]; float wdelta[1]; nument = 1 strncpy(name, "JASON1:CALCA01.RI01", 32); acctyp[0] = 2 rdelta[0] = 2.0 rsr[0] = 2 wdelta[0] = 0 Re: Is there a significant performance increase in using the OM over the FoxAPI? No. Though there is the rsr delay in FoxAPI. Re: My end goal is to review both FoxAPI and the OM API, and justify (to my client) using FoxAPI over OM directly. Don't use the OM API. The company's position is that the OM API is deprecated and Fox/AIM API should be used instead. As mentioned before, we do not even ship the OM header files on NT. Regards, Alex Johnson Invensys 10707 Haddington Houston, TX 77063 713.722.2859 (office) 713.722.2700 (switchboard) 713.932.0222 (fax) ajohnson@xxxxxxxxxxx <mailto:ajohnson@xxxxxxxxxxx> Come to the Invensys Showcase: http://www.invensysshowcase.com/ <http://www.invensysshowcase.com/> -----Original Message----- From: Jason Ewasiuk [SMTP:jason.ewasiuk@xxxxxxxxxxxx] Sent: Thursday, June 06, 2002 8:29 PM To: foxboro@xxxxxxxxxxxxx Subject: Re: [foxboro] FoxAPI questions Thanks for your response, Alex. I've seen some of your other responses to other threads, and clients have even emailed me quoting some of your responses on various issues. >> Re: I have not been able to add objects with the rdwrit setting using the >> an_add_objects() function. If any object in the arrays sent to that >> function have the rdwrit(2) setting, the function fails. Anyone know why >> this occurs? > There are rules about this kind of behavior: :-) > * If the C:B.P is secured, you cannot add it for read/write. > * If an C:B.P is connected to another C:B.P, it is secured and you > cannot add it for read/write > * If the C:B.P is an output (all outputs are secured), you cannot add > it for read/write. > > I/A Series block parameters have four options: > > 1) Getable (one shot get) > 2) Setable (one shot set) > 3) Connectable for read (change driven read) > 4) Connectable for write (change driven write) > > Outputs are never connectable for write. Inputs may be connectable or not. > Other attributes may or may not be connectable. You have to reference the > documentation for the block of interest to find out. > > Beyond these rules, you will have to check the error returns and see what > the manual says. You have read the manual have you not? Yep, I have the Foxboro EDocs, plus older paper copies of the FoxAPI, though the EDocs is much better. =) I understand the connectable/settable properties of the blocks, so I'm not making a mistake there. I'm attempting to use a CALCA block that I created in my testing compound, and connect to it via an_add_objects() with the rdwrit(2) setting in the acctyp parameter array. For example, I'm attempting to connect to the following: JASON1:CALCA01.RI01 JASON1:CALCA01.RI02 JASON1:CALCA01.BI01 I've successfully connected these C:B.Ps using scopen() with the rdwrit flag, but not an_add_objects(). Note that I've done this during different sittings, restarting FoxAPI to clear the OM database, to ensure that it wasn't due to the object being locked from my scopen() attempt. I've ensured that the wdelta is >= than the rdelta, as per the docs, as well. The result is that I get a retval of -1 from the an_add_objects() call, a reterr of 76, which I can't find in the FoxAPI error codes appendix, but is listed in the foxapi.h file as invarg (invalid argument). For the life of me, I can't see this invalid argument in even a simple call. Here's my test call: The parameters: (just saying what they are, not how I set them up) nument = 1 name = "JASON1:CALCA01.RI01" acctyp = 2 rdelta = 2.0 rsr = 2 wdelta = 0 ret = an_add_objects(nument, name, acctyp, rdelta, rsr, wdelta, index, error, &reterr); Looks ok to me, according to the docs. I remember reading on the mailing list archives about other people that were having a similar problem with opening objects for writing using an_* functions, though I think it was dated a long time ago. I can probably find the messages again if needed. Finally, there was a note in the EDOCS under the an_add_objects that seemed confusing to me: "The call an_add_objects() adds an object for read-only access and returns error_array element nowriteob if the passed acctyp_array element is read/write, but: The object is opened for read-only access in the FoxAPI database in the server. The object's FoxAPI set has a zero (0) write scan rate (wsr), or MaxWriteObjects is exceeded." I'm not sure if this has anything to do with the error, but I attempted to read a configuration with an_read_init() with a MaxWriteObjects of 100, and that had no impact on the results. Note for reference, the exact same error comes up when trying the same operation using foxtst. >> Re: would it be possible, or even a good idea to prime the OM database with >> ALL points in the system by pre-adding all objects to it? > The ALIAS file allows this to happen when Fox/AIM API starts up. It is a > commonly used technique and is documented in the manual. You did read the > manual, right? :-) Noted... I reviewed the appendixes again in the FoxAPI portion, and there it was, right in front of me. =\ >> Re: Is there any difference to making an application that reads data from >> C:B.P (or the like) via FoxAPI, and one that uses the OM C library? > You get the same data, but... > > 1. Fox/AIM API will add a delay equal to the Read Scan Rate > 2. Fox/AIM API will optimize access to minimize the load on the CP. If > you have AIM*Historian and your application on the same box, it is quite > likely that the increase in network traffic and CP load would be zero. Why? > Because your application and AIM*Historian would be sharing the same OM > resources. > 3. The header files to use the OM API are not shipped on NT. > 4. We believe that Fox/AIM API is a better end-user API; the OM API is > for the pedal to the metal guys who don't mind using resources that could be > shared. > 5. There is a networking version of Fox/AIM API that can be used to > allow your programs to run either on or off platform with a linkage change. > This can be very useful. Thanks for the info here as well. Is there a significant performance increase in using the OM over the FoxAPI? I haven't reviewed the OM documentation thoroughly, so that will be my next point of investigation, where I'm sure I'll have more questions. My end goal is to review both FoxAPI and the OM API, and justify (to my client) using FoxAPI over OM directly. Performance is the biggest issue here, so if the margin of increase is slim, that will definitely impact our recommendations. Again, thanks for all the help. ############################## Jason Ewasiuk C.E.T. Software Developer Systems Department Matrikon Suite 1800, 10405 Jasper Avenue Edmonton, Alberta Canada T5J 3N4 Phone: 780.448.1010 ext. 4522 Fax: 780.448.9191 mail: jason.ewasiuk@xxxxxxxxxxxx web: www.matrikon.com ############################## **************************************************************************** * READER BEWARE: Unencrypted, unsigned Internet e-mail is inherently insecure. Internet messages may be corrupted, incomplete, misdirected or may incorrectly identify the sender. Therefore, nothing in this message or attachments may be considered legally binding. THIS MESSAGE IS ONLY INTENDED FOR THE USE OF THE INDIVIDUAL OR ENTITY TO WHICH IT IS ADDRESSED AND MAY BE PRIVILEGED. If you are not the intended recipient or their authorized agent, you may not forward or copy this information and must delete or destroy all copies of this message and attachments received. If you have received this communication in error, please notify Matrikon Inc. by telephone at (780) 448-1010. **************************************************************************** * _______________________________________________________________________ This mailing list is neither sponsored nor endorsed by Invensys Process Systems (formerly The Foxboro Company). Use the info you obtain here at your own risks. Read http://www.thecassandraproject.org/disclaimer.html foxboro mailing list: //www.freelists.org/list/foxboro to subscribe: mailto:foxboro-request@xxxxxxxxxxxxx?subject=join to unsubscribe: mailto:foxboro-request@xxxxxxxxxxxxx?subject=leave _______________________________________________________________________ This mailing list is neither sponsored nor endorsed by Invensys Process Systems (formerly The Foxboro Company). Use the info you obtain here at your own risks. Read http://www.thecassandraproject.org/disclaimer.html foxboro mailing list: //www.freelists.org/list/foxboro to subscribe: mailto:foxboro-request@xxxxxxxxxxxxx?subject=join to unsubscribe: mailto:foxboro-request@xxxxxxxxxxxxx?subject=leave