org.openmuc.metering.driver.s7plc
Class S7PLCDriverImpl

java.lang.Object
  extended by org.openmuc.metering.driver.s7plc.S7PLCDriverImpl
All Implemented Interfaces:
DeviceDriverInterface

public class S7PLCDriverImpl
extends java.lang.Object
implements DeviceDriverInterface

Implementation of MeterDriverInterface for Siemens S7 PLC Meter URL format: plcs7:10.0.0.7:102?slot=2;rack=0;mpi=2 Object locator format: DB.. examples DB20.2.uint16 means data block 20, byte offset 2, variable type 16bit unsigned integer DB10.10.float maps to a REAL variable


Nested Class Summary
protected  class S7PLCDriverImpl.PLCConnection
           
 
Field Summary
 
Fields inherited from interface org.openmuc.core.driver.DeviceDriverInterface
ERROR_INVALID_MESSAGE, ERROR_TIMEOUT, IO_ERROR
 
Constructor Summary
S7PLCDriverImpl()
           
 
Method Summary
 void configureInterface(java.lang.String iface, java.lang.String configStr)
          Configure the interface.
protected  S7PLCDriverImpl.PLCConnection getConnection(DeviceURI url)
           
 java.util.List<ChannelInformation> getDeviceChannels(DeviceURI url)
          Scan a device for available channels This operation is optional and my not be supported by specific drivers
 java.util.List<DeviceURI> getDeviceList(BusURI url)
          Scan the bus for connected meters This operation is optional and my not be supported by specific drivers
 java.util.List<java.lang.String> getDeviceList(java.lang.String busURL)
           
 java.lang.String getDriverID()
           
 void getMeterValuesRequest(DataReceivedListener listener, int valueSelectionIndicator)
           
 java.util.List<java.lang.String> getSupportedOperations()
          Get a list of supported operations by the driver.
 void readDeviceAsync(DeviceURI url, java.util.List<ChannelIdentifier> registers, DataReceivedListener callback, java.lang.Object handle)
           
 java.util.List<Measurement> readDeviceSync(DeviceURI url, java.util.List<ChannelIdentifier> registers)
           
protected  void removeConnection(S7PLCDriverImpl.PLCConnection con)
           
 void writeChannel(DeviceURI url, ChannelIdentifier register, double value)
          Write a register on connected meter / device / i/o
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

S7PLCDriverImpl

public S7PLCDriverImpl()
Method Detail

removeConnection

protected void removeConnection(S7PLCDriverImpl.PLCConnection con)

getConnection

protected S7PLCDriverImpl.PLCConnection getConnection(DeviceURI url)

configureInterface

public void configureInterface(java.lang.String iface,
                               java.lang.String configStr)
                        throws MethodNotImplementedException
Description copied from interface: DeviceDriverInterface
Configure the interface.

Specified by:
configureInterface in interface DeviceDriverInterface
Parameters:
iface - Interface descriptor. E.g. com1 for "/dev/ttyS0" usb1 for "/dev/ttyUSB0"
configStr - Configuration data for interface e.g. "setting=2400-7N1" mbus:com1:p1?setting=2400-7N1
Throws:
MethodNotImplementedException - if method is not implemented by driver

getDriverID

public java.lang.String getDriverID()
Specified by:
getDriverID in interface DeviceDriverInterface

getDeviceList

public java.util.List<java.lang.String> getDeviceList(java.lang.String busURL)

getMeterValuesRequest

public void getMeterValuesRequest(DataReceivedListener listener,
                                  int valueSelectionIndicator)

getSupportedOperations

public java.util.List<java.lang.String> getSupportedOperations()
Description copied from interface: DeviceDriverInterface
Get a list of supported operations by the driver. This list does not contain the mandatory operations.

Specified by:
getSupportedOperations in interface DeviceDriverInterface
Returns:
List of the supported optional operation names

readDeviceAsync

public void readDeviceAsync(DeviceURI url,
                            java.util.List<ChannelIdentifier> registers,
                            DataReceivedListener callback,
                            java.lang.Object handle)
Specified by:
readDeviceAsync in interface DeviceDriverInterface
Parameters:
url - URL of the device
registers - List of channels to readout. If channels == null all channels will be read.
callback - Callback object if task finished or error/timeout occured.

writeChannel

public void writeChannel(DeviceURI url,
                         ChannelIdentifier register,
                         double value)
                  throws java.io.IOException
Write a register on connected meter / device / i/o

Specified by:
writeChannel in interface DeviceDriverInterface
Parameters:
register - - register to write to
value - - value to write to register
url - - URL of the device in a driver specific format
Throws:
java.io.IOException

readDeviceSync

public java.util.List<Measurement> readDeviceSync(DeviceURI url,
                                                  java.util.List<ChannelIdentifier> registers)
Specified by:
readDeviceSync in interface DeviceDriverInterface

getDeviceList

public java.util.List<DeviceURI> getDeviceList(BusURI url)
                                        throws MethodNotImplementedException,
                                               java.io.IOException
Description copied from interface: DeviceDriverInterface
Scan the bus for connected meters This operation is optional and my not be supported by specific drivers

Specified by:
getDeviceList in interface DeviceDriverInterface
Returns:
List of URLs of connected meters or null if this operation is not supported by the driver.
Throws:
MethodNotImplementedException - if method is not implemented by driver
java.io.IOException

getDeviceChannels

public java.util.List<ChannelInformation> getDeviceChannels(DeviceURI url)
                                                     throws MethodNotImplementedException,
                                                            java.io.IOException
Description copied from interface: DeviceDriverInterface
Scan a device for available channels This operation is optional and my not be supported by specific drivers

Specified by:
getDeviceChannels in interface DeviceDriverInterface
Returns:
List of Strings of assigned channels for a meters or null if this operation is not supported by the driver.
Throws:
MethodNotImplementedException - if method is not implemented by driver
java.io.IOException