AIM

MSN

Website URL

ICQ

Yahoo

Jabber

Skype

Location

Interests

I have just started using DAQFactory and now DAQFactory Express (both Release 17.1 Build 2309) for monitoring a temperature controller via RS485/Modbus.
I am impressed with DAQFactory (thanks to the developers for such a great product) and am slowly getting an understanding of how to use it after lots of attempts, reading and searching of the forum.
I have been able to configure a new RS485/Modbus device in DAQFactory and successfully connect using a USB-Serial adapter to a Shimaden SRS11A temperature controller and retrieve the current temperature value. I have also configured a single channel and a logging set which work well.
I am trying to add some error handling to manage serial port errors on the RS485/Modbus connection such as when the RS485/Modbus device is powered off, the USB-Serial adapter is not plugged into the computer, or a RS485/Modbus timeout. I am using the OnAlert() function to deal with these types of errors as they are not caught by using the Try/Catch approach in scripts/sequences.
This is catching errors/alerts OK except I am observing inconsistent behaviour. I have an auto-start sequence called Main which sets the Channel timing to zero then does a device...initcomm() to see if communication is working.
When I setup a test scenario where the USB-serial adapter is connected but the RS485/Modbus device is powered off, I sometimes get a timeout error, no error or an occasional error where DAQFactory cannot load the driver TriLogi.dll (I am not using this driver, my device is using the supplied ModbusRTU one).
The fault is probably something I have or haven't done but I was wondering whether anyone has seen something like this before?
Any help or suggestions are welcome.
Thanks
Paul

I am trying to read register value from Banner DXM 100 controller.
I created COM port serial connection- 19200,8, none, 1, 1000ms.
When I am trying to read register 2 using Channel # as 2(also tried 40003), I am getting P-ModbusRTU 0010: Timeout error on every read and P-ModbusRTU 0014: ID Mismatch error after several reads.
I am trying to read every 2 seconds with offset 0. Port monitor and channel details look something like the image below:
I have tried 'n number of ways to read the register value, by changing- modbus ID(on the device and Daqfactory), baud rate, channel#, timing, offset, I/O type, device timeout(to 2000ms) etc. but no luck.
Has someone encountered such issue before and can help me?
Thanks!!

Hi Guru,
I am currently working on the Murphy 467 Controller to achieve multiple scheduling for my pumps.
Controller: https://www.fwmurphy.com/uploaded/documents/pdfs/obsolete/00-02-0672.pdf
http://irrigationautomation.iassys.com/wp-content/uploads/2014/07/Manual_467_IAS.pdf
I am getting the following error when I try to run the scheduling part.
Timeout and Port locked error are throwing up in my log.
I am currently a new DaqFactory user.
Let me know if I can assist you with any other information.
Thanks!

Hi,
I'm having some issues I think with a conflict between 2 devices. I thought it was an electrical issue but i am now pretty sure it is daqfactory.
I have a usb to rs232 connected to a flow controller and use a custom protocol to poll it via the virtual comm port as per the instructions in the manual, driven by 1 channel at a timing of 1 sec and add the parsed data to channels. This works great. I also have an arduino chip built into my embedded computer that is running a modbus protocol (although the chip is built in to the board, i think it also runs a usb to serial adapter chip). This also works great and i use a sequence to read some registers and put them in channels. To write to some registers i just use the modbus commands on the channel and set the channel.
The problem I am having is that if i switch some valves on/off by setting the registers, sometimes the RS232 adapter to the flow controller will drop out and i have to unplug in order to then initcom(). I get a timing lag error. I think what is happening is maybe if the writing to the modbus registers happens at the same time as the channel timing talking to the flow controller, the flow controller comm port gets locked up somehow? I'm not sure if this is an accurate diagnosis. The modbus read doesn't seem to be affected but it is in a sequence with a try catch.
I tried reading the flow controller in the sequence with the modbus, with both reads from the modbus and the flow controller on a 1 sec loop with 0.5 sec offset. They both have try catch and the data comes in fine. But writing rapidly to the modbus I can still get the flow controller to drop out. I was thinking to move the writing to modbus into the sequence also, so I can be sure it never sends data at the same time as the reads but I'm wondering if i'm going about this all wrong!? I don't understand how the two different devices can affect each other like this as it's a different device, different protocols and different ports???
Any ideas would be great
Cheers

