

SteveMyres
Members-
Content Count
458 -
Joined
-
Last visited
-
Suggest the following. These settings look closest to what the working settings are called in that note I directed you to. semail.strAuthenticate = "LoginPlain" semail.strConnectionType = "SSL_TLS" semail.strSSLProtocol = "SSLv2orv3"
-
Or build an SMTP server. And yeah, I think you have to enable 2FA to get it working.
-
Host created an FAQ that includes screenshots for the steps at https://hosteng.com/FAQFiles/Do-more.htm#FAQ0054 They did the FAQ earlier this week and were of course testing it as they went, so I know it still works.
-
Yes, I'm using a GMail.Com address and that process is what I'm using with all my emailing PLCs, and they're all still working as of last night.
-
It actually does, it's just more roundabout than before. You have to set up the GMail account to use 2 Factor authentication. Then, while logged into your account, you can get GMail to generate a new password to use with "less secure" devices (or software) that can only do username + password. I guess GMail assumes that if you're logged in using 2FA to generate the password, then the necessary enhanced security wonderfulness will rub off on that password. I do this with PLCs quite a bit, and there's a step by step instructions on how to set GMail up for this at ttps://forum.hosteng.com/index.php?topic=3163.0. Scroll all the way down to the bottom of the page.
-
Quickest interim solution -- just added a VLOOKUP() to the Excel file, so the name is actually in the CSV verbatim.
-
Right, I had used parens. Just typed from scratch and messed it up in the post. OK thanks for the explanation!
-
I'm retrieving from a CSV file a 2D array where the fields are a mix of strings, numbers, booleans (encoded as "TRUE" and "FALSE") and one field containing a number that's a list index. So I'm displaying the array in a table where all the column definitions are MyArray[][FieldNumber], and they all work fine. The list index doesn't work. I tried the following expressions TypeList[ConfigurationArray[][10]] //and TypeList[StrToDouble[ConfigurationArray[][10]] but what I get instead is a list of TypeList[0..n], even though ConfigurationArray has all "5"s in the 10th column.
-
It would be cool (my apologies if this already exists) to have compact syntax to directly extract a smaller size value from a variable/channel value without having to do an inline To.Bit() or whatever, and also to aggregate multiple consecutive values in an array as a larger type. For example, if MyVariable is 64-bit, MyVariable:UW0 might return the most/least significant 16 bits, interpreted as an unsigned word. MyVariable:37 might be the 37th least significant bit, and so on. As a delimiter, I'd suggest a period or a colon if available. If you had an array of smaller values, even if stored in 64-bit registers, you might be able to cast two consecutive ones into a single 64-bit value, interpreting each of the individual registers as 32-bit. This is probably less useful than the other application, in a DAQ Factory context, where all numbers are automatically stored as 64-bit.
-
Has anyone used DAQ Factory to archive data logs that comply with CFR 21 Part 11? (FDA Electronic Data Records standards) How about compliance for the entire software system?
-
Save As older version CTL
SteveMyres replied to SteveMyres's topic in DAQFactory New Feature Requests
Slick idea! Is there a way to tell a CTL version by direct inspection?- 5 replies
-
- version
- back compatibility
-
(and 1 more)
Tagged with:
-
Save As older version CTL
SteveMyres replied to SteveMyres's topic in DAQFactory New Feature Requests
Oh OK, thanks! Didn't realize the EXEs could share all the same support files. Well, to some degree, but didn't realize it would span across all releases. Cool. So I'd need to maintain a log of what customer was at what release, and I can see that getting out of date. Is there a way to tell directly from the CTL file what version it is so I don't inadvertently update it to a newer release?- 5 replies
-
- version
- back compatibility
-
(and 1 more)
Tagged with:
-
I have a bunch of customers in the field running DF applications I've done for them, and when they make changes or upgrades, I do the programming and create a new CTL for them. If I upgrade versions (and only maintain the latest version), then my editing the CTL forces them to update their DF runtime install version for compatibility. I guess I could maintain a copy of all older versions (presumably one per in virtual machines), and just do edits for customer X natively in the version that he has. Seems like it would be helpful if in the latest version I could do a Save As, say to v16 or whatever. Thanks!
- 5 replies
-
- version
- back compatibility
-
(and 1 more)
Tagged with:
-
Periodic write of channel group
SteveMyres replied to SteveMyres's topic in Channels, Conversions and general data acquisition
Originally, DF WAS a TCP server, but Wonderware for whatever reason was having trouble getting a response to the polled registers. Round 2: Installing a Modbus RTU (slave) to Modbus/TCP (server) gateway. I want DF to be the RTU master, so that I can control the frequency and timing of data transfer to the gateway. What I didn't realize is that outgoing (write) channels are ONLY event driven on a write (which most times is what you want). You can't enter timing and offset in the channel table, and there's no WriteGroup() equivalent to ReadGroup(). So my problem was that as I calculated the 20-25 values in sequence, each time I calculate one, DF is going to generate a one-channel write, which is not what I want. What I want is to write all 25 or whatever on a timed interval, analogous to the way reads are done. I ended up using option (2) above. Create a new array variable, execute MyArray.Append(CalcedVarNN) as I calculate the variables, then do a single write of the entire array from sequence on a time schedule. -
Periodic write of channel group
SteveMyres posted a topic in Channels, Conversions and general data acquisition
I have a channel group that contains a mixture of user-input values and values computed by DF with the user inputs and measured process values, about 20 channels total. This group is set up to be read by a remote Wonderware instance, and the channels have been set up as Modbus slave registers. I can [usually] read the channels but for some reason Wonderware has issues with it. If I set the channels up as writes (SetRegister) I find that I cannot set a timing nor offset. Typically writes are event-driven, so that's expected, but I'd like to write the group en-masse periodically. There doesn't exist a WriteGroup() analgous to ReadGroup(), and even if there were, I don't want the individual channels writing event-triggered as they're computed in script. Two approaches have occurred to me: (1) Disable the comm device before the computations (which are close together in script) and reenable when complete, but I doubt that the group would then automatically write, just from having been reenabled, or (2) leave the channels as Test Channels in the channel table, and create a new array variable. As the variables are calculated, append them to the array, then when complete, execute the write from script. Any other approaches that seem viable?