Click or drag to resize

Demo3D.PLC.Comms Namespace

The Demo3D.PLC.Comms namespace provides a set of built-in Demo3D communication protocols.
Classes
  ClassDescription
Public classAccessParameters
Parameters for accessing a PLC tag or memory address.
Public classAccessRightsExtensions
Extension methods for AccessRights.
Public classAddressAreaExtensions
A class containing AddressArea extensions.
Public classAddressExtensions
A class containing extension methods for IAddress.
Public classAddressTranslatorServiceExtensions
A class containing extension methods for IAddressTranslatorService.
Public classAlignment
Directs field memory layout / alignment.
Public classAlignmentPacked
A class to help with sequential field memory layout / alignment. Aligns bits on bit boundaries, and all else on byte boundaries.
Public classAlignmentSequential
A class to help with sequential field memory layout / alignment.
Public classAlignmentSequential16
A class to help with sequential field memory layout / alignment. Aligns bits and bytes on their respective boundaries, and larger types on 16-bit boundaries.
Public classAlignmentSequential32
A class to help with sequential field memory layout / alignment. Aligns bits, bytes, and Int16 on their respective boundaries, and larger types on 32-bit boundaries.
Public classAlignmentSequential64
A class to help with sequential field memory layout / alignment. Aligns bits, bytes, Int16 and Int32 on their respective boundaries, and larger types on 64-bit boundaries.
Public classBrowseFlagsExtension
Extension methods for BrowseFlags.
Public classBrowseItemBase
Base implmentation of IBrowseItem.
Public classBrowseItemBranch
A base class for implementing a symbol table branch.
Public classBrowseItemExtensions
Extension methods for IBrowseItem.
Public classBufferDataConverter
A DataConverter for converting .Net objects to/from an array of bytes.
Public classBufferDataConverterContext
Used by BufferDataConverter, this class provides the context of a conversion.
Public classBufferDataConverterContextProvider
Used by BufferDataConverter, this class provides the context of a conversion, and is its own context provider.
Public classConnectionPointContainerExtensions
IConnectionPointContainer extensions.
Public classConversionFunction
Public classDataArrayT
A data array.
Public classDataContextProvider
Provides extensions to IDataContextProvider.
Public classDataConverter
Provides a unified way of converting types of values to other types.
Public classDataConverterAttribute
Specifies what type to use as a converter for the object this attribute is bound to.
Public classDataStruct
A dynamic data structure.
Public classDataType
Describes a data type, either a .Net System.Type or dynamic type that may have no .Net Type equivalent.
Public classDataTypeBuilder
Dynamic structure builder.
Public classDataTypeFieldItem
A field definition for the dynamic structure builder (see DataTypeBuilder).
Public classDataTypeMemoryLayout
Returns the field offset and size for fields of a structure. (Describes just one element for an array type.)
Public classFieldDescriptor
One field of a structure.
Public classFieldOffsetBitsAttribute
Specifies the offset into a structure of a field (in bits).
Public classFieldSizeBitsAttribute
Specifies the size of a field (in bits).
Public classIOStages
Standard pathway stages for IO services.
Public classMemoryAddress
A memory address.
Protected classMemoryAddressMemoryAddressConverterAddressType
A base data type converter.
Public classMemorySymbolTableAddressType
A class for constructing symbol tables for servers that are primarily accessed with memory addresses.
Public classMessageContextBase
Optional information about a request received.
Public classMetaProperties
Non-standard properties.
Public classMetaPropertyDatabase
Database of non-standard properties.
Public classMetaPropertyDescriptor
Description of a non-standard property.
Public classNotifyDataChangedService
Hard coded default scan rates for services that support the INotifyDataChanged interface.
Public classNotifyIOStages
Standard pathway stages for IO services that notify data changes.
Public classPlcFlagsExtensions
Extension methods for PlcFlags.
Public classSequentialVectoredReadT
A helper class for implementing ReadV.
Public classSequentialVectoredWriteT
A helper class for implementing WriteV.
Public classStringAddress
An address that supports a string representation.
Public classTypedMemoryAddress
A strongly typed PLC specific memory address.
Public classVectoredRequest
A vectored request.
Public classVectoredRequestExtensions
VectoredRequest extension methods.
Public classVectoredRequests
A vector of requests which can be executed multiple times.
Structures
  StructureDescription