I set up a Modbus/TCP server (slave) to share a mix of user input values and values calculated from a combination of those user inputs and process value channel readings. That works well. Kudos on how easy it is to set that up!
The user inputs don't change often, so I persist them across sessions. When starting DF again, the persisted values are displayed and used correctly in the calcs, but DF doesn't seem to want to respond with the persisted values to Modbus requests. If the requests include only the calculated values it works OK, but if they include the persisted values, and those have not yet been set during the session, DF fails to respond to the query. If I then set the user input values, DF will respond as expected to requests, even if they include the user values.
As a workaround, I can probably push the persisted value back into the channel on startup, but why would it be doing this in the first place?

Hi,
i have a very important project task which consists of using a server to send data to adam 6050 so that it could block a product line by sending 0 to it.
it is my first time using adam module so I would like to know :
1-Which programming language can i use it that adam 6050 may support it ?
2-how does adam 6050 read the server data ?
3-how can it block a product line ?
4-how does the server know if the line is blocked or no ?
Please help!
Thanks,

Hi..!
I am working with DAQFactory, and I want to know if it's possible to make a channel with ModbusRS485 Device Type to be an Read/Set Register at the same time.
In the control I have, I can do it local, with a COM Tester, but with DAQFactoty I have reading channel or writing channel, but not both.
Is there any way to establish a Channel to be readable and writable?
Help..!
Thanks.!

Hello!
I am trying to acquiring data from a ModbusRTU Slave. But I have got some problems with the configuration of the appropriate device or the channel.
I always receive 2 answers. None of them doesn't contain the information.
Tx (17:13:03.000): \001\003\000\034\000\002\100\001
Rx (17:13:03.002): \001\003\000\034\000\002\100\001\001\003
Rx (17:13:03.009): \004\000\000\000\000\250\051
Tx (17:13:04.000): \001\003\000\034\000\002\100\001
Rx (17:13:04.001): \001\003\000\034\000\002\100\001\001
Rx (17:13:04.008): \003\004\000\000\000\000\250\051
As you can see in the screenshot - in the Command/Alert window I always receive the "CRC Fail"-Message.
The Baudrate, Com-Port, and so on are configured correctly.
Could you help me to solve the issue or say me what I am doing wrong?
Thank you in advance.
Best regards
Slava

Hi,
I am having some issues with Modbus and a temp controller. I think I am ok with daqfactory but very new to modbus. In the past I have used my own comms protocol over rs232 but now trying modbus over rs485. I have an omron K3SC-10 usb to rs485 converter and used this with a Yokogawa temperature controller absolutely fine. I used Modbus ASCII, found the registers in the manual and used the standard daqfactory commands to read holding S16 for each register. Surprisingly easy! I couldnt get hold of another yokogawa temp controller so bought an equivalent Omron E5CC model. Its running Modbus RTU and I have SD and RD traffic so everything is working comms wise. The manual wasn't so easy to understand so this took a while.
My problem is that I just get modbus timeouts when I try to read any registers, sometimes I got some random (to me) data but then it stopped. I think this is because it doesn't recognise the commands I am sending? I found the quickmod program that you made (screenshot attached) and i can see some of the data I want: 248 is 24.8 degrees C! I don't really understand the tag number and number of points? Is tag the register? Is number of points trying to read an array or a range of registers?? I'm very confused but think I am close. I've attached the temp controller comms manual. I don't really understand about 2 or 4 byte modes and if the registers are in hex or what!?
I think I have got as far as I can now using trial and error and very basic understanding but now maybe I need to actually understand what's going on! I'm ok with rs232 because you send it a command and it sends something back, simple conversation. I think modbus is the same, but I don't really understand the conversation between devices and the upper, GUI level isn't working for me. Maybe it's simple and you can explain what I am missing or if you have a suggestion for some easy learning material for me? I need to read the temperature controller PV and setpoint and write setpoints and PID values.
Cheers
Steve
E5_C_CommunicationsManual_EN_201404_H175-E1-08 (1).pdf

