PLCcom for S7 - Downloads and resources
Welcome to the download area of PLCcom for S7!
On this page we provide you with the latest versions of our software as well as related documentation and other resources.
Whether you want to test the software or get started straight away - you will find everything you need here.
.net version
PLCcom for S7 Version 15.1.3
Upload-Datum: 17.06.2025
30-day trial version
Consent End User License Agreement (EULA)
Before downloading the software, please confirm that you have read and accept the End User License Agreement in all points...
java version
PLCcom for S7 Version 15.1.3
Upload-Datum: 17.06.2025
30-day trial version
Consent End User License Agreement (EULA)
Before downloading the software, please confirm that you have read and accept the End User License Agreement in all points...
Tools
PLCcom for S7 TestApp Version 15.1.3
Upload-Datum: 17.06.2025
Free test app (limited to read and write operations)
Changelog PLCcom for S7
Version 14.1.14
- Bugfix: Incorrect reading and writing of DTL values with absolute addressed access
Version 14.1.12 (.net version only)
- Bugfix: incorrectly assembled Nuget package
Version 14.1.11
- Bugfix: Improved connection quality when connecting to the TIA Simulator
- New: Support for symbolic access to ET200SP controllers
Version 14.1.10 (java version only)
- Bugfix: in some cases an error could occur due to an incorrect certificate in the library
Version 14.1.9
- New: Enable password transfer to enable the connection for symbolic access
- Bugfix: Error when reading and writing WString values
- Bugfix: Error when reading and writing Date_and_Time, LDate_and_Time, Time_of_Day and LTime_of_Day variables
Version 14.1.7
- New: Symbolic reading, writing and retrieval of data from S7-1200/1500 controllers
- Support of Logo control units 0BA01 and 0BA02
- Support of the .Net 8.0 framework (.Net version)
- Support / test Jdk/Openjdk from version 11.23 to version 21 (Java version)
(Please note: Java version 12 is not supported due to tls 1.3 issues)
- Release of the following data types for all framework versions (.Net version):
- LTime*
- LDate_And_Time*
- LTime_of_Day*
- DTL*
- Adaptation and test with modified PLC firmware versions
- Various adjustments to identifiers in order to comply with the naming conventions of the respective programming environment. Please refer to the document:
https://www.indi-an.com/help_s7/Important_notes_for_migrating_from_version_12_or_older_english.pdf - Bugfix: Incorrect addressing when writing bits in write mode Cross_Area
- Diverse internal adjustments and improvements
Version 12.1.5
- Support for .Net 7.0 framework (.Net version)
- Support / test Jdk/Openjdk up to version 19 (java version)
- Implementation of new data types:
- Lint
- LWord
- LReal
- S7WString
- LTime*
- LDate_And_Time*
- LTime_of_Day*
- DTL*
- Adaptation and test with modified PLC firmware versions
- Bugfix: When writing S7String values the length specification was not set correctly
- Diverse internal adjustments and improvements
*) Verfügbar in der java Version und innerhalb der .Net Version ab .Net 7
Version 11.2.1 (.net version only)
- Bugfix: Problem when integrating the library into a net5.0 project
- Bugfix: After restarting the PLCcomDataServer, the quality is incorrectly output as undefined
- Sample projects in the delivery package are now also available for the target platform net5.0
- Reference upgrade System.Io.Ports to version 5
- Support of the .Net 5.0 framework
- Nuget package available
- .NET Framework version at least 3.5
- Adaptations for new PLC types and firmware versions
- Bugfix: Error -125 when writing values with the S7STRING data type fixed
- Bugfix: Occurring error "Resource file not found" fixed
- Bugfix: Missing library "winmm.dll" when running under Linux operating systems
- internal optimizations
- Performance optimization at read option 'Auto'
- Support new firmware versions
- Backward compatibility problem fixed
- PLCcomDatServer.AddReadDataRequest (ReadDataRequest value, String ItemKey) function reintroduced
- internal optimizations
- Supports Logo! 0BA0 controls
- Provision as .Net Standard 2.1, .Net3.5 and .Net 4.6.1 Library (.net Library)
- improved adjustments when using openJRE / openJDK system libraries (java library)
- Execution under Android from Api 21 (java library)
- new possibility to parameterize the balance between CPU usage and speed of data provision (new enum ePerformance)
- improved support for new firmware versions of 1200 and 1500 controllers
- internal bug fixes and improvements
- Bugfix: Possible deadlog at request of long data values with optimizemode AUTO
- internal optimizations
- Component is now available for .net-Standard, .net-Core, Xamarin, UWP and Android
- new function ReadWriteData for optimized reading and writing data
- simultaneous reading or writing of data in a function call in different areas
- new optimization methods CROSS_AREA (Mix-Mode) and COMBINE_AREAS
- automatic calculation of the best optimization mode (only in Expert Edition)
- various internal improvements of the algorithms
As part of the cleanup, various methods and functions have been removed.
These functionalities were already marked as deprecated within the previous versions and should therefore no longer be used for a long time.
The following functions have been removed:
Version | type | removed function | Instead, functionality to use |
---|---|---|---|
Alle | enum | ePLCType.Logo_compatibel | ePLCType.Logo0BA7_compatibel oder ePLCType.Logo0BA8_compatibel |
Alle | enum | eDataType.UNICODECHAR | eDataType.STRING oder eDataType.S7_STRING |
Alle | enum | eDataType.BCD | eDataType.BCD16 |
Alle | object | ReadItemRequest | ReadDataRequest |
Alle | object | ReadItemRequestCollection | ReadWriteRequestSet |
Alle | object | ReadRequest | ReadDataRequest |
Alle | object | WriteRequest | WriteDataRequest |
Alle | object | ReadItemResult | ReadDataResult |
Alle | object | ReadItemResultCollection | ReadWriteResultSet |
Alle | object | ReadResult | ReadDataResult |
Alle | object | WriteResult | WriteDataResult |
.Net | method | PLCcomDevice.SetPLCTime(DateTime) | PLCcomDevice.SetPLCClockTime (DateTime) |
Java | method | PLCcomDevice.setPLCTime(Calendar) | PLCcomDevice.setPLCClockTime (Calendar) |
.Net | function | PLCcomDevice.GetPLCTime() | PLCcomDevice.GetPLCClockTime() |
Java | function | PLCcomDevice.getPLCTime() | PLCcomDevice.getPLCClockTime() |
.Net | function | PLCComDataServer.AddReadDataRequest (ReadDataRequest value, String ItemKey) |
PLCComDataServer.AddReadDataRequest (ReadDataRequest value) |
Java | function | PLCComDataServer.addReadDataRequest (ReadDataRequest value, String ItemKey) |
PLCComDataServer.addReadDataRequest (ReadDataRequest value) |
.Net | function | PLCcomDevice.GetLocal_MPI() | PLCcomDevice.GetBUS_ADRESS_LOCAL() |
Java | function | PLCcomDevice.getLocal_MPI() | PLCcomDevice.getBUS_ADRESS_LOCAL() |
.Net | method | PLCcomDevice.SetLocal_MPI(int) | PLCcomDevice.SetBUS_ADRESS_LOCAL(int) |
Java | method | PLCcomDevice.setLocal_MPI(int) | PLCcomDevice.setBUS_ADRESS_LOCAL(int) |
.Net | function | PLCcomDevice.GetPLC_MPI() | PLCcomDevice.GetBUS_ADRESS_PLC() |
Java | function | PLCcomDevice.getPLC_MPI() | PLCcomDevice.getBUS_ADRESS_PLC() |
.Net | method | PLCcomDevice.SetPLC_MPI int) | PLCcomDevice.SetBUS_ADRESS_PLC(int) |
Java | method | PLCcomDevice.setPLC_MPI(int) | PLCcomDevice.setBUS_ADRESS_PLC(int) |
.Net | function | PLCcomDevice.GetLocal_PPI () | PLCcomDevice.GetBUS_ADRESS_LOCAL() |
Java | function | PLCcomDevice.getLocal_PPI () | PLCcomDevice.getBUS_ADRESS_LOCAL() |
.Net | method | PLCcomDevice.SetLocal_PPI(int) | PLCcomDevice.SetBUS_ADRESS_LOCAL(int) |
Java | method | PLCcomDevice.setLocal_PPI(int) | PLCcomDevice.setBUS_ADRESS_LOCAL(int) |
.Net | function | PLCcomDevice.GetPLC_PPI() | PLCcomDevice.GetBUS_ADRESS_PLC() |
Java | function | PLCcomDevice.getPLC_PPI() | PLCcomDevice.getBUS_ADRESS_PLC() |
.Net | function | ConnectResult.HasConnected | OperationResult.getQuality |
Java | function | ConnectResult.hasConnected() | OperationResult.getQuality() |
.Net | function | ConnectResult.HasWorked | OperationResult.getQuality |
Java | function | ConnectResult.HasWorked () | OperationResult.Quality() |
.Net | function | BasicInfoResult.Ordernummer | BasicInfoResult.Ordernumber |
Java | function | BasicInfoResult.Ordernummer() | BasicInfoResult.Ordernumber() |
Within the new version, the following functionalities have been marked as deprecated:
Version | type | Deprecated | Instead, functionality to use |
---|---|---|---|
.Net | function | ReadData(ReadDataRequestCollection) | ReadWriteData(ReadWriteRequestSet) |
Java | function | readData(ReadDataRequestCollection) | readWriteData(ReadWriteRequestSet) |
Java | function | DeviceInfo() | getDeviceInfo() |
Java | function | DisConnect() | disConnect() |
Java | function | BeginConnect() | beginConnect() |
Java | function | StartPLC() | startPLC() |
Java | function | GetPLCClockTime() | getPLCClockTime() |
Java | function | SetPLCClockTime(Calendar) | setPLCClockTime(Calendar) |
Java | function | GetLEDInfo() | getLEDInfo() |
Java | function | GetBasicInfo() | getBasicInfo() |
Java | function | GetCPUMode() | getCPUMode() |
Java | function | GetBlockList() | getBlockList() |
Java | function | GetBlockLenght(eBlockType, int) | getBlockLenght(eBlockType, int) |
Java | function | ReadPLCBlock_MC7(eBlockType, int) | readPLCBlock_MC7(eBlockType, int) |
Java | function | WritePLCBlock_MC7(WritePLCBlockRequest) | writePLCBlock_MC7(WritePLCBlockRequest) |
Java | function | DeleteBlock(eBlockType, int) | deleteBlock(eBlockType, int) |
Java | function | GetDiagnosticInfo() | getDiagnosticInfo() |
Java | function | GetSystemStatusList(int, int) | getSystemStatusList(int, int) |
Java | function | BasicInfoResult.Ordernumber() | BasicInfoResult.getOrdernumber() |
Java | function | BasicInfoResult.ModuleVersion () | BasicInfoResult.getModuleVersion () |
Java | function | BasicInfoResult.FirmwareVersion () | BasicInfoResult.getFirmwareVersion() |
Java | function | BasicInfoResult.Name () | BasicInfoResult.getName() |
Java | function | CPUModeInfoResult.CPUModeInfo() | CPUModeInfoResult.getCPUModeInfo() |
Java | function | CPUModeInfoResult.CPUStateInfo() | CPUModeInfoResult.getCPUStateInfo() |
Java | function | LEDInfoResult.LEDInfo() | LEDInfoResult.getLEDInfo() |
Java | function | OperationResult.InnerException() | OperationResult.getInnerException() |
Java | function | OperationResult.Message() | OperationResult.getMessage() |
Java | function | OperationResult.Quality () | OperationResult.getQuality() |
- only Java Bugfix connection error to a WinAC RTX PLC
- Fix: Possibly error while reading large data
- Assamblies singed with code singing certificate
- Bugfix: Wrong month reading DATE_AND_TIME values
- Bugfix a possible timeout if running the "IsConnected" function from a second parallel thread
- Resolving compatibility issues when communicating with 1500 firmware with older firmware
- Resolving compatibility issues when communicating with 1500 firmware with older firmware
Version 8.1.3 (only for the .net versions)
- unnecessary debug outputs were removed
- improved firmware version support
- optimized communication process
- Bugfix: Eventually 0 values while communication to WinAC RTX plc
- various little bugfixes
- Bugfix writing data
- Bugfix: 0 Reference error / DataImage logging
- improved stability behavior
- faster recognition of TCP - disconnections
- Bugfix: When connecting to ALREADY otherwise affiliated Logo ! 0BA8- controls
- Write flags while setting a datablock
- new supported Data Types: Time of Day, Time, Date, BCD8, BCD16, BCD32, BCD64
- the existing format BCD is replaced by BCD16
- Bugfix: Error handling zero-based strings
(only for the .Net and WinCE versions)
- fixed signature problems
Version 7.2.0
- Bugfix: Writing more than 485 Bytes in a S7 1500er PLC
-
Unification of class model for reading, writing and access to ReadCollection
-
detailed diagnostic output for every single request leading to an efficient error tracking
-
full support of Siemens Logo! 0BA8
-
Data server for event controlled variable monitoring on the SPS (expert version only)
-
Appropriation of logging connectors for: (expert version only)
- Progressive logging of SPS data to file system or SQL database
- Writing of a latest SPS data copy to file system or SQL data base for further usage
- encoded data storage to filesystem
- no limitation of database type while definition and handoff database connection by developer (Within the subfolder / docs you will find a list of all tested SQL data)
-
Performance optimized
-
smaller bugfixes
-
complete work-over of example- and testing-programs
Version 6.14.0
-
Bugfix: Reading S7-Strings, if actual lenght equals max lenght
-
Bugfix: Reading Flags (from Version 6.10.0)
Version 6.10.0
-
internal improvement
-
more bugfix: Blocks more 113 objects
-
Bugfix when DB-number > 9999
Version 6.9.0
-
internal improvement
-
Bugfix: Blocks more/equal 113 objects
-
Bugfix: Timeout problems at MPI connection
-
Bugfix when reading many data blocks (GetBlocklist)
-
Bugfix: Error if optimize of readcollections is deactivated
-
Rename: Function: setoptmize to setoptimize
-
Deprecated setlength
-
Bugfix: Read / write S7Strings longer than 127 Bytes
- Added: Read unsigned Bytes
-
Bugfix >> Error during write of multiple blocks when the PLC has not much free memory available
-
Bugfix >> NullReferenzException occurred while read a ReadItemRequestCollection and the device is not connected
-
Added Datatype S5 Time
-
property Speed in the base class PLCcomDevice implemented (only .Net-, and WinCE-versions)
-
getSpeed und SetSpeed in the base class PLCcomDevice implemented (only Java version)
-
Bugfix >> Error occurred while adding an item when optimization is enabled
-
Version release for Windows CE 5.0 and 6.0 (e.g. ARM-Processors)
- Support Siemens LOGO!-PLC (version 0BA7)
- Start / stop S7-1200 PLCs
- Get created Blocks
- Read block lenght
- Backup existing blocks
- Restore existing blocks
- Restore to diffent blocks
- Read block details e.g. creating language (AWL, KOP, etc.), author, version, rawdata, header, footer uvm.
- Read diagnostic buffer and return flat text messages
- Delete blocks
- send password to unlock connection of password-protected PLCs
- Support PLCSIM (from version 5.4 > requires installed Netgateway e.g. NetToPlcSim)
- Implementation abstract basis class to inherit of the device classes (TCP_ISO_DEVICE, MPI_DEVICE, PPI_DEVICE)
- Implementation of methods to direct writing of Strings and S7Strings with codepage or cultureInfo
- Reading basic informations while connecting device. Provide informations as BasicInfoResult from Property DeviceInfo
- Implementation of "Service-Connections" to control Logo!-PLCs
- Setting PLC communication port number of TCP-IP-Connections
- Setting local communication port number of TCP-IP-Connections(Important for firewall settings)
- Providing connection informations as ConnectionState
- Event implementation "On_ConnectionStateChange" while ConnectionState changes
- Implementation of asyncron connecting
- AutoConnect with adjustable waiting time till auto disconnect
- Mulit languages implementation (currently english (default) and german
- Read data from system state list (if existing)
- Reading PLC operating mode and status (run, stop, key position, etc.)
- Renewal the example application
- Increase in performance
- Bugfix (timeout while changing the clocks (summer/winter))
- Bugfix ReadItemResultCollection block greater than 2206
- Deprecated Methods read/write UniCode. New methods read/write Strings and S7Strings
- Implementation a quality enum type within result classes, to indicate kind of success (without parsing error texts as before)
- Rename return value of class BasicInfoResult from Ordernummer to OrderNumber
- Removal propertys Local_MPI, Local_PPI, PLC_MPI, PLC_PPI with propertys BUS_ADRESS_LOCAL and BUS_ADRESS_PLC in device classes. Local_MPI, Local_PPI, PLC_MPI, PLC_PPI marked as "deprecated"
- Removal functions GetPLCTime and SetPLCTime with functions GetPLCClockTime and SetPLCClockTime, and return a PLCClockTimeResult-object. GetPLCTime and SetPLCTime marked as "deprecated"
- internal Fixes...
-
compatible with Siemens Soft PLC WinAC RTX 2010
- compatible with Siemens PLC of the 1500s series
- supports the .Net Framework 4.5
- Bugfix GetPLCTime
- Performance optimizations for access with TCP-IP
- Bugfix when addressing Rack + Slot
-
Bugfix GetPLCTime
- Bugfix result output when writing
-
With the new upgrade, the PLCcomS7 Library achieves a significant performance increase for cyclically recurring read accesses.
A major innovation is the introduction of new "ReadItemCollection Objects", to which the variables to be read individually (e.g. individual DINT values) are added.
When reading, these variables are combined to optimum read accesses to the corresponding PLC. Thus, the necessary read accesses to the respective PLC are reduced to a minimum, which means a much improved performance, as opposed to individually requested variables.
Something else that is also omitted is the summary of variables into a stream by the software developer - this means that the development time is reduced significantly and this aspect also greatly simplifies the handling.
Internal process changes also ensure improved performance and stability.
-
Bugfix write Int
-
any potential problems with VIPA-CPUs fixed
-
Support of S7 1200er model series
-
.Net Framework 4 compatible
-
Bugfix read Byte
-
Bugfix write Dword
-
Bugfix for “ADDWORD”
-
Bugfix at event. „Write errors of Bits"
-
Bugfix: SetPlcTime
-
Starting and stopping the CPU
- Reading out serial number and firmware version
- Reading out Keyswitch setting
- Reading out LED info
- Reading and writing Date_and_Time values
-
Supports communication via PPI Protocol
-
Supports communication for SPS S7-200 via CP-243 (TCP/IP)
- capable of running and tested under Linux with Mono Framework 2.4
- various performance improvements
Documentation PLCcom for S7
PLCcom S7 documentation - Technical information and guides
PLCcom class library documentation for .net
PLCcom class library documentation for java
First steps PLCcom for S7
Helpful docs PLCcom for S7
Important notes for migrating from version8 or older
Important notes for migrating from version11 or older (java version)
Important notes for migrating from version12 or older
Application_Note_1200-1500_english.pdf
Application_Note_Logo_english.pdf
Documentation_PLCcom_database_interface_english.pdf
Documentation_PLCCom_interface_for_filesystem_english.pdf
Scripts PLCcom for S7
DB script Creation of PLCcom dbobjects Firebird.sql
DB-Script Creation of PLCcom dbobjects MSSQLServer.sql
DB-Script Creation of PLCcom dbobjects MySQL.sql
DB-Script Creation of PLCcom dbobjects oracle.sql
DB-Script Creation of PLCcom dbobjects PostgresSQL.sql
DB-Script Creation of PLCcom dbobjects SQLite.sql
You can find the complete functional range PLCcom for S7 here:
write functions:
Datentyp | Zugriff |
---|---|
Raw (Byte Array) | Reading and writing |
Bit | Reading and writing |
Byte | Reading and writing |
Word | Reading and writing |
DWord | Reading and writing |
LWord | Reading and writing |
INT | Reading and writing |
DINT | Reading and writing |
LINT | Reading and writing |
Real | Reading and writing |
LReal | Reading and writing |
BCD8 | Reading and writing |
BCD16 | Reading and writing |
BCD32 | Reading and writing |
BCD64 | Reading and writing |
Date | Reading and writing |
Time | Reading and writing |
LTime | Reading and writing |
Date_And_Time | Reading and writing |
LDate_And_Time | Reading and writing |
Time_OF_DAY | Reading and writing |
LTime_OF_DAY | Reading and writing |
DTL | Reading and writing |
S5Time | Reading and writing |
Char | Reading and writing |
String | Reading and writing |
S7_String | Reading and writing |
S7_WString | Reading and writing |
The following data types are supported for symbolic addressed reading and
write functions:
Datentyp | Zugriff |
---|---|
Array[n..m] | Reading and writing allowed for the complete array and its individual elements |
Bool | Reading and writing |
Byte | Reading and writing |
Word | Reading and writing |
DWord | Reading and writing |
LWord | Reading and writing |
SInt | Reading and writing |
Int | Reading and writing |
DInt | Reading and writing |
LInt | Reading and writing |
USInt | Reading and writing |
UInt | Reading and writing |
UDInt | Reading and writing |
ULInt | Reading and writing |
Real | Reading and writing |
LReal | Reading and writing |
Date | Reading and writing |
Time | Reading and writing |
LTime | Reading and writing |
Date_And_Time | Reading and writing |
LDate_And_Time | Reading and writing |
Time_Of_Day | Reading and writing |
LTime_Of_Day | Reading and writing |
S5Time | Reading and writing |
Char | Reading and writing |
WChar | Reading and writing |
String | Reading and writing |
WString | Reading and writing |
Timer | Reading and writing |
Counter | Reading and writing |
CREF | Reading and writing allowed for the complete structure and its individual elements |
NREF | Reading and writing allowed for the complete structure and its individual elements |
DTL | Reading and writing allowed for the complete structure and its individual elements |
ErrorStruct | Reading and writing allowed for the complete structure and its individual elements |
IEC_COUNTER | Reading and writing allowed for the complete structure and its individual elements |
IEC_DCOUNTER | Reading and writing allowed for the complete structure and its individual elements |
IEC_LCOUNTER | Reading and writing allowed for the complete structure and its individual elements |
IEC_LTIMER | Reading and writing allowed for the complete structure and its individual elements |
IEC_SCOUNTER | Reading and writing allowed for the complete structure and its individual elements |
IEC_TIMER | Reading and writing allowed for the complete structure and its individual elements |
IEC_UCOUNTER | Reading and writing allowed for the complete structure and its individual elements |
IEC_UDCOUNTER | Reading and writing allowed for the complete structure and its individual elements |
IEC_ULCOUNTER | Reading and writing allowed for the complete structure and its individual elements |
IEC_USCOUNTER | Reading and writing allowed for the complete structure and its individual elements |
Struct | Read for the entire structure or individual elements, writing only for individual elements |
The following functions are also available (depending on the PLC type):
- Access via put/get or symbolic addressing
- Reading data blocks, inputs, outputs, data blocks, flags, timers, counters
- Multiple operations possible with one function retrieval; each operation provides a detailed return value
- Simultaneous access to multiple CPUs possible
- Implemented high-performance access, the required accesses to the PLC are reduced to the absolute minimum.
- Internal auxiliary and conversion functions for easy reading and writing of certain PLC data types.
- Provision of the PLCcom data server for cyclical read access with event-controlled notification of value changes
- Starting and stopping the CPU
- Reading out serial number and firmware version
- Reading out Keyswitch setting
- Reading out LED info
- Get and set PLC time
- Reading system status list SSL
- Readingblock list
- Reading length of block
- Backup of blocks
- Restore of blocks
- Restore of blocks under different block number
- Delete blocks
- Get block details e.g. code, create language, author, and much more
- Send the passwort for deactive the PLC protection
- Reading diagnostic data
- AutoConnect
- async connect
- and much more.