AzeoTech

Administrators
  • Content Count

    5,685
  • Joined

  • Last visited

Community Reputation

0 Neutral

2 Followers

About AzeoTech

  • Rank
    Guru

Recent Profile Visitors

50,388 profile views
  1. AzeoTech

    Date time component

    OK, are you sure it is 32 bit? Doesn't matter, but seems excessive since each value is well below the 16 bit limit. Anyhow, you'll have to create a global variable that contains the start time and one for the end time. Then have the user interface elements edit those variables. You'll need a button to trigger some script that updates the schedule times in the PLC. That script could be done in a number of ways, but probably the easiest is to use formatDateTime() [see section 4.12.11 of user's guide] to get the date/time number into a comma delimited string: private string x = formatDateTime("%Y,%m,%d,%H,%M,%S", starttimevariable) then use parse() on that string to get each value: private out = parse(x, -1, ",") which will return an array of those 6 values which you can then send to your Modbus device.
  2. AzeoTech

    Date time component

    In 6 different registers?
  3. AzeoTech

    Date time component

    Well, the trick is first determining what format your device expects the date and time. You definitely can't just tell it January 15th 2020. It won't understand that, and Modbus doesn't support sending that sort of information anyway. Usually date and time is stored internally in computers as some sort of number referenced to an epoch. For example, DAQFactory stores date/time information as seconds since Jan 1, 1970 (standard Unix time format), while Excel uses decimal days since 1900. These are very different, as today we are at about 1.57 billion seconds since 1970, but only about 44,000 days since 1900. Anyhow, you'll need to find what your device expects then I can describe how to get there.
  4. AzeoTech

    Emotron floating point format & Modbus

    I'm afraid it would take a bit of experimentation so you are on your own. But yes, if the value is less than or equal to 32767 you can just treat it as an integer and use it as is. If it is > 32767 then you have to do the conversion.
  5. Can you post a sample of what you have so I can see what might be wrong?
  6. Neither. It is accessible from script. But since it is inside the group, you have to reference the group as well: component.groupname.componentname.memberVariable This way, if you duplicate the group, or make it into a user component, you can give each copy of the group a different name and not have to rename all the enclosed components.
  7. AzeoTech

    2018 Update?

    It is just a variable you set: page.scaling = 0.5 for example will scale the page at 1/2 size. You can use the page.screenwidth and page.screenHeight variables to automatically calculate and update the scale from a sequence.
  8. AzeoTech

    Emotron floating point format & Modbus

    OK, that is a new, and quite proprietary way of dealing with floating points. I don't know why they just didn't do what everyone else does and use two registers and regular IEEE floating point format.... You have to take the U16 value you get from the PLC and process it like they are floating point values in this weird format. You can tell if they are floating point because the value returned will be > 32767. There is not a simple Conversion you can apply. You would have to use script. I'd probably either use the to.bit function to get the bits and then calculate it, or use some bitwise math to extract the proper values. The tricky part is the sign, which is not in a usual place because the breaks aren't at 8 bit intervals. You will likely need to experiment.
  9. AzeoTech

    Justifying variables

    It shouldn't change the Z order. But it will make the components opaque.
  10. If you are opening a database but never closing it, you will leak memory. It will be a pretty slow leak, but after a week could use up all available memory. Windows responds to complete loss of memory in weird ways, and a bluescreen is not unheard of. Personally I don't close my databases. I open them at startup and just leave them open while DAQFactory is running. DAQFactory will close it automatically when it shuts down. File handles often have to be closed to force Windows to clear the write cache, or to allow other applications write access to the file, but databases do not have this issue. If you are seeing that the database appears to not be updating in another program while DAQFactory is working with it, it may be that the database is transactional and you need to perform a commit on the database. The SQL command for this varies on the database, but for, say, Firebird, the command is just "Commit".
  11. AzeoTech

    UDP Communication

    We had some issues with reliability in some cases so dropped UDP support. The code is, however, still in there. We just removed the button to allow you to add a new UDP connection. So, you should be able to create a document in the older version with a UDP connection, then bring it forward to the new release and the port will still be there. If your document is complex, we might be able to do this for you without you having to recreate your document. Just email us the doc. You would, however, need to be on the latest release.
  12. AzeoTech

    Justifying variables

    Yes, go to View - Properties to display the docking properties window. Then select your component(s). Find the property named "Align". Set to 0 is default auto-size, 1 = left justify fixed size, 2 = center, 3 = right. Once it is non-zero, you'll be able to resize the component, and in fact need to to make sure the component is big enough for all values as the system will no longer size it for you.
  13. 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)
  14. AzeoTech

    Channel reading issues

    I'd have to see the project. Can you post it or email it to us?
  15. 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.