

Andreschrosa
Members-
Content Count
107 -
Joined
-
Last visited
Community Reputation
0 NeutralAbout Andreschrosa
-
Rank
Advanced Member
-
Detecting a Channel Timeout and stoping it
Andreschrosa replied to Andreschrosa's topic in Sequences and scripting
Yes I did channel.restart(). Think it must be the big number of channels that is linked to each equipment, when they timeout they lag the conversor, probably, I have about 130 channels reading stuff from each equipment. So it's 130 channels timing out continuously. -
Detecting a Channel Timeout and stoping it
Andreschrosa replied to Andreschrosa's topic in Sequences and scripting
Still not working. In the sequence where I send the data to MySQL database I had some code to look at the time of the channel, and if it was delayed for more than X, it would fill all the data with zeros and send. In this same IF statement I put on a execute function to set the channel timing to double the actual value each time the zeros are send to the database. However this didnt prevent the other equipments in the same conversor to begin timing out until they stop reading. Maybe this is got to do with the number of channels timing out. -
Detecting a Channel Timeout and stoping it
Andreschrosa replied to Andreschrosa's topic in Sequences and scripting
Yes, that much I've been thinking, but I dont wanna restructure all that part as of yet. The problem is how to know if the equipment has been reconnected/restarted and begin reading it's channels again automaticaly... probably it's not so critical beacause the user will have an alert fire telling him of the devices timing out. -
It would be very useful to be able to do it! I'm having a problem here: we have several equipments connected in a ethernet-rs485 conversor, if one of then is disconnected from the network or malfunctions, the channels associated with it keep trying to read and time out lagging the other equipment's data flow...
-
Running functions in parallel
Andreschrosa replied to Andreschrosa's topic in Sequences and scripting
I can, but the problem is the time it takes to read all the memory while it still is registering (hardware restriction). It will take the all equipments in a single conversor down for about 2:28 for each equipment on a conversor. The best solution in this case is like I said just read from memory in case of a big event that takes the machine running DAQFactory down. Anyway we got all the same values that go to memory being read by DAQFactory on the same 30 seconds interval, so it would be redundant data. Thanks for the help =) -
Running functions in parallel
Andreschrosa replied to Andreschrosa's topic in Sequences and scripting
Yes, I'm using DAQFactory modbus for the read input float that keeps reading data from the equipments. However there are times when the user will want to read the data stored in memory, I wanted to have it done in parallel with the data acquisition paused for about 3 hours, but it seens this will not work this way. It would require for that other application to steal the connection from the converter, get the data from memory then get out and let DAQFactory continue to do the regular data acquisition. And that probably is prone to a lot more of errors and headache than it's useful to have implemented. Instead, I'll advise the user to only read the data stored in memory in case of a particular event, one where he knows the communication with the DAQFactory application was cut and he need to see the memory. -
Running functions in parallel
Andreschrosa replied to Andreschrosa's topic in Sequences and scripting
I was thinking to use another application to read those memories, but my main doubt is can the same IP (the ethernet-RS485 conversor IP) be used by DAQFactory to send modbus read input float and send another modbus command to read the memory? Does DAQFactory locks the TCP/IP communication? In the sequence I wrote to read the memory, I must do device.lockport() to get all memory blocks right, so I fear I might already have answered my own question. -
Running functions in parallel
Andreschrosa replied to Andreschrosa's topic in Sequences and scripting
Probably this is the problem then: we currently have three to four equipments per device. By shuffled data I meant some data from one equipment was sent to the database as belonging to another, likewise caused by the five threads running on the same device. Think it will have to run sequentialy inside each device in the network, each device on it's thread then. -
Running functions in parallel
Andreschrosa replied to Andreschrosa's topic in Sequences and scripting
It seens to work, although the data seens to be shuffled when inserted in the database. My memory reading function call another function sequence that calls another function sequence and so on, there is a total of 5 function sequences called from the initial one. Maybe I should start a thread for each one of those, opposed to let then just call functions? -
Running functions in parallel
Andreschrosa replied to Andreschrosa's topic in Sequences and scripting
Ok, thanks for the tip that was what I was looking for, will try implementing it now. -
Running functions in parallel
Andreschrosa replied to Andreschrosa's topic in Sequences and scripting
Exactly, I dont know the exact number of equipments and it must be done in parallel, or the memory reading time will be too long. Then I must go for the advanced way, which would it be? -
We have several equipments connected in ethernet-RS485 conversors, and the network has about 9 of those conversors. I'm wrinting a sequence to read the memories of several equipments, and I wanted that reading to be run in parallel. The sequence that reads their memories is ready, but my doubt is in the next step: using the function notation on a sequence, can it be called over several times to run in parallel or it would aways run to the end of each function call before starting the next function call in the for loop? I will post bellow an algorithm of what I'm doing: for each conversor in the network do for each equipment in a conversor do ReadEquipmentMemory(conversor, equipment) endfor endfor ReadEquipmentMemory is the function sequence I wanted to run in parallel.
-
Is it possible to call DAQFactory from windows, something like a shell command, to start a sequence?
-
Is there any way to read when a channel reading times out? I wrote a sequece to get the latest channel value and write it to MySQL database, and it would be very interesting to be able to write if the channel has timed out. The solution I'm using now is to write zeros if the time difference between the latest read is greater than the stabilished timing *3, from the system time.
-
Modbus and Ethernet
Andreschrosa replied to Andreschrosa's topic in Channels, Conversions and general data acquisition
Probably gonna use the auto-login, I found our intranet server works that way too, so that wont be a problem now. Thanks!