Public structureAddressArea
Describes an addressable area within an address space.
Public structureDataDimension
One dimension of an array.
Public structureDataValue
A data value.
Interfaces
  InterfaceDescription
Public interfaceIAddress
An address of some sort.
Public interfaceIAddressSpace
Memory address space identifier.
Public interfaceIAddressTranslatorService
Translator service for mapping from one IAddress to another IAddress.
Public interfaceIBrowseItem
A browsable item, usually representing a symbol in the PLC symbol table. Can optionally also implement IBrowseItemDescription.
Public interfaceIBrowseItemDescription
Extensions to the core IBrowseItem to provide more detail.
Public interfaceIConnectionClosed
An event raised when the server connection closes.
Public interfaceIConnectionPoint
A single connection point.
Public interfaceIConnectionPointContainer
A custom object that contains connection points. Add this as an aspect on a visual to make the visual appear in the loopback tag server.
Public interfaceIDataContextProvider
Provides contextual information for a data conversion using DataConverter.
Public interfaceIIOStages
Protocol service that provides IOStages.
Public interfaceIListExt
Extensions to IList.
Public interfaceINotifySymbolTable
Notifies when the symbol table changes.
Public interfaceIOffloadingService
A protocol that implements this service agrees to offload write requests.
Public interfaceISymbolTable
An interface for providing access to a symbol table.
Public interfaceISynchronizedIOService
A service for controlling when IO occurs.
Delegates
Enumerations
  EnumerationDescription
Public enumerationAccessRights
Whether a data item can be read or written.
Public enumerationBrowseFlags
Browse control flags.
Protected enumerationBrowseItemBaseSearchFlags
Search control flags.
Public enumerationCanReadSymbolsFlags
Flags describing whether and how to read the symbol table.
Public enumerationDataTypeConvertibleFlags
Flags for specifying acceptable conversions.
Public enumerationIOControl
Cache and IO control flags.
Public enumerationIOErrorResponse
How to respond to an IO error received.
Public enumerationPlcFlags
Flags specific to PLC connections.
Remarks

Support for server connectivity is broadly split between Tag and Memory servers; reflecting the primary concepts that the server exposes for accessing its data.

Tag

Tag-based servers expose PLC data-points as explicit tags. They tend first to expose their symbol table detailing all the tags that the client can access, and then offer some API or protocol for the client to access tags. Examples include EtherNet/IP CIP Class 3, OPC (UA and DA), and BR Automation PVI.

See Demo3D.PLC.Comms.Builtin for an example implementation of a tag server.

Memory

Memory-based servers expose raw PLC memory, allowing the client (Demo3D) to read and write bytes of data direct to/from the memory in the PLC. Examples include Modbus, Siemens S7 Functions, and Beckhoff TwinCAT ADS. These servers may also expose a symbol table, where the symbols in the table are just a mapping from symbol name to memory address, and the underlying access is still directly to memory in the PLC.

See Demo3D.PLC.Comms.Builtin for an example implementation of a memory server.

List of services:

AccessInterfaceDescription
CommonIAddressTranslatorServiceA service for translating one address to another.
ISymbolTableProvides access to a symbol table.
INotifySymbolTableProvides access to a symbol table, and notifies when the symbol table changes.
ISynchronizedIOServiceControls when IO occurs.
IOffloadingServiceA protocol that agrees to offload write requests..
Direct TagIDirectTagAccessServiceSimplified tag client interface.
INotifyDirectTagAccessServiceSimplified tag client interface for a peer that will notify when tag values change.
TagITagServiceProvides tag access to the peer.
IDirectTagServiceProvides direct tag access to the peer, bypassing any caches.
INotifyTagServiceProvided cached access to tags in a peer that will notify when tag values change.
Direct MemoryIDirectMemoryAccessServiceSimplified memory client interface.
INotifyDirectMemoryAccessServiceSimplified memory client interface to a peer that will notify when memory changes.
MemoryIMemoryServiceProvides access to memory in the peer.
MemoryIMemoryPartitioningServiceControls access to memory in the peer.
IDirectMemoryServiceProvides direct access to memory in the peer, bypassing any caches.
INotifyMemoryServiceProvides access to the memory in a peer that will notify when the data at the address changes.