QUICK FACTS
- NAME
- R.K. Narayan
- OCCUPATION
- Author, Journalist
- BIRTH DATE
- October 10, 1906
- EDUCATION
- Maharaja College of Mysore
- ORIGINALLY
- Rasipuram Krishnaswami Iyer Narayanaswami
- R. K. Narayan
- R. K. Narayan, full name Rasipuram Krishnaswami Iyer Narayanaswami, was an Indian writer, best known for his works set in the fictional South Indian town of Malgudi.
- Born: October 10, 1906, Chennai
- Education: University of Mysore
- Siblings: R. K. Laxman
- Awards: Filmfare Award for Best Story, Padma Vibhushan, Padma Bhushan
R.K. Narayan
Author, Journalist (1906–2001)Indian author R.K. Narayan is widely considered to be one of India's greatest English language novelists known for his simple and unpretentious writing style.Synopsis
Indian author R.K. Narayan is widely considered to be one of India's greatest English language novelists known for his simple and unpretentious writing style, often compared to William Faulkner. Narayan has been nominated for the Nobel Prize in Literature multiple times but has not yet won the honor. His popular works include The English Teacher, The Financial Expert andWaiting for the Mahatma.
Sofcon Traning PVT LTD institute and company where Btech , Mtech, BSC and MSC students have became successful Automation Engineer in various field like PLC Training, PLC Scada Training, Embedded Training. Sofcon is not just a training provider, we are stand for help after job and Sofcon have placed 35000 thousand in automation industry. Sofcon Training Branches are available in all over Inida like Noida, Delhi, Lucknow, Gurgaon, Ahmedabad, Vadodara, Bhopal, Pune and Jaipur.
Friday 10 October 2014
R.K. Narayan Biography | Malgudi
Thursday 9 October 2014
Understanding The Programming Of The PLC
The programming of the plc is a procedure of making commands,
arrangements, and measurements used by the PLC to make control on a
machine or operation. The body of this process is the plc and the
program is the brain.In fact, the programmed PLC makes a machine looks
like a human. PLC stands for programmable logic controller.A PLC has
begun in the 1960's by Modicon Company.
Its initial application was in
the cars production factories in which it removed the old relays and
replaced it with the plc.
As usual, a better solution is always in a creative mind, though it was a
simple decision and control system effective for the era. Quickly, a
communication can be a mechanized switch operated by an electric supply
to switch it on and off.
Getting mechanized by nature is big compared to
electronic devices and transferring components usually degrade and
wear, and finally are unsuccessful. Producing the preferred relay common
sense needs many relays and many more wires in order to connect them.
Rewiring is needed if the logic is wrong or needs to be updated.
The PLC reduces many of these actual relays to create common sense which
moves and circuits them almost to the software. PLC development has
typically been and still at Step ladder Diagram or Step ladder Common
sense. It continues to be mostly employed language for encoding a PLC,
despite the fact that you will find choice spoken languages. The basic
reason is, it is rather like the electric powered schematics employed
for communicate reason.
Ladder reasoning is programmed using frequent power icons like those
utilized for contacts and coils. A step ladder diagram program appears
to be a power drawing that electricians are comfortable and familiar
with, very easy adoption from the difficult-wired relays for the PLC was
attained. Programming a PLC demands a certain knowledge and skill.
Comprehending the method that will be operated or programmed is
paramount. Start-up and Shutdown characteristics tend to be overlooked
or provided little focus at the start in which the concentration is in
the principal features of the machine or process. The PLC should be
picked to match the application as well as each one of the outputs and
inputs accounted for and extras integrated in the event that the task
expands or to deal with components that have been basically overlooked.
Planning upfront will save time and frustrations later, as with all
projects.
Getting together with all the stakeholders or those engaged might be a
wonderful initial step. Hash out the range and establish a time-range
and possess individuals included agreement to it. Later on, when extra
features or characteristics are asked for, you can support the
explanation of the coding task getting more than initially proposed.
PLC coding is only area of the whole job of automating a piece of
equipment. An expert must layout and stipulates the ingredients that
provide the PLC with its inputs and outputs that are going to control.
If you are only responsible to programming the plc, so you need all the
inputs and outputs lists and their specs from the engineer.
He or she will also be the main one to deliver a controlled narration or
information from the project. Undertaken one step more in advancement,
Boolean Reason diagrams might be provided to you the developer which can
(if in depth adequate) be used to create the program. Quite often the
Handles Electric Engineer will also carry out the programming and
perhaps the HMI coding... but which is another subject.
So in wrapping it up, PLC programming is about giving brains to machines
processes using a specialized computer and requires significant
knowledge and skills. I will tell you it can be a very fulfilling job
when it comes to struggle, constant studying, teamwork and last and
positively not very least, monetarily get.
Enhanced motion control, safety and performance
Kollmorgen Automation Suite version 2.8 delivers new functions
With
an embedded EtherCAT configuration tool, version 2.8 of the Kollmorgen
Automation Suite (KAS) software accelerates the development of modular
machine architectures.
The
new release of the integrated development environment now enables users
to build complete EtherCAT systems and configure all peripheral
components, including HMI, I/O, controllers and motors, with a single
tool. Along with ergonomic improvements, the resulting simplification
makes life easier for system developers and boosts engineering
efficiency.
One of the key innovations in Kollmorgen
Automation Suite 2.8 is the embedded EtherCAT configuration tool, which
makes it easy to integrate EtherCAT components (including those from
other manufacturers) into the application. With this open architecture,
Kollmorgen reduces development time for modular, multi-purpose machine
architectures. Another clear advantage of this approach is that direct
communication with Kollmorgen AKD PDMM servo controllers from PC-based
applications is now possible using UDP and HTTP protocols.
EtherCAT,
safety and visualisation: the new software release 2.8 of Kollmorgen
Automation Suite (KAS) offers a variety of new functions for faster
machine development.
Convenience
is also enhanced by the incorporation of safety technology in the
engineering process. For this purpose, the release integrates
Kollmorgen's new KSM series of safety modules. These compact devices
combine Safe PLC with Safe I/O in a single package and provide
TÜV-certified functions up to performance level e of ISO 13849 or SIL 3
of IEC 61508.
Version 2.8 of the Kollmorgen Automation
Suite also features performance enhancements for servo amplifiers. The
user-programmable controllers in the AKD PDMM family form the core of
KAS thanks to the "IPC inside" philosophy. Future devices feature twice
as much capacity at rated currents up to 24 A and faster processors.
Along with general performance enhancements, application options are
expanded by the inclusion of new motion control functions.
Wednesday 8 October 2014
PLC Programming Introduction | Sofcon
One method of the PLC programming is using ladder
diagram method. Ladder diagram consists of a descending line on the left, with
lines branching to the right. This line is the line branching instructions.
Throughout this instruction line consists a combination of logic that states
when and how the existing instructions on the right side are done.
Ladder Diagram Example
The logic
combination of ladder diagram as following:
A. Instruction
LOAD (LD) and LOAD NOT (LD NOT)
The
first condition that starts any logic block in the ladder diagram associated
with LOAD instruction (LD) or LOAD NOT (LD NOT). Each of these instructions
requires one line of mnemonic code.
B. Instruction
AND and AND NOT
If
two or more conditions that are connected in series on the same instruction
line, then the first condition using LD or LD instruction and the remainder NOT
use the instructions AND or AND NOT.
AND
instruction can be imagined to produce ON if both conditions are linked with
this instruction in all ON conditions, if any one in the OFF state, let alone
both OFF, the instruction will always result AND OFF too.
If two or more conditions connected in
parallel, meaning in a different line of instructions and then joined again in
the same instruction line, then the first condition associated with LD or LD
instruction and the rest is NOT related to the instructions OR or OR NOT.
In
this case imaginable OR instruction will always result in ON execution
condition when any one of two or more conditions connected with this
instruction in the ON condition.
Sofcon Arrange Workshope in RCEW ( Rajasthan College of Engineers for Women) Bhakrota, Jaipur....
The workshop was highly appreciated by 90 students of Electrical Branch ( II, III & Final Year Students). Feedback was positive.
Engineers detailed.
1. Mr. KL Swami ( Training Head)
2. Mr. Prem Kishan Rana (Automation Engineer)
3. Mr. Prithavraj (Embedded Engineer) Under Training
Tuesday 7 October 2014
PLC Real Time Clock Using Arduino programming at Sofcon
PLC real time clock using arduino and real time clock module. for real time module use DS3231 RTC Board. The way it works is: Arduino reads data from the DS3231, this data is sent directly to the PLC memory. and for setting the date and time via the DS3124 and computer by using visual basic net (VB.Net)
PLC real time clock process:
1. Read date and time from DS3231 RTC Board with Arduino via I2C communication
2. Send data to PLC with Arduino via RS232 communication and PLC Protocol
3. Receive data in PLC data memory
Flow process of the PLC Real TIme Clock:
Arduino Source Code#include <Wire.h>; const int DS1307 = 0x68; byte second = 0; byte minute = 0; byte hourofday = 0; byte dayofweek = 0; byte date = 0; byte month = 0; byte year = 0; byte set[7]; const char delimiter = ','; String message; byte i; int y; void setup() { Wire.begin(); Serial.begin(9600,SERIAL_8E1);//9600,8,Even,1 Serial.setTimeout(800); } void loop() { sendTime(); message = Serial.readString(); //= "year,month,date,week,hour,minute,second"; incomeTime(); } byte decToBcd(byte val) { return ((val/10*16) + (val%10)); } byte bcdToDec(byte val) { return ((val/16*10) + (val%16)); } void incomeTime() { i=0; y=-1; do { y = message.indexOf(delimiter); if(y != -1) { if(i<=5)set[i]=message.substring(0,y).toInt(); message = message.substring(y+1, message.length()); i++; } else { if(message.length() > 0 && i==6) set[i]=message.toInt(); } } while(y >=0); if (i==6){ if(set[0]>=0 && set[0]<=99){ if(set[1]>=1 && set[1]<=12){ if(set[2]>=1 && set[2]<=31){ if(set[3]>=1 && set[3]<=7){ if(set[4]>=0 && set[4]<=23){ if(set[5]>=0 && set[5]<=59){ if(set[6]>=0 && set[6]<=59){ setTime(); } } } } } } } } } void setTime() { year =set[0]; month =set[1]; date =set[2]; dayofweek =set[3]; hourofday =set[4]; minute =set[5]; second = set[6]; Wire.beginTransmission(DS1307); Wire.write(byte(0)); Wire.write(decToBcd(second)); Wire.write(decToBcd(minute)); Wire.write(decToBcd(hourofday)); Wire.write(decToBcd(dayofweek)); Wire.write(decToBcd(date)); Wire.write(decToBcd(month)); Wire.write(decToBcd(year)); Wire.write(byte(0)); Wire.endTransmission(); } void sendTime() { readTime(); int VB0 = second;// VB0=SECOND : 0 to 59 int VB1 = minute;//VB1=MINUTE : 0 to 59 int VB2 = hourofday;//VB2=HOUR OF DAY : 0 to 23 int VB3 = date;//VB3= DATE : 1 to 31 int VB4 = month;//VB4= MONTH : 1 to 12 int VB5 = dayofweek;//VB5= DAY OF WEEK : 1=SUNDAY, 2=MONDAY, 3=TUESDAY, 4=WEDNESDAY, 5=THURSDAY, 6=FRIDAY, 7=SATURDAY int VB6 = year;//VW6= YEAR 00 to 99 int VWstart = 0; //Start from VW0 int VWcount = 4; byte str_write[45]; long Temp_FCS=0; int i; str_write[1] = (byte)((VWcount * 2) + 31); str_write[2] = (byte)str_write[1]; str_write[24] = (byte)(VWcount * 2); str_write[16] = (byte)(str_write[24] + 4); str_write[33] = (byte)((VWcount * 16) / 256); str_write[34] = (byte)((VWcount * 16) % 256); str_write[29] = (byte)((VWstart * 8) / 256); str_write[30] = (byte)((VWstart * 8) % 256); str_write[0] = (byte)0x68;//H68 str_write[3] = (byte)0x68;//H68 str_write[4] = (byte)0x02;//H2 str_write[5] = (byte)0x00;//H0 str_write[6] = (byte)0x7C;//H7C str_write[7] = (byte)0x32;//H32 str_write[8] = (byte)0x01;//H1 str_write[9] = (byte)0x00;//H0 str_write[10] = (byte)0x0;//H0 str_write[11] = (byte)0x43;//H43 str_write[12] = (byte)0x01;//H1 str_write[13] = (byte)0x00;//H0 str_write[14] = (byte)0x0E;//HE str_write[15] = (byte)0x00;//H0 str_write[17] = (byte)0x05;//H5 str_write[18] = (byte)0x01;//H1 str_write[19] = (byte)0x12;//H12 str_write[20] = (byte)0x0A;//HA str_write[21] = (byte)0x10;//H10 str_write[22] = (byte)0x02;//H2 str_write[23] = (byte)0x00;//H0 str_write[25] = (byte)0x00;//H0 str_write[26] = (byte)0x01;//H1 str_write[27] = (byte)0x84;//H84 str_write[28] = (byte)0x00;//H0 str_write[31] = (byte)0x00;//H0 str_write[32] = (byte)0x04;//H4 str_write[35] = (byte)VB0; str_write[36] = (byte)VB1; str_write[37] = (byte)VB2; str_write[38] = (byte)VB3; str_write[39] = (byte)VB4; str_write[40] = (byte)VB5; str_write[41] = (byte)VB6; str_write[42] = (byte)0; for (i = 4; i <= 42; i++) { Temp_FCS = Temp_FCS + str_write[i]; } str_write[43] = (byte)(Temp_FCS % 256); str_write[44] = (byte)0x16;//H16 Serial.write(str_write, sizeof(str_write)); delay(100); byte str_val[6]; str_val[0] = (byte)0x10;//H10; str_val[1] = (byte)0x02;//H2; str_val[2] = (byte)0x00;//H0; str_val[3] = (byte)0x5C;//H5C; str_val[4] = (byte)0x5E;//H5E; str_val[5] = (byte)0x16;//H16; Serial.write(str_val, sizeof(str_val)); delay(100); } void readTime() { Wire.beginTransmission(DS1307); Wire.write(byte(0)); Wire.endTransmission(); Wire.requestFrom(DS1307, 7); second = bcdToDec(Wire.read()); minute = bcdToDec(Wire.read()); hourofday = bcdToDec(Wire.read()); dayofweek = bcdToDec(Wire.read()); date = bcdToDec(Wire.read()); month = bcdToDec(Wire.read()); year = bcdToDec(Wire.read()); }}
Modbus RTU Communication Between PLC and Raspberry Pi Using Python
Modbus communication in these applications using serial communication / RS232 and Modbus RTU.
This application use simple modbus with Python programming on Raspberry Pi, and not use modbus from a third party.
For the hardware used in this application:
1. PLC
2. Raspberry Pi (Only for setting, using: monitor, keyboard, mouse, adapter, flash disk)
3. Serial PLC Cable
4.Serial Module ,and
5. Serial Crossover Connector.
For the connection beetween PLC and Raspberry Pi, Raspberry Pi Setting (Auto Login, Install PySerial, Setup UART Pins, Auto Run Python after Booting) :
Connection of Modbus RTU Communication Between PLC and Raspberry Pi:
About Modbus:
Modbus application using function code 03, and function code 16. for this function code, you can go to the link:
http://program-plc.blogspot.com/2014/09/how-to-make-simple-modbus-rtu.html
Python Code of Modbus Communication on Raspberry Pi:
This application use simple modbus with Python programming on Raspberry Pi, and not use modbus from a third party.
For the hardware used in this application:
1. PLC
2. Raspberry Pi (Only for setting, using: monitor, keyboard, mouse, adapter, flash disk)
3. Serial PLC Cable
4.Serial Module ,and
5. Serial Crossover Connector.
For the connection beetween PLC and Raspberry Pi, Raspberry Pi Setting (Auto Login, Install PySerial, Setup UART Pins, Auto Run Python after Booting) :
Connection of Modbus RTU Communication Between PLC and Raspberry Pi:
About Modbus:
Modbus application using function code 03, and function code 16. for this function code, you can go to the link:
http://program-plc.blogspot.com/2014/09/how-to-make-simple-modbus-rtu.html
Python Code of Modbus Communication on Raspberry Pi:
import serial
import random
#Sub Program
#CRC
Calculation
def CRCcal(msg):
#CRC (Cyclical Redundancy Check)
Calculation
CRC = 0xFFFF
CRCHi = 0xFF
CRCLo = 0xFF
CRCLSB = 0x00
for i in range(0,
len(msg)-2,+1):
CRC = (CRC ^ msg[i])
for j in range(0,
8):
CRCLSB = (CRC & 0x0001);
CRC = ((CRC >> 1) &
0x7FFF)
if (CRCLSB == 1):
CRC = (CRC ^ 0xA001)
CRCHi = ((CRC >> 8) & 0xFF)
CRCLo = (CRC & 0xFF)
return (CRCLo,CRCHi)
#CRC Valdation
def CRCvalid(resp):
CRC = CRCcal(resp)
if (CRC[0]==resp[len(resp)-2])
& (CRC[1]==resp[len(resp)-1]):return True
return False
#Modbus
Function Code 16 = Preset Multiple Registers
def Func16Modbus(slave,start,values):
Slave_Address = slave
Function = 16
Starting_Address = start
NumberofRegisters = len(values)
Byte_Count = NumberofRegisters * 2
message = [0 for i in range(9 + 2 * NumberofRegisters)]
#index0 = Slave
Address
message[0] = (Slave_Address & 0xFF)
#index1 = Function
message[1] = (Function & 0xFF)
#index2 = Starting Address Hi
message[2] = ((Starting_Address >> 8)
& 0xFF)
#index3 = Starting Address Lo
message[3] = (Starting_Address & 0xFF)
#index4 = Number of Registers Hi
message[4] = ((NumberofRegisters >>
8) & 0xFF)
#index5 = Number of Registers Lo
message[5] = (NumberofRegisters & 0xFF)
#index6 = Byte Count
message[6] = (Byte_Count & 0xFF)
for i in range(0,
NumberofRegisters):
#Data Hi, index7 and index9
message[7 + 2 * i] = ((values[i]
>> 8) & 0xFF)
#Data Lo, index8 and index10
message[8 + 2 * i] = values[i] &
0xFF
#CRC (Cyclical
Redundancy Check) Calculation
CRC = CRCcal(message)
#index11= CRC Lo
message[len(message)
- 2] = CRC[0]#CRCLo
#index12 = CRC Hi
message[len(message)
- 1] = CRC[1]#CRCHi
if ser.isOpen:
ser.write("".join(chr(h)
for
h in
message))
reading = ser.read(8)
response = [0 for i in range(len(reading))]
for i in range(0,
len(reading)):
response[i] = ord(reading[i])
if len(response)==8:
CRCok = CRCvalid(response)
if CRCok &
(response[0]==slave) & (response[1]==Function):return True
return False
#Modbus
Function Code 03 = Read Holding Registers
def Func03Modbus(slave,start,NumOfPoints):
#Function 3 request is always 8 bytes
message = [0 for i in range(8)]
Slave_Address = slave
Function = 3
Starting_Address = start
Number_of_Points = NumOfPoints
#index0 = Slave
Address
message[0] = Slave_Address
#index1 = Function
message[1] = Function
#index2 = Starting Address Hi
message[2] = ((Starting_Address >>
8)& 0xFF)
#index3 = Starting Address Lo
message[3] = (Starting_Address& 0xFF)
#index4 = Number of Points Hi
message[4] = ((Number_of_Points >>
8)& 0xFF)
#index5 = Number of Points Lo
message[5] = (Number_of_Points& 0xFF)
#CRC (Cyclical Redundancy Check)
Calculation
CRC = CRCcal(message)
#index6= CRC Lo
message[len(message)
- 2] = CRC[0]#CRCLo
#index7 = CRC Hi
message[len(message)
- 1] = CRC[1]#CRCHi
if ser.isOpen:
ser.write("".join(chr(h)
for
h in message))
responseFunc3total = 5 + 2 *
Number_of_Points
reading = ser.read(responseFunc3total)
response = [0 for i in range(len(reading))]
for i in range(0,
len(reading)):
response[i] = ord(reading[i])
if len(response)==responseFunc3total:
CRCok = CRCvalid(response)
if CRCok &
(response[0]==slave) & (response[1]==Function):
#Byte Count in index 3 =
responseFunc3[2]
#Number of Registers = byte
count / 2 = responseFunc3[2] / 2
registers = ((response[2] /
2)& 0xFF)
values = [0 for i in
range(registers)]
for i in range(0, len(values)):
#Data Hi and Registers1
from Index3
values[i] = response[2 * i
+ 3]
#Move to Hi
values[i] <<= 8
#Data Lo and Registers1
from Index4
values[i] += response[2 * i
+ 4]
negatif =
values[i]>>15
if
negatif==1:values[i]=values[i]*-1
return values
return ()
#Main Program
#Serial Port
9600,8,E,1
#Serial Open
try:
ser = serial.Serial(
port = '/dev/ttyAMA0',
baudrate = 9600,
bytesize = serial.EIGHTBITS,
parity = serial.PARITY_EVEN,
stopbits = serial.STOPBITS_ONE,
timeout = 0.2
)
except Exception, e:
raise ValueError(e)
print "START"
while 1:
#Serial Open Check
if not ser.isOpen:ser.open()
#Read of Registers
Func03ArrayValue = Func03Modbus(1,0,2);#slave,start,number of registers
if len(Func03ArrayValue)>0:
for i in range(0,
len(Func03ArrayValue)):
print "Read of Registers" + str(i) + " = " + str(Func03ArrayValue[i])
#Fill Random Value for Write
totalvalue=2
val = [0 for i in range(totalvalue)]
for i in range(0,
len(val)):
val[i] = random.randrange(-32767,32767)
#Random Valiue from -32767 to max 32767
#Write of Registers
WriteValid =
Func16Modbus(1,2,val)#slave,start,array value
if WriteValid:
for i in range(0,
len(val)):
print "Write of Registers" + str(i) + " = " + str(val[i])
print "#################################"
Subscribe to:
Posts (Atom)