What is a PLC and how do I talk Python to it?
Presented at North Bay Python 2019, Nov 2019, Petaluma, CA
Abstract on conference website. This was a modified version of the talk I gave at PyCon 2019.
Video
Slides
Code from the presentation
This Github repo contains the PLC projects and Python code used during the presentation, as well as a few files that didn’t make the cut due to the time limit. Note that the PLC projects can be edited with the free “Productivity Suite” software (Windows only) which you can download from Automation Direct here. The README files in the repo should contain all the information needed to open the files. To actually run the code, you will need to have a physical PLC.
Please open an issue in the Github repo if you find an error or have a question!
Links from the presentation
PyPI packages mentioned
- pycomm
- python-snap7
- chwiede.pyads
- bfabio.pyads
- adshli
- pyads
- clickplc
- df1
- pcom
- fatek-fbs-lib
- pymodbus
- pyModbusTCP
- MinimalModbus
- cpppo
- devkid/profinet (Github link, no PyPI project)
- opcua (part of the FreeOpcUa project)
- asyncua (part of the FreeOpcUa project)
- opcua-client (part of the FreeOpcUa project)
- opcua-webclient
- pysoem
- pyprofibus
- canopen
- j1939
- OpenOPC
- rawsocketpy
- dnet
Other Assorted Links
- This PDF by GE Automation is a well-written introduction to what OPC-UA standardizes and how it came about to replace its Microsoft-only predecessor. See also the FreeOpcUa project above.
- List of Automation Protocols on Wikipedia
- List of PLC Manufacturers on Wikipedia
- My spreadsheet of PLC brands and products
- IEC 61131-3 on Wikipedia
- IEC 61131 on Wikipedia