Friday, December 29, 2023

Modbus vs OPC


OPC

  • OPC stands for OLE for Process Control. OPC is communicating software-to-software for operator display.
  • OPC is mostly a standard interface software between a driver, mostly for networks and device hardware, and also a databases, and the application display for example software of HMI/process visualization.
  • You use OPC between a hardware driver software (OPC server) and a process visualization software (OPC client) on a Windows computer, or another client such advanced control, statistics etc. If the server and client applications are in different computers they communicate across Ethernet.
  • OPC is principle within the environment of Windows to get data from the server I/O to other applications for example process control, soft alarms, graphics, trend, advanced control, auto tuning, statistical etc. anyway if the applications are implementing on the different or same computers.
  • OPC is not the finest option for interlock communication and closed loops between controllers. Because it is not completely deterministic or real-time.
  • For OPC you can browse the data, see what is available, without having to worry where it is located and in what data type. This makes it a whole lot easier to use. OPC runs on Windows operating system so OPC depends on the reliability of computers.
MODBUS
  • Modbus is communicating hardware-to-hardware for control.
  • Modbus/TCP is idyllic for interlock communication and closed loops between controllers.
  • It is all software driven and does not need any cards of scanner, Just RS-485 or RS-232.
  • You can use either Modbus, Profibus, or any other fieldbus for closed loop control.

  • Modbus/TCP is not the most excellent option for communications between computers or between applications software. It is because the Modbus/TCP simplicity comes from a lack of logical object structure and a standard data types.
  • Modbus breaks data down to the lowest feasible denominator. That’s why it can move to anywhere, but once it takes there it gets many user configuration attempt to plan registers Modbus back into names of parameter and group them rationally in objects and separating what all the types of data are thought to be after all has been changed to words of Modbus. For some parameters it is feasible, but with the great amount of information accessible in up to date systems it does not fly.
  • For Modbus you find data in registers. Every device use different registers, and if the device is programmable the registers will also be different for each application. Some devices use integers while other use floating point. Some devices use percentage while others use engineering unit. You need to refer to device documentation to find which information is in which register and what format is used. This is quite tedious. Making changes often create a lot of work.





Monday, December 11, 2023

Arduino interfacing with ADS1115 for high resolution analog measurement

 


To interface with the ADS1115 ADC and print data on an LCD using Arduino, you will need to do the following:

  1. Connect the ADS1115 to the Arduino using the I2C protocol. Connect the SDA and SCL pins of the ADS1115 to the corresponding pins on the Arduino (A4 and A5, respectively).

  2. Connect the LCD to the Arduino using the appropriate pins. This can vary depending on the specific LCD you are using, but typically involves connecting the LCD's data pins (D4-D7) to digital pins on the Arduino and connecting the RS, E, and RW pins to other digital pins.

  3. Include the necessary libraries in your Arduino sketch. You will need the Wire library for I2C communication and the LiquidCrystal library for controlling the LCD.

  4. In your sketch, initialize the ADS1115 and the LCD. This will involve setting up the I2C communication and configuring the ADC and the LCD for your specific needs.

  5. Continuously read the data from the ADS1115 and display it on the LCD. You can use the ADS1115 library to read the data from the ADC, and the LiquidCrystal library to write the data to the LCD.

Here's some example code to get you started:

#include <Wire.h> #include <Adafruit_ADS1015.h> #include <LiquidCrystal.h> #define ADS1115_ADDRESS 0x48 Adafruit_ADS1115 ads(ADS1115_ADDRESS); #define LCD_RS 12 #define LCD_EN 11 #define LCD_D4 5 #define LCD_D5 4 #define LCD_D6 3 #define LCD_D7 2 LiquidCrystal lcd(LCD_RS, LCD_EN, LCD_D4, LCD_D5, LCD_D6, LCD_D7); void setup() { Wire.begin(); ads.begin(); lcd.begin(16, 2); } void loop() { int16_t adc0, adc1, adc2, adc3; adc0 = ads.readADC_SingleEnded(0); adc1 = ads.readADC_SingleEnded(1); adc2 = ads.readADC_SingleEnded(2); adc3 = ads.readADC_SingleEnded(3); lcd.clear(); lcd.setCursor(0, 0); lcd.print("ADC0: "); lcd.print(adc0); lcd.setCursor(0, 1); lcd.print("ADC1: "); lcd.print(adc1); delay(500); }

This code initializes the ADS1115 and the LCD in the setup() function, and continuously reads the data from the ADC and displays it on the LCD in the loop() function. The ADC data is read using the readADC_SingleEnded() function, and the data is written to the LCD using the print() function of the LiquidCrystal library. You can modify this code to suit your specific needs, such as changing the ADC channels that are read, or adding additional LCD displays.



#include <Wire.h> #include <Adafruit_ADS1015.h> #include <LiquidCrystal.h> #define ADS1115_ADDRESS 0x48 Adafruit_ADS1115 ads(ADS1115_ADDRESS); #define LCD_RS 12 #define LCD_EN 11 #define LCD_D4 5 #define LCD_D5 4 #define LCD_D6 3 #define LCD_D7 2 LiquidCrystal lcd(LCD_RS, LCD_EN, LCD_D4, LCD_D5, LCD_D6, LCD_D7); void setup() { Serial.begin(9600); Wire.begin(); ads.begin(); lcd.begin(16, 2); } void loop() { int16_t adc0, adc1, adc2, adc3; adc0 = ads.readADC_SingleEnded(0); adc1 = ads.readADC_SingleEnded(1); adc2 = ads.readADC_SingleEnded(2); adc3 = ads.readADC_SingleEnded(3); lcd.clear(); lcd.setCursor(0, 0); lcd.print("ADC0: "); lcd.print(adc0); lcd.setCursor(0, 1); lcd.print("ADC1: "); lcd.print(adc1); Serial.print("ADC0: "); Serial.println(adc0); Serial.print("ADC1: "); Serial.println(adc1); delay(500); }