Hello,
I am using Daq Factory combined with Modbus TCP Crevis FnIO series I/O modules to set up a basic process where valves and pumps are controlled from a HMI screen built in Daq Factory. I am using digital output modules to control the solenoid valves and to control the relays to switch the pumps on/off. I am also a using 0-5V output module to control the pump speed.
So far I have managed to control the valves and switch the pump on and off by addressing the I/O modules, converting the Output Bit hex address to decimal, creating channels and then using the Force Coil Function on these channels.
However I cannot get the pump speed to be controlled by the 0-5V output module. I have tried using the same approach by converting the Output Bit hex address to decimal, creating a channel and then using the Set Register S/U16 Function. The technical manual for this unit provided the following table for relating hex to voltage which I then converted to decimal and set the channel to the decimal value using a variable value. Voltage 0V 2V 4V 5V Data(Hex) H0000 H0666 H0CCC H0FFF
The modules also have an Output Word hex address which is different to the Output Bit hex address and I was wondering if this was the address I should be using. However when I tried this it also did not work. I also tried swapping the functions from Set Register S/U16 to some of the other options, but that did not work.
I am completely new at programming and software and have been using the manuals and forum combined with a lot trial and error so I was wondering if there is a very basic or simple mistake I am making? I apologize if this is a bit of a simple question.
I will also try measuring the voltage output from the module just in case the cause of the problem is not related to the software and module but is actually related to the wiring of the pump.
Any help or advice would be great.
Thanks.

Hi Everyone
Can someone please help me? This might be a silly question but I am very new to DaqFactory and I've only done some very basic things.
Register in my header file "Modbus.h":
//Code
#define h_STATUS0 0
#define S_ReadyToStart 0x0001
#define S_PreStart 0x0002
#define S_Run 0x0004
#define S_Cooling 0x0080
#define S_Short 0x0010
#define S_EFL 0x0020
#define S_Stop 0x0040
#define S_OverVoltage 0x0080
#define S_UnderVoltage 0x0100
#define S_VoltageUnb 0x0200
#define S_OverCurrent 0x0400
#define S_UnderCurrent 0x0800
#define S_CurrentUnb 0x1000
#define S_EarthFault 0x2000
#define S_PhaseLoss 0x4000
#define S_PhaseRotation 0x8000
//End of Code
So I have a holding register (h_STATUS0), that contains bits, and each bit represents a "status", which on my output is an LED.
If I set up a channel in DaqFactory "wh_STATUS0, channel=0", and I want to use the channel but set only "S_ReadyToStart" (0x0001) to "1", how do I do this?
I hope this question makes sense and that someone can help me:)
Thanks in advance!

I am trying to connect Unitronix Vision 130 to DAQ factory via MODBUS TCP protocol. I tried with the OPC server (unOPC) but can not get the tags. In DAQFactory CHANNELS I use UniOPC-MyDevice. MB or MI but can not read variable. I try with MODBUS TCP protocol but also can not read the variable. I try to use SEQUENCER with this code http://www.azeotech.com/board/index.php?/topic/4856-readholdingu16station-starting-address-num-points/#entry16918 .
Can someone help me with an example? UNITRONIX code?
Regards, Bojan

I've a very basic question concerning the use of an arduino in combination with DAQFactory. I've an Arduino Mega 2560 connected to the computer via USB, but I don't know how to configure it to be able to control it with DAQFactory.
I tried "Quick->Device configuration->New serial..." in DAQFactory. There, I defined the serial port configuration parameters (COM3, baud 9600, etc.) and as a protocol I selected "Null protocol". But, it didn't work. Do I have to download a Modbus protocol for the Arduino? Or, what else do I have to do?
In a first step, I would simply like to acquire data from sensors connected to an Arduino.

Can someone please help me?
I've set up my modbus devices and they are just either connecting or disconnecting.
I checked port 502 and find out that it's not open, so assuming that it's because of that. So I tried opening port 502, allowing it on the firewall both inbound and outbound rules, but when i check for the listening port it still not there.
I also tried to port forward it on the router but still doesn't work.
It's frustrating :|
Is there any other way I can open this port?
Please help! Thank you so much!

Hi, everyone
I use DAQFactory Pro to read a equipment via RS485 and Modbus protocol. I defined different channels to read different modbus registers, for example, 41000, 41002. 41000 contains 16 off bits, 41000.1 means run signal of one motor, 41000.2 means run signal of second motor, but in channel definition, I can't fill 41000.1 into column 'chn#'.
How could I fill decimal into chn# and display its value by LED?
Thanks
James

