PLC & Visual Basic 6.0 Communication using MSComm Control

Real Time Automated Control using PLC-VB Communication
Hi Friends Here i want to share a new post related to PLC and Visual Basic VB6.0 Communication VB code is given below. Enjoy
This paper is to enable the Delta PLC (Programmable Logic Control) DVP14SS to communicate with the Visual Basic 6.0. The communication between DVP14SS and Visual Basic 6.0 is via Modbus Serial
Protocol. Computers are used as a link between humans and PLC systems as they have more graphics and visual capabilities. These are nothing but SCADA systems widely used for determining plant set-ups and displaying plant status on high quality screens. They also record/log the system data for long period .The SCADA software’s are the software packages needs to be purchased from vendors and the cost depends on tag count. Visual Basic 6.0 platform can be used
develop the SCADA application effectively. Using VB 6.0 we integrate software and hardware across spectrum of vendors easily. Here we show simple approach to communicate Delta PLC with visual Basic using MSComm control in visual basic. By means of Visual Basic cost effective solution is possible as Visual Basic we do not need to purchase licenses and is cheaper than SCADA packages. It also has the advantages like flexibility.
I.      Introduction
Communication has become a major part of any process control automation system. Today PLC communication is as much for data acquisition as plant control. The objective of communication is to collect or transfer large / small amount of data. Over the course of time certain interfacing standards have been generated by industry in order to make communication between systems from two different manufacturers more simple. These standards typically defined the communications medium, transmission voltages, speed of communication, (baud rate). The first such real standard was RS232. This was written by the Electronic Industries Association (EIA). The main advantage of this being cost as RS232 interfaces are very simple and thus cheap, plus of course the fact that most PCs, which are used more and more in automation systems today, have at least one RS232 (serial) interface as a standard.
Programmable Logic Controllers (PLC’s) are solid state devices using integrated circuits to control process or machines. They can store instructions like sequencing counting, timing, arithmetic, data manipulation
and communication [2]. A PLC is an example of a hard real time system since output results must be produced in response to input conditions within a bounded time, otherwise unintended operation will result. PLC reads the status
of the external input devices, e.g. keypad, sensor, switch and pulses, and execute by the microprocessor logic, sequential, timing, counting and arithmetic operations according the status of the input signals as well as the
pre-written program stored in the PLC [5]. The generated output signals are sent to output devices as the switch of a relay, electromagnetic valve, motor drive, control of a machine or operation of a procedure for the purpose of
machine automation or processing procedure.
Visual Basic (VB) is developed by Microsoft Corporation and is most widely used development environment in the world.  Visual Basic is tool provides platform to develop new optimum Windows/SCADA applications. Visual Basic can communicate with PLC with various ways. Visual Basic does not have code for communication protocol inbuilt. User need to write code for communication protocol or need to purchase ActiveX controls  which are used
to develop applications. ActiveX control with Libraries can be purchased to develop application. Here we are using MSComm ActiveX control freely available in VB to establish communication with delta PLC.
PLC-VB Communication
PLC-VB Communication
II.Method of Interfacing
Delta DVP14SS comes with serial port and the communication protocol is serial Modbus protocol which is a open protocol. Visual Basic acts as a Modbus Master device which issues request or commands
(Query) on serial bus which is received by slave.  PLC acts as a Modbus slave device and responds to the Master by sending massage called response. Modbus Query and Response contains fields like device address, function code, data, and error check [1]. Figure 1 shows the system block diagram. 
                                                                    TABLEI Function code for Delta plc                                              
Read Coil Status
S, Y, M, T, C
Read Input Status
S, X, Y, M,T, C
Read Holding Registers
T, C, D
Force Single Coil
S, Y, M, T, C
Preset Single Register
T, C, D
Force Multiple Coils
S, Y, M, T, C
Preset Multiple Register
T, C, D
Report Slave ID

Table 2 shows the Query format to read Input Status of contacts Y20 to Y47from slave device address 01

                                                TABLE II Query to Read input status y20 – y47
Slave Address
Command code
Starting Address Hi
Starting Address Lo
Number of Points Hi
Number of Points Lo
Error Check ( LRC )
Table 3 shows the response from slave device to Query shown above.
                                                          TABLE III Response from slave
