02-27-2008 10:17 AM
I'm trying to implement a LabVIEW system to control a 5kW stand alone fuel cell. The existing Supervisory Control and Data Acquisition system, supplied by the FC's manufacture, is closed and we obviously don't have access to the source code.
We have therefore been trying to monitor the comms of the existing system through a Serial Data Logging program and analysing the sequence of operations and commands sent to the fuel cells control card from the host PC. We have already developed a set of VI's based around the examples in the NI's MODBUS lib. We then used the same Serial Data Logging program to compare the operation of the LabVIEW software to the developers, seeing some similarities. For instance, baud rate and "hand flow" controls seems to match sometimes, however the developers software issues additional commands, which may prove to be an important feature we are missing.
The fuel cells control card needs to undergo an initialisation sequence before we can poll any measurements from it/control any of its functionality. I have all the register addresses for the FC so once this initial comms problem is sorted, I believe the rest should be ok.
I've attached the data logged from COM1 for both the developer’s software running, and our own. As you can see, the developer performs additional IRP commands such as:
(IOCTL_SERIAL_GET_PROPERTIES)
(IOCTL_SERIAL_GET_MODEMSTATUS)
(IOCTL_SERIAL_GET_HANDFLOW)
Where within the MODBUS VIs are these conditions established (and more importantly changeable? Unfortunately I have very little prior knowledge in comms, so a lot of this is new to me. Any advice towards dealing with modbus on a device management level would also be greatly appreciated.
Kind Regards,
Gordon
02-28-2008 09:38 AM