All Activity

This stream auto-updates     

  1. Earlier
  2. ctci04

    Batch logging of Data

    I am logging data on the PC. Can i save a batch of data, eg when process starts at 0300hrs and ends when the stop button is pressed , maybe at 0355hrs and have it saved to a file with a unique name., Furthermore I will be able to view the historically saved files on a Trend graph on demand. Any past references that i can refer to? TQ
  3. AzeoTech

    ctci04

    First, see if you can read the bits individually from the controller. Many controllers will offer discrete I/O both in packed form on an input / holding register, or as individual bits using coils / input status registers. But if you have to get it packed, just use the testbit() function. So in your LED, if you want it to light up if bit 3 (numbered from 0, so the 4th bit) is on for "MyChannel", you would do: testbit(MyChannel[0], 3)
  4. Hi. Need advise on how to address individual bits from a channel I am reading from a controller. Please advise which command to use...I need the bit to light up a LED display on the DAQ Thanks LAM
  5. AzeoTech

    Channel reading issues

    I'd have to see the project. Can you post it or email it to us?
  6. TheNovice

    Channel reading issues

    I have a project with multiple modbus channels. I have timings and events for those channels, while I monitor, I can see Tx and Rx for all the modbus ID's but the channel is not reading thus not collecting data, not executing event code as well as the UI component displaying that channel is not getting updated, until I force read it using channel.read('channel_X'). I am facing the same issue with 2 recent project. I am currently using a sequence with While loop to Force read all the channels. Any help would be much appreciated. Thanks!!
  7. There are actually very few times it is used as a command as it is largely left over from when DAQFactory had table driven sequences which was like 18 years ago. It is used most often for the U12 driver as the U12 is equally old and its driver thus developed during the time before proper scripting. The UE series devices I believe only use it for specifying the second input to use for differential analog inputs. OPC uses it for specifying the actual OPC tag (thus the OPC part of its name) but usually you should use the OPC browser to pick it. Other than that I can't really think of any other places a driver utilizes this field, thus the reason most people just use it for channel notes.
  8. Dear Guru ji, It would be really usful if there was a table or list of special channel mumbers and their fuction or application that are put in the "Quick Note / Special /OPC" column of the Channel Table. At the very least for the various flavours of LAbJacks. I know its possible to find them by trawinf through the forums, but id would save a heap of time if they were all in one place either on thr forum or in a manual. Thanks! Arjun
  9. AzeoTech

    Logging data from a Table

    Sure. Use the low level File. functions, specifically File.Open, File.WriteDelim, and File.Close. See 9.9 in the user's guide.
  10. pearsonben98

    Logging data from a Table

    Hi, I have a large table which gets values from a big 2 dimensional array, however this array is not a channel, and I am struggling to work out how I would be able to log the contents of this array. Looking through the usermanual, it only seems to mention the possibility of logging channels? Is there a way to simply store the array contents in a tab/comma delimited file? Cheers
  11. cjbassman2

    PC spec

    Thanks that does help. I'm not doing any trending, graphing or indeed maintaining any historical data, it is just displaying current status. It's unlikely to be doing any control as that will be left to the PLC. It will be the operator interface for them to interact with the PLC. The main thing is it will be fetching about 600 MW of data about once per second via Modbus TCP to display on the screen. It will be a 100MBit network. From what you've written I reckon the Atom will be up for the job. Many thanks for your advice.
  12. AzeoTech

    PC spec

    Its actually more about the historical graphing than anything else. I'm working on a system with a single Atom that runs 3 copies of DAQFactory simultaneously (to connect to three identical systems), but using OPC, but with about 1000+ channels each. But most of the automation is being done in the PLC, and DAQFactory is largely just an HMI in this case. The HMI has minimal historical trending, but does log to a CSV about 100 channels. The Atom is more than capable for this application and really only bogs down when I fire up the PLC's development environment, which is a bit of a behemoth and has nothing to do with DAQFactory. For that I had the customer buy an i7 laptop so that we don't have to run that PLC programming software on the atom. I'm working on a separate Atom powered system that is only about 15 tags, but does things at high speed (50 hz software sampled data rates) and stores and trends huge amounts of data. For this application I feel like the Atom was a bit underpowered. It works fine for the acquisition, but when they do the analysis and trending, it seems a bit sluggish for my taste. In general DAQFactory is 20 years old and was originally designed at its core to run on slow PC's 20 years ago. Even the slowest of today's computers are way faster than ones available 20 years ago, so DAQFactory should do fine. The issue often comes down to the OS: is the processor fast enough to adequately run the latest version of Windows? After that, it unfortunately comes down to the details of your application and, if the application has a lot of data processing, how efficient you are in your scripting, but this really only applies on more advanced applications.
  13. cjbassman2

    PC spec

    Hi, I'm just starting to develop HMIs for our next lot of factory automation. I imagine there will be around 10-12 screens of 1920 x 1024 resolution with a lot of Modbus TCP coms going on between HMI and PLC. I would like some guidance of whether a PC with an Atom E3845 and 4GB ram would be sufficient or whether an i7 would be necessary. The Atom is preferable as it's cheaper and probably will be cooler running in its enclosure but no good if it would be struggling. Any advice appreciated.
  14. AzeoTech

    Modbus pooling

    You don't really need the delay() between calls as the CPU is released while waiting for a response. You do need a delay inside any error handling, i.e.: while(1) try // read the devices catch() ? strLastError delay(0.1) endcatch endwhile If you don't then if there is a typo in your code, or some other error, it will get repeated without any CPU release, tying up that CPU and possibly hanging or at least greatly slowing DAQFactory. A few notes on your app: 1) 115200 is quite susceptible to noise due to the duration of each pulse, so be especially diligent with your shielding and termination 2) there is often required a 10 to 20ms delay in polls when switching between multiple devices on a multidrop system. This is because the transciever on the first unit will "hold the line" and not allow you to move on. 3) for the above reason, and because DAQFactory is multithreaded, you can get much higher data rates if you put each device on its own RS485 line and then have separate, concurrent running script to poll each device As to your original question, you can always use the time stamp of your data points to determine throughput. Or add script to do so using the system clock.
  15. AzeoTech

    Table Sliders too small to click

    You can always just not use the built in slider and either use the separate Slider component, or another component (like up/down arrows) to scroll. To do this, you need a variable with the top index, for example: global tableTop = 0 global tableRowCount = 20 Then, in the table, you should subset all your columns: myData[tableTop, tableTop + TableRowCount - 1] Then, use a scroll bar component or other components to adjust the tableTop variable accordingly, limiting it to 0 to however many rows you have.
  16. Hi, so i have a big table which will store hundreds of records. When i populate the table with all the data, the slider to scroll up and down is barely big enough to even click with a mouse. The main issue is that I will be planning on running DAQfactory on a small 7inch touch screen display, and i don't believe it will be possible to click the tiny slider in order to scroll up and down the table. Is it possible to resize the slider so its actually usable? I couldnt find anything in the userguide in section 17.8.2.26 - Table Component. Cheers, Ben
  17. effman

    Modbus pooling

    I have to pool several different modbus RTU devices on single rs485 line. Baud rate is 115200. Pool time must be az short az possible. Is there any possibility to get info about finished modbus transfer? I mean some property to check each 25 ms to make the pooling as fast as possible? Or any other way to avoid delay() between modbus calls? Thank you in advance for support Tibor
  18. AzeoTech

    Modbus write multiple registers

    There is a limit defined in the Modbus spec. I don't remember off hand what it is, but I think it is 63 bytes of data for RTU, and each register is 2 bytes. But don't take my word for it on the exact number. The point is that it is a Modbus limit, not DAQFactory, though DAQFactory enforces it. Also note that some devices don't support setting of multiple registers. This is not your case, as it is obviously working with 16 registers. I simply mention it for others that may have issues trying to set more than one at a time.
  19. pearsonben98

    Modbus write multiple registers

    Hi, thanks for the advice, this works properly now. However, is there a maximum sized array that can be passed to the datapoints field? I currently have a datapoints array with 32 addresses, but i need to write: device.myDevice.setRegisterS16(station, starting_address, data[0,16]) device.myDevice.setRegisterS16(station, starting_address, data[17,31]) I am unable to simply do device.myDevice.setRegisterS16(station, starting_address, data). Cheers, Ben
  20. CH2014

    sms message

    Sorry for the delay in replying. Just getting back into the GSM modem project. Thanks for the useful information.
  21. CH2014

    Graph Trend Line between 2 points changing

    OK, thanks for the reply.
  22. The modbus write function is documented here: https://labjack.com/support/datasheets/t-series/scripting/labjack-library I don't spot anything wrong in your calls to set FIO0 to output-high and output-low. Check out the Lua example "Toggle DIO 1Hz". We can continue troubleshooting that, but my approach might be a little different. How about using USER_RAM0_U16 and having the Lua script increment it when desired. Then DAQFactory can read that register and note if it has changed from the previous value. That way you never miss a trigger. https://labjack.com/support/datasheets/t-series/lua-scripting
  23. AzeoTech

    Modbus write multiple registers

    You can definitely do it through script. Just pass an array for data points. So for example: device.mydevice.setRegisterS32(1, 100, {1,2,3}) which would set register 100/101 to 1, 102/103 to 2, and 104/105 to 3 (register pairs because of the S32 of course). Note that it is "Set" not "Write", and is "Register" not "Holding" because Input Registers can't be set, so there is no reason to differentiate on the output side. Note that with channels, DAQFactory will automatically combine reads of the same type into a minimum number of calls if they are consecutive and the same data type. It will not fill in blanks, though, so sometimes its best to create dummy channels. That said, on the output side you cannot do multiple outputs with one query through channels because there is no way to set multiple channels simultaneously.
  24. I'm going to let LabJack give you a more specific response, but in general you'd want to set some flag, possibly a digital output, or some virtual I/O point that is accessible through the LabJack driver. Create a channel for that point, and then use the Event of the channel to look for a particular state and trigger your sequence.
  25. AzeoTech

    Graph Trend Line between 2 points changing

    It is because of the way DAQFactory optimizes the graph data on large data sets. It does a boxcar min/max and as new data comes in the boxcar locations change causing those mins/maxs to change slightly, especially at edges like when no data is coming in. This can make the connecting line jump around. Normally you can't see it because its only one pixel.
  26. I've noticed that if DF has been switched OFF for a few days. The trend line between the data points that DF was switched OFF keeps changing every few seconds. See the attached images (period: day 17th and day 18th). The graph is a 7-day graph. It's not a major problem as DF will normally be ON all the time. I was just looking for any suggestions on how to stop this.
  1. Load more activity