Slave Address
Command code
Bytes Count
DataCoils Y033…Y024
DataCoils Y043…Y034
DataCoils Y053…Y044
DataCoils Y063…Y054
DataCoils Y070…Y064
Error CheckLRC
The PLC receives the messages without a communication error, but cannot handle it, an exception response will return to the master device. In the exception response, the most significant bit of the original command code is set to 1, and an exception code explains the condition that caused the exception is returned. Table 4 shows message response with exception code. [3] [4]
                                             TABLE IIV Exception response from slave
Slave Address
Exception Code
Error Check ( LRC )
Table 5 shows different exception codes available in DVP14SS PLC [3] [4].
                                                          TABLE IIIV Exception codes

Illegal command code: The command code received in the command message is not available for the PLC.

Illegal device address: The device address received in the command message is not available for the PLC.

Illegal device value: The device value received in the command message is not available for the PLC.

Check Sum Error Check if the check Sum is correct Illegal command messages The command message is too short.
Command message length is out of range.
Visual Basic has ActiveX MSComm control 6.0  to send and receive ASCII characters on communication port. MSCommcontrol addedthrough the project component menu as shown in fig 2.

MSComm control is a drag and drop tool and can be accessed, handled with its properties and event handler. 

Following steps are implemented to obtain desired objective.
Knowing  the Modbus Protocol for Delta PLC DVP14SS series MPU support Modbus ASCII/RTU communication format with speed of up to 115,200bps. and modification on data length (data bits, parity bits, stop bits).Modbus communication format ,CRC calculation ,Modbus addressing for various internal devices of PLC are the key factor in the  interface. Communication parameters for COMcan be manipulated by writing ladder program. Here we use default protocol settings hence we do not alter PLC program. [4]
Writing Visual Basic code for MSComm Control Designing windows form in visual basic as shown in fig 4. Form contains controls like Timer, MSComm Control, Button, textbox etc.
OnComm () event in MSComm control is used to receive response from slave PLC.
strRx As String
    Select Case MSComm1.CommEvent
        Case comEvReceive
        Case comEvEOF
= MSComm1.Input
MSComm.output property is used to send ASCII characters through serial port.
Index = 0 To Len(txtWrite.Text) – 1
= Asc(Mid(txtWrite.Text, Index + 1, 1))
           sendArr(Index) = &HD
           sendArr(Index + 1) = &HA
           strRx = “”
            MSComm1.Output = sendArr
While True
        If MSComm1.InBufferCount > 0 Then
= strRx + MSComm1.Input
            If Len(strRx) > 2 Then
 If Asc(Mid(strRx, Len(strRx) – 1, 1)) =
&HD And Asc(Mid(strRx, Len(strRx), 1)) = &HA Then
                    Text1.Text = Mid(strRx, 1,
Len(strRx) – 2)
                    Exit Do
                End If
            End If
Fig 5 shows GUI developed using VB and results of serial communication between DVP14SS PLC and PC.
The main idea was to interface Visual Basic 6.0 and Delta PLC DVP14SS for more effective and efficient process control.  This project of interfacing establishes
communication between two powerful  technologies used in industries.
Visual Basic provides a platform where new solutions or highly customized  SCADA’s can be created with a richer
experience than those that may be provided by standard SCADA offerings
.  By using Visual Basic it offers many advantages over   SCADA packages as it comes free and not expensive. Also SCADA packages cost depend on the tag count and runtime licenses needs to be purchased. Thus for OEM Visual Basic offers the optimum solution.
Thus the PLC has been interfaced with Visual Basic 6.0 and several real time processes have been controlled.
[1]          “Modbus communication Manual,” MTL 8000 process control for process I/O ,The MTL Instruments Group PLC, England
[2]          NaregalkarAkshay.,Real Time Automated Control of Industrial Pocesses with PLC –LABVIEW Communication,.Ibrahimpatnam, Hyderabad, India, Issue-1, Volume-1 ,035-038
[3]          “DVP PLC communication Protocol,” Delta Electronics Inc,
[4]           “DVP PLC Application Manual,” Delta Electronics Inc,
[5]          T.Kalaiselvi, R.Praveena ,Aakanksha.R,, Dhanya.S, “PLC Based Automatic Bottle Filling and Capping System With User Defined Volume Selection,” IJETAE., Volume 2, Issue 8, August 2012.

2 thoughts on “PLC & Visual Basic 6.0 Communication using MSComm Control”

  1. I am no sure where you’re getting your information, but good topic. I needs to spend some time learning more or understanding more.
    Thanks for wonderful information I was looking for this information for my mission.


Leave a Comment