Ömür BOZDEMİR

ömür bozdemir github profile ömür bozdemir github profile ömür bozdemir github profile

Raspberry pi 3 Python Modbus Plc Makine çalışma verilerini okuma

Çok basitinden endustri 4 devrimi uygulaması. plc den aldığımız çalışma verilerini (modbus protokolü)  Raspbery pi 3 de kodladığım ufak yazılımla çalışma verilerini web üzerinden görebilmek güzel şey. Raspberry pi ve python.. kullan ve kullandır.

import MySQLdb

from time import sleep

from random import randint

from datetime import timedelta

import serial

import sys

from datetime import datetime

from subprocess import call

import time

#from easygui import msgbox

 

db = MySQLdb.connect("test","test","test","test" )

 

cursor = db.cursor()

instrument = minimalmodbus.Instrument('/dev/ttyUSB0', 10)

minimalmodbus.close_port_after_each_call=True

instrument.serial.baudrate = 9600

instrument.serial.bytesize = 8

instrument.serial.parity   = serial.PARITY_EVEN

instrument.serial.stopbits = 1

instrument.serial.timeout  = 0.9

instrument.mode = minimalmodbus.MODE_RTU   # rtu or ascii mode

a = 0

kayit_edildi= 1

 

 

#instrument.write_bit(0000,1,5)

#sleep(5)

#instrument.write_bit(0000,0,5)

#netin kontakt resetliyoluz ama timer 1 reset giririsi

# turkiye utc+3 e gectigi icin saat 16 da alinacak veriyi 15 olarak aldiriyorum ki 16 olarak eklesin

print "bismillahirrahmanirrahim"

try:

while True:

sleep(1)

if (kayit_edildi > 24):

kayit_edildi+=1;

if (kayit_edildi >= 48):

kayit_edildi=0;

n=datetime.now()

if (n.hour==23) and (n.minute==03):

instrument.write_bit(0000,1,5)

sleep(7)

instrument.write_bit(0000,0,5)

if (n.hour==7) and (n.minute==03): 

instrument.write_bit(0000,1,5)

sleep(7)

instrument.write_bit(0000,0,5)

if (n.hour==15) and (n.minute==03):

instrument.write_bit(0000,1,5)

sleep(7)

instrument.write_bit(0000,0,5)

for b in range(1, 24):

deger=instrument.read_register(000+a,0,4)

#deger=instrument.read_register(0000)

durum=str(instrument.read_bit(000+a))

#print durum

saat = 1440 - deger

#print saat

#print deger

sql = "update uretim_makine set durum='%s',saat='%s' where id='%d'"  % (durum,str(timedelta(hours=0,minutes=saat)),a+1)

cursor.execute(sql)

db.commit()

if (n.hour==23) and (n.minute==01) and (kayit_edildi<25>

sql = "insert into uretim_makine_saatler  (makine_no,saat) values ('%s','%s')"  % (str(a+1),str(timedelta(minutes=saat)))

cursor.execute(sql)

db.commit()

kayit_edildi+=1;

if (n.hour==7) and (n.minute==01) and (kayit_edildi<25>

sql = "insert into uretim_makine_saatler  (makine_no,saat) values ('%d','%s')"  % (a+1,str(timedelta(hours=0,minutes=saat)))

cursor.execute(sql)

db.commit()

kayit_edildi += 1;

if (n.hour==15) and (n.minute==01) and (kayit_edildi<25>

sql = "insert into uretim_makine_saatler  (makine_no,saat) values ('%d','%s')"  % (a+1,str(timedelta(hours=0,minutes=saat)))

cursor.execute(sql)

db.commit()

kayit_edildi += 1;

a += 1

if a == 24:

a = 0        

except Exception as e:

print e

db.rollback()

time.sleep(500)

call(['python', 'otomasyon.py'])

try:

db.close()

except Exception as e:

time.sleep(500)

call(['python', 'otomasyon.py'])