This code adds the Serial.begin() function to initialize serial communication at a baud rate of 9600. In the loop() function, the ADC data is read and displayed on the LCD as before, but it is also sent over serial using the Serial.print() and Serial.println() functions. This allows you to monitor the ADC data in real-time using a serial monitor, such as the one built into the Arduino IDE. To view the serial output, open the serial monitor in the Arduino IDE and set the baud rate to 9600.

Saturday, February 25, 2023

Solution of a second order system using LabVIEW

 

The second-order system model is a set of mathematical equations used to describe the behavior of nonlinear systems. It consists of two nonlinear differential equations and a set of constants that define how those variables change over time. The system is defined by its state variables and the values for their respective operators at each instant in time.

Standard mathematical form of a second-order differential equation is as below:


Where A and B are constants.

For control system, the standard mathematical form of second order system with Unit step input is as below:


Where ξ is the damping factor and ωn is the natural frequency.

The system will be underdamped when 0 < ξ < 1. The particular solution,
yp(t) = 1 determines the steady state solution of the system. The homogeneous solution determines the transient solution which is


 

1.     Methods

This project report will be executed using LabVIEW. The first part of the report will be presenting Numeric block based code for analyzing the response of the system based on the following solution:

Where ξ is the damping factor and ωn is the natural frequency. If T is the total time for which response is analyzed, N is the number of points then time step is ∆t = T/N. At ith iteration, t= i*∆t = i*T/N.

We will be using this equation for different parameters of ζ , ωn, T and N to analyze its response on graph.

In next part of the lab we will be using another method which is call formula node. In formula node we write the formula in script and then give input and output arguments to it.

Below code is written using Numeric blocks in LabvIEW.



We can simulate the same model using Formula script node also.










Wednesday, February 1, 2023

Current Sinking and Current sourcing configuration of a device

Current sinking refers to a configuration in electrical circuits where a device, such as an LED or transistor, is connected to a power source and "sinks" current into the ground. This means that current flows from the power source, through the device, and into the ground.

Current sourcing, on the other hand, is when a device "sources" current out of a power source and into a load. In this configuration, current flows from the power source, through the device, and into a load, such as a motor or a resistor.

In both cases, the device acts as a switch that controls the flow of current in the circuit. The choice of whether to use current sinking or sourcing depends on the specific requirements of the circuit and the characteristics of the device being used. sinking and sourcing terminology applies only to DC input and output circuits. Input and output points that are sinking or sourcing can conduct current in one direction only. 
The figure below depicts a sinking input. To properly connect the external supply, it must be connected so the input provides a path to supply common(-). So, start at the PLC input terminal, follow through the input sensing circuit, exit at the common terminal, and connect the supply (-) to the common terminal. By adding the switch between the supply (+) and the input, the circuit is completed. Current flows in the direction of the arrow when the switch is closed.



The four possible combinations of input/output sinking/sourcing circuits are shown below. The common terminal is the terminal that serves as the common return path for all I/O points in the bank.





Why 4-20 mA signal is used for transmission?

4 to 20 mA Current Transmission

In many process control applications, signals are transmitted in the form of current in the range of 4 to 20 mA. Current loops are used not only for receiving information from sensors and field instrumentation, they are also used for transmitting control signals to actuators or other devices to regulate a controlled action. For long distance signal transmission, current signal is preferred because of

(1) Compatibility: The 4-20 mA signal is widely used in industrial process control because it is a widely accepted standard. This means that a wide range of instrumentation and control equipment is available that can use this signal, making it easy to integrate into many different types of control systems.


(2) Noise immunity from EMI:  Industrial environments can be noisy places, with electrical interference from other equipment and power sources. The 4-20 mA signal is designed to be immuned to this type of noise, which helps to ensure that the signal remains accurate and reliable even in noisy environments.

(3) Unaffected by voltage drop along the line.

(4) No stray Thermocouples at joints, hence no error due to thermoelectric emf.

(5) Current signal can be transmitted over long distance till the compliance voltage requirement is met.

(6) Self monitoring ability. currents less than 4 mA and higher than 20 mA can indicate a fault in the circuit.

(7) Power Transmission: The 4-20 mA signal is self-powered, meaning that it can be transmitted over long distances without the need for an external power source.

4 mA lower limit known as "Live zero" provides ability to detect cable or connection fault. The current upto 3.6-3.8mA is used to power the loop instruments in loop-powered mode.


How current transmission provide noise immunity?

(1) Loop wiring: The 4-20 mA signal is typically transmitted in a loop configuration, where the signal is transmitted from the field device back to the control system. This creates a closed loop circuit that helps to reduce the impact of noise and interference on the signal.

(2) Low frequency: The 4-20 mA signal operates at a relatively low frequency, typically in the range of a few kilohertz. This low frequency reduces the impact of high-frequency noise and interference that can be present in industrial environments.

(3) Signal strength: The 4-20 mA signal is transmitted at a relatively high current level, typically between 4 and 20 milliamperes. This high current level helps to ensure that the signal remains strong and robust, even in the presence of noise and interference.

(4) Common mode rejection: Many industrial control systems are designed to reject common mode noise, which is a type of noise that affects both the positive and negative parts of the signal in a similar way. The 4-20 mA signal is typically transmitted in a differential configuration, which helps to reduce the impact of common mode noise.

Relation between dBm and dBV with 50 Ohm Impedance

Relationship Between dBm and dBV with 50 Ohm Impedance Relationship Between dBm and dBV with 50 Ohm Impedance ...