We will now connect our Productivity Open P1AM Arduino to a Click PLC. Using Modbus TCP the Arduino will be the Client (Master) and the Click will be the Server (Slave).
We will explain how to connect our P1AM-ETH Industrial Arduino Ethernet Shield to the Click PLC. The protocol will be Modbus TCP on an Ethernet communication network. Modbus is a master-slave type of communication. Masters will always send the commands to read or write to the slaves on the network. The slaves will respond if the communication is directed at them. Since this is an Ethernet network our master is known as a client and the slave as a server.
The P1AM Example from Automation Direct on GitHub will be used. It will be modified to write to holding registers and coils in the Click PLC.
The temperature from the thermocouple input unit on the P1AM will be written to the Click PLC. Inputs from the simulator input card on our Arduino P1AM will be written to the Click PLC outputs directly. The Click PLC will also be programmed with a heartbeat circuit. This will detect if communications have been severed and will reset the outputs after 5 seconds. Let’s get started with our Arduino P1AM Modbus client to Click Modbus server.
A Proportional-Integral-Derivative algorithm is a generic Control Loop feedback formula widely used in industrial control systems. A PID algorithm attempts to correct the error between a measured process variable and the desired setpoint by calculating and then outputting a corrective action that can adjust the process accordingly and rapidly, to keep the Error to a minimum.
The following links will explain the PID instruction.
PID for Dummies
PID Theory Explained
Wikipedia PID Controller
We will be using an immersion heater in a cup of water to keep the temperature at a constant value.
Our immersion heater will be controlled through a relay using time proportional control from our PID output. A J type thermocouple will be used with the P1-04THM thermocouple temperature and voltage input module. The Arduino PID Library by Brett Beauregard will be used with our productivity open P1AM industrial arduino. Our program sketch will use productivity blocks, that will then be verified into the C++ code in the Arduino IDE. Let’s get started.
We will now look at the arduino thermocouple module. The productivity open P1AM industrial arduino P1000 thermocouple module can be connected to our P1AM-START1 ProductivityOpen starter kit with Ethernet. We will be programming our arduino thermocouple module using the configuration tool on Github and productivity blocks.
The productivity open P1AM I/O interface chip-set supports the full suite of Productivity 1000 I/O expansion modules. These modules are industry approved and proven in the industrial environment. Modern industrial signal levels for digital and analog inputs and outputs are used. P1000 modules available to you include the following:
• High-speed Input
We will be adding and programming a P1-04THM thermocouple temperature and voltage input module to our P1AM-START1 ProductivityOpen starter kit with Ethernet. This card is very flexible and we will use the configuration tool on Github and productivity blocks. Let’s get started.
Operators in your Arduino sketches (programs) consist of comparison blocks, concatenate strings, bitwise operators, string conversion, ‘not’ operator, and compound operators. These operations generally will be used with other instructions in your sketch. It is important to understand what instructions are available and what they are designed to accomplish.
We will be looking at each of these instructions that are available using productivity blocks. A sample sketch will be shown that will use some of these operators. The sketch will get a number between 1 and 100 from the built-in Arduino IDE (integrated development environment) serial monitor. It will print the number on the monitor if it is between 1 and 100, else it will print try again. Let’s get started!
We will look at Arduino variables data types that can be used with our P1AM unit. Data types in the C++ language are used to determine the variable or function applied for the given type. The type will determine the size of the storage (bits), and the method to interpret the information.
Microprocessors can only understand binary (on / off) numbering systems. The interpretation of these binary numbers will allow us to have several different data types. We will be reviewing the different data types that we can use in our sketches (programs) for our P1AM-100 Arduino industrial controller. Only the variables data types available in ProductivityBlocks will be discussed, but references will be made for all data types that can be used. We will then look at a program that will list some integer and string variables. This will then be displayed on the serial monitor of the Arduino IDE. Let’s get started.