RDDay

Members
  • Posts

    14
  • Joined

  • Last visited

RDDay's Achievements

Member

Member (2/5)

0

Reputation

  1. Hello, I am looking for advice on the best method for controlling the power to the step-down transformer as shown. To avoid switching noise issues, I've been looking at scr modules Fotek SCR-25LA that allow linear control of the power with a 4-20mA signal. I've also been looking for an SCR module that takes a 0-10 volt signal that I could drive directly from the DAC board. Have not found this yet. I have breifly looked at PWM but I'm not sure how or what noise issues might be involved with this form power control. Any advice and/or pointing me in the right direction is appreciated. Situation: Converting a vacuum drying kiln for exotic hardwoods from an obsolete control system to DAQ Factory based contols using two Labjack U3-HV units. There are 15 thermistor inputs and one vacuum sensor input. For the outputs, there is control of the vacuum pump and six resistive heating zones, each controlled seperately.
  2. 1) In the button action sequence below: private string strFileName = File.FileOpenDialog("c:\DAQfiles\*.csv") if(IsEmpty(strFileName)) return endif private Handle = File.Open(strFileName,1,0,0,1) strProfile = File.GetFileName(Handle) <<<<<< Profile = File.ReadDelim(Handle,-1,",", chr(10),0) File.Close(Handle) I have tried both 'GetFileName' and 'GetFileTitle' in line 6. Both return the file with the .csv extension. Is there a way to get the file without the extension? I can use string functions but would like to keep things simpler. 2) How do you create a new file (new profile) from a sequence? It would be saved to the same directory as above, but I need to create a new profile name (file title) from a button quick sequence. 3) Is it possible to set component action variables programmatically? For example, the setChannel and range of the 'Set To' action. 4) Is it possible to run multiple versions of DAQfactory simultaneously on the same PC? Each version would have different settings for addressing the I/O boards. We have three vacuum drying kilns that run independantly, but are fundamentally the same for operating characteristics. I'm thinking of having duplicate DAQfactory files named like Kiln1, kiln2, and kiln3 and then setting each file for addressing the different I/O boards.
  3. RDDay

    Floating traces

    4) While running profiles with varying PID constants, the traces on the graph seem to float up and down by a degree or so. This is depicted in the two screenshots of the same time marker at differeent times taken.
  4. 1) I try loading a string, with the “&” a part of the string, into a variable text component, but it does not show up, only an underscore that's offset half a character width. Is there a delimiter or method for accomplishing this? 2)The workspace window goes blank, no listings, after I do an ungroup. Is there a way to refresh the window without reloading the program? 3) I have Time/Temp profiles stored as .csv files as shown. How do I read the complete selected file into the array Profile. I am running this in a button quick sequence. strFileName = File.FileOpenDialog("c:\DAQfiles\*.csv") private Handle = File.Open(strFileName,1,0,0,0) strProfile = File.GetFileTitle(Handle) Profile = File.ReadDelim(Handle) <--- trouble here File.Close(Handle) Note: I have initialized most variables in autostart sequence.
  5. Looking through the manuals of DAQ Factory and Labjack UD, I haven't found information regarding the use of DAC0 and DAC1 on a Labjack U3-HV. The basic question is how to address the two DAC channels for setting their values and being able to reference them in various components? Thank you
  6. This sequence interpolates a temp value from a thermistor lookup table, resistance to temp with tempC in column 1 and tempF in column 2, ie. tt. I can't get it to work. The expression box in the pic shows pink, so I'm assuming the function is not being recognized. I've changed things as suggested: function LUTtmp(R) for(private i = 0, i < NumRows(LUT), i++) if(R => LUT[i][0]) private T = (LUT[i-1][tt] * (LUT[i][0] - R) + LUT[i][tt] * (R - LUT[i-1][0])) / (LUT[i][0] - LUT[i-1][0]) return(T) endif endfor Auto start sequence: global string strTmpType = Registry.strTmpType global tt if(strTmpType == "C") tt= 1 else(strTmpType == "F") tt = 2 else // Error Window endif Expression or conversion call: function LUTtmp(Temp1[0])
  7. I put this in the auto start sequence and get an error C1000nat third line. function LUTtmp(var.R) for(var.i = 0, i < NumRows(LUT), i++) if(R => LUT[i][0]) var.T = (LUT[i-1][tt] * (LUT[i][0] - R) + LUT[i][tt] * (R - LUT[i-1][0])) / (LUT[i][0] - LUT[i-1][0]) return(T) endif endfor
  8. I found that restarting the document cleaned up the listing. I have been able to edit components by right-clicking on them under the Grp listing in the workspace window. When do you expect the next release to happen?
  9. 1) Is the “var.myVar” declaration a double byte value? Are integer, single byte unsigned values used in DAQfactory or just the standard double byte? Is “var.” a private or global type or is it dependant on context? Also, from the DAQ user guide example below, FileHandle is declared each time it is used. Is this necessary when using the “var.” declaration? Var.FileHandle = File.Open("myfile.txt",1,0,0,0) Var.strIn = File.Read(Var.FileHandle,10) File.Close(Var.FileHandle) 2) I am creating a function sequence to use a lookup table for interpolating data to return a temperature. The function will be used throughout the document. Do I put the function statement (declaration) in an auto start sequence? Can I use this function in a conversion expression?
  10. 1) Are capital letters required, ie. Page.myPage.Component. … or page.myPage.component. .... ? 2) My application will be full screen but it makes it difficult in development mode to see all the screen components. Is there a way to pan around the page window in development mode? 3) In scripting a background color change, ie. Component.myButton.BackColor = FF0000, does not process but Component.myButton.BackColor = RGB(255,0,0) does work. I prefer the first approach because the format is the same used in the Properties window. 4) Is it possible to do something like this – Component.LG_Temp*.RangeMax = myExp to replace this: Component.LG_Temp1.RangeMax = myExp Component.LG_Temp2.RangeMax = myExp Component.LG_Temp3.RangeMax = myExp Component.LG_Temp4.RangeMax = myExp Thanks
  11. When I group two components, as shown in pic1, I get multiple entries in the expanded tree list of PAGES:Constants:Grp_TmpMax. Also, when selecting the individual components under "Grp_TmpMax", nothing happens. What do I need to know about this? I have the same row of buttons on the bottom of three pages. Three of these buttons select one of the three pages. I have built this row of buttons on a seperate page and made a group of the eight buttons. I have duplicated the button group and changed the page of the duplicated group for each of the three pages. Are the duplicates on the different pages seperate instances of the button elements or can I change the original group and the different instances will change accordingly? I notice that the button groups duplicated on the three pages are not accessable through the respective page component tree. The tree shows the button group but is not expandable. This also brings into question the proper way to reference the button components. My backup plan is to ungroup the buttons on each page. Doing this has allowed the quick sequence code to work, pic2. But something odd happens when ungrouping the button bar, the workspace panel goes blank requiring a restart of the program. Is this a glitch or is there something to know here?
  12. Hi, I initialize some global values from registry values in the auto start sequence. // setup LabJack I/O drivers include(c:\Program Files(x86)\LabJack\Drivers\LabJackUD.h) using("device.labjack") // set Registry Variables (defaults) global TmpMax = Registry.TmpMax global TmpMin = Registry.TmpMin global VacTimeOn = Registry.VacTimeOn global VacTimeOff = Registry.VacTimeOff While monitoring these values in the watch window, they change when I enter the program. They become the minimum value of the knob component their assigned to for changing.
  13. Thanks, Fortunately, my needs for the use of edit boxes is to create, edit, and view Time/Temp profiles and save them to a file, a static page. Profiles are loaded and run from another sequence. The page.updateEdits() is exactly what I need. However, it's good to know the limitations of the edit box, I take heed. I skipped the switch for a button. I liked the visual of the switch, on and off positions visually moving. A little background and text changing will do but not as cognitive. I do have a sequence issue. Catch you there.
  14. Hi, What is the better way to pre-populate edit boxes with the value of the variable that is associated with the edit box? How can I have the toggle switch component trigger (toggle) a sequence in it's own thread? Thank you RD