Skip to content

Commit d7d8d98

Browse files
committed
bringing index.md up to date with the repo.
1 parent df02d46 commit d7d8d98

1 file changed

Lines changed: 50 additions & 70 deletions

File tree

index.md

Lines changed: 50 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,95 +1,75 @@
1-
# libplctag
1+
# libplctag - PLC Communication Library
22

3-
- [libplctag](#libplctag)
4-
- [PLC Communications](#plc-communications)
5-
- [WARNING - DISCLAIMER](#warning---disclaimer)
6-
- [Features](#features)
7-
- [High Level Features](#high-level-features)
8-
- [Detailed Features](#detailed-features)
9-
- [PLC Support](#plc-support)
10-
- [Components](#components)
11-
- [Contact and Support](#contact-and-support)
12-
- [libplctag Forum](#libplctag-forum)
13-
- [GitHub](#github)
3+
libplctag is an open-source C library for reading and writing tags in PLCs using EtherNet/IP and Modbus TCP. Available for Linux, Windows, and macOS, it's been in production use since 2012 across industries including manufacturing, radio astronomy, fitness equipment, and food handling.
144

15-
## PLC Communications
5+
![Latest Release](https://img.shields.io/github/v/release/libplctag/libplctag)
166

17-
This set of open source C library for Linux, Android, Windows and macOS uses **EtherNet/IP** or **Modbus TCP** to read and write tags in PLCs. The library has been in production since early 2012 and is used by multiple organizations for many tasks including controlling radio telescopes, large and precision manufacturing, controlling fitness equipment, food handling and many, many more.
7+
Quick Links:
8+
- [Download Latest Release](https://github.com/libplctag/libplctag/releases)
9+
- [Documentation & Wiki](https://github.com/libplctag/libplctag/wiki)
10+
- [Source Code](https://github.com/libplctag/libplctag)
11+
- [Language Wrappers](#wrappers)
1812

1913
## WARNING - DISCLAIMER
2014

21-
Note: **PLCs control many kinds of equipment and loss of property, production or even life can happen if mistakes in programming or access are made. Always use caution when accessing or programming PLCs!**
15+
PLCs control equipment where loss of property, production, or life can occur from programming mistakes. Always exercise caution when accessing or programming PLCs!
2216

23-
We make no claims or warrants about the suitability of this code for
24-
any purpose.
17+
We make no claims or warranties about the suitability of this code for any purpose.
2518

26-
Be careful!
19+
## Key Features
2720

28-
## Features
21+
- EtherNet/IP and Modbus TCP support
22+
- Multi-platform: Linux, Windows, macOS (x86, x86-64, ARM, MIPS)
23+
- Multi-language: C core with wrappers for C#/.Net, Java, Julia, Go, Python, and more
24+
- Stable API with minimal breaking changes since 2012
25+
- High performance with low memory footprint
26+
- Free and open source (dual licensed: MPL 2.0 or LGPL 2+)
2927

30-
### High Level Features
28+
## PLC Support
3129

32-
- EtherNet/IP and Modbus TCP support.
33-
- Open source licensing.
34-
- Cross platform support.
35-
- Very stable API with almost no changes other than feature additions since 2012.
36-
- Low memory use and very high performance and capacity. Uses protocol-specific features to increase performance.
37-
- Wrappers for higher level languages like C#/.Net, Julia etc.
38-
- Free!
30+
- Rockwell/Allen-Bradley: ControlLogix, CompactLogix, Micro 800/850, MicroLogix, SLC 500, PLC-5
31+
- Omron: NX/NJ series PLCs
32+
- Modbus TCP devices
3933

40-
### Detailed Features
34+
For detailed feature lists, see the [full README](https://github.com/libplctag/libplctag#features).
4135

42-
#### PLC Support
36+
## Getting Started
4337

44-
- support for Rockwell/Allen-Bradley ControlLogix(tm) PLCs via CIP-EtherNet/IP (CIP/EIP or EIP).
45-
- read/write 8, 16, 32, and 64-bit signed and unsigned integers.
46-
- read/write single bits/booleans.
47-
- read/write 32-bit and 64-bit IEEE format (little endian) floating point.
48-
- raw support for user-defined structures (you need to pull out the data piece by piece)
49-
- read/write arrays of the above.
50-
- multiple-request support per packet.
51-
- packet size negotiation with newer firmware (version 20+) and hardware.
52-
- tag listing, both controller and program tags.
53-
- support for Rockwell/Allen-Bradley MicroLogix 8x0 PLCs.
54-
- Support as for ControlLogix where possible.
55-
- support for older Rockwell/Allen-Bradley such as PLC5 PLCs (E-series with Ethernet), SLC 500 and MicroLogix with Ethernet via CIP.
56-
- read/write of 16-bit INT.
57-
- read/write of 32-bit floating point.
58-
- read/write of arrays of the above (arrays not tested on SLC 500).
59-
- support for older Rockwell/Allen-Bradley PLCs accessed over a DH+ bridge (i.e. a LGX chassis with a DHRIO module) such as PLC/5, SLC 500 and MicroLogix.
60-
- read/write of 16-bit INT.
61-
- read/write of 32-bit floating point.
62-
- read/write of arrays of the above.
63-
- Support for Omron NX/NJ series PLCs as for Allen-Bradley Micro8x0.
64-
- Support for Modbus TCP.
38+
1. [Download pre-built binaries](https://github.com/libplctag/libplctag/releases) for your platform
39+
2. Explore [example code](https://github.com/libplctag/libplctag/tree/release/src/examples), starting with [simple.c](https://github.com/libplctag/libplctag/blob/release/src/examples/simple.c)
40+
3. Read the [API documentation](https://github.com/libplctag/libplctag/wiki/API) on the wiki
41+
4. [Build from source](https://github.com/libplctag/libplctag) for your specific needs
6542

66-
## Components
43+
## Language Wrappers {#wrappers}
6744

68-
The following components are part of the libplctag organization. The core C library provides low level access to PLCs and performs all networking and PLC-specific protocol handling. Alternate wrappers in other languages provide higher-level APIs and more convenient programming.
45+
The C core library is designed for easy wrapping in other languages:
6946

70-
Go to the specific project below for language/project-specific information.
47+
Official projects in the libplctag organization:
48+
- [libplctag.NET](https://github.com/libplctag/libplctag.NET) - C#/.Net (very popular!)
49+
- [libplctag4j](https://github.com/libplctag/libplctag4j) - Java and Android
50+
- [PLCTag.jl](https://github.com/libplctag/PLCTag.jl) - Julia
51+
- [goplctag](https://github.com/libplctag/goplctag) - Go
7152

72-
1. [libplctag](https://github.com/libplctag/libplctag) - This is the core C library. It can be used directly in C or C++ or wrapped in other languages with some sort of FFI system. The API provided by this library is low level.
73-
2. [libplctag.NET](https://github.com/libplctag/libplctag.NET) - This library wraps the C core library for C# and VB. It can also be used from Nuget. It includes the native C DLLs for multiple platforms.
74-
3. [PLCTag.jl](https://github.com/libplctag/PLCTag.jl) - A Julia language wrapper for the core C library. It is available in the Julia package manager.
75-
4. [libplctag4j](https://github.com/libplctag/libplctag4j) - A Java language wrapper for the core C library. It includes native DLLs for multiple platforms as well. Also available for Android as an AAR. Soon to be available from JCenter.
76-
5. [libplctag4android](http://github.com/libplctag/libplctag4android) - A minimal example application demonstrating use of libplctag and libplctag4j from Android.
53+
Included with the C library:
54+
- C++, Python, Pascal
7755

78-
## Contact and Support
56+
Community wrappers:
57+
- Additional C# implementations and LabVIEW support available on GitHub
7958

80-
There are two ways to ask for help or contact us.
59+
## Contributing
8160

82-
### libplctag Forum
61+
We welcome contributions including bug reports, fixes, new protocols, platforms, language wrappers, and testing. See [how to contribute](https://github.com/libplctag/libplctag#how-to-contribute) in the main repository.
8362

84-
If you have general questions or comments about the
85-
library, its use, or about one of the wrapper libraries, please join the Google group
86-
[libplctag](https://groups.google.com/forum/#!forum/libplctag)!
63+
## Support & Community
8764

88-
The forum is open to all, but is by request only to keep the spammers down. The traffic is fairly
89-
light with usually a small number of emails per month. It is our primary means for users to
90-
ask questions and for discussions to happen. Announcements about released happen on the forum.
65+
- [libplctag Forum](https://groups.google.com/forum/#!forum/libplctag) - General questions and discussions
66+
- [GitHub Issues](https://github.com/libplctag/libplctag/issues) - Bug reports and feature requests
67+
- [Wiki History Page](https://github.com/libplctag/libplctag/wiki/History) - Learn how libplctag was created
9168

92-
### GitHub
69+
## License
9370

94-
If you find bugs or need specific features, please file them on GitHub's issue tracker for
95-
the specific project.
71+
Dual licensed under Mozilla Public License 2.0 (MPL 2.0) or GNU Lesser General Public License 2+ (LGPL 2+). See the main repository for license details.
72+
73+
---
74+
75+
For complete documentation, visit the [libplctag wiki](https://github.com/libplctag/libplctag/wiki) and [main repository](https://github.com/libplctag/libplctag).

0 commit comments

Comments
 (0)