We use the following sequence to poll a number of units on a RS485 Modbus RTU network. It uses the channel grouping and ReadGroup function to poll each device on the network. The channel groups are organised as seqential S16 registers so only a single Modbus read is performed.
The poll time is normally about 6 seconds but when we add another sequence polling loop on another serial port the poll time doubles.
We had hoped that we could poll three ports simultaneously using 3 sequences on different modbus devices and different serial ports but the poll time slows down as if they are done one at a time.
sequence 1...
for( unit = 1000, unit <= 1255, unit++ )
try
channel.ReadGroup("Unit_" + unit) //read all channels in the unit
catch("C1000") //ignore Channel not found errors
endcatch
delay(0.01)
endfor
sequence 2...
for( unit = 2000, unit <= 2255, unit++ )
try
channel.ReadGroup("Unit_" + unit) //read all channels in the unit
catch("C1000") //ignore Channel not found errors
endcatch
delay(0.01)
endfor
sequence 3...
for( unit = 3000, unit <= 3255, unit++ )
try
channel.ReadGroup("Unit_" + unit) //read all channels in the unit
catch("C1000") //ignore Channel not found errors
endcatch
delay(0.01)
endfor
The timing and offset values in the channels are set to zero, do we need to have a different offset to allow concurrent polls with the ReadGroup function?
Everything functions correctly its just the poll time increases as we start each sequence. We are using a very fast i7 processor with 6GB of RAM and Windows 7 64bit.
Is there anything we can do to speed up the polling?

Good evening all,
I have a bit of an interesting setup and I am having some issues. I have a LabJack U6 connected to DAQFactory via USB and a PLC connected through ModbusTCP.
I can read values from the LabJack and the PLC, however, I cannot seem to write data to the PLC. I am attempting to read the RMS voltage from my powerline and send it over ModbusTCP to the PLC. I thought the PLC might be struggling with the many decimal places DAQFactory was sending out, so multipled the rms voltage by 1000 and rounded the number so there are no decimal places.
I am using the "Set Register Float (16)" I/O Type to send the values from DAQFactory to the PLC, and it kind of works, however, it only sends two numbers over the network, 122368.0 and 122880.0 (it changes randomly, there is no pattern as to when it changed). The PLC is a Schneider Momentum 171CCC96030 and doesn't seem to have any issues with other programs writing to it.
I have attached my the ctl file so that if I'm doing something silly, someone can point it out to me. I have attempted changing the I/O Types all together for setting a register, and nothing seems to work.
Thanks.
60Hz Stream.ctl

Is it possible to use a combo box to write to multiple registries at the same time?
For example, if I have a schedule that has values for Mon, Tue, Wed, etc.. That I want to write with the same schedule, can I create a combo box that sets multiple register values?
I tried it unsuccessfully, but I am sure of the context to "set channel", e.g. mychsnnel1; mychannel2 does not work.
Or is there a better way?
Thanks,
-Greg

We had a need to design a custom Modbus device. We are interfacing with this device through the RS-485 port of an ADAM-5000L/TCP from Advantech. The ADAM-5000L/TCP is a Modbus/TCP device, and if you send it a message addressed to any other device than #1, it will convert it into a Modbus/RTU message for transmission on its RS-485 port.
The custom device accepts "03" commands from the master, and sends back an array of 36 16-bit values. There are two of these devices on one RS-485 line of the ADAM. One has the device # of 10 and the other of 11.
There is no problem when only one of the devices is queried for data. The problems appear when both are queried for data. Data requests are formed in DAQFactory simply from defining the individual channels to request in the "CHANNELS" drop-down, with channel #'s of 1 through 36. The timing is once per second with no offset between the two devices.
Here's the problem: When we look at the communications on the RS-485 lines, it looks like DAQFactory is sending a "device #10, give me data" and a "device #11, give me data" request rapid-fire, not waiting for one or the other device to respond before requesting data from the other device. Is this how DF does things? I would have predicted that DF sends one request, then waits for a response, then sends the other request, then waits for the response. Then again, given that this is Modbus/TCP, that's probably not the case.
Setting the timing offsets does not seem to help. We separated requests by 0.2s relative to one another, and our devices can definitely respond within that time-frame. Any suggestions, or might we be missing something?
Regards,
Brian