Showing posts with label Pi. Show all posts
Showing posts with label Pi. Show all posts

Sunday, February 19, 2017

Raspberry Pi - pymodbus Youtube Series

I've been out of the game lately on my blog and wanted to give an update of my latest work on youtube.. I've been able to post a few video tutorials on pymodbus and wanted to show a preview of my youtube tutorial roadmap.

Pymodbus ModbusTCP - Reading Holding Registers
Pymodbus ModbusTCP - Reading & Writing Holding Registers
Pymodbus Raspberry Pi as Modbus Serial<->TCP Bridge
Pymodbus - RPi as ModbusTCP Slave Temperature Sensor
SCADA Datalogger - snap7 and Pymodbus
Pymodbus ModbusTCP - Reading And Writing Raspberry PI GPIO using ModbusTCP
Raspberry Pi - Tutorials - Snap7 Python - Raspberry Pi as S7 Device
Raspberry Pi - Tutorials - Snap7 Python - Reading & Writing Rpi GPIO using snap7 and Kepsever
Raspberry Pi - Tutorials - SCADA SQL Logger - snap7 and Pymodbus MSSQL

Dates are not yet decided.  I hope to get two of these a month. Let me know if you wish to see another one
So far these 4 are done:

Raspberry Pi - Tutorials - Pymodbus ModbusTCP - Setup & Quick Example (Writing To Twido M Memory)

 

Monday, February 29, 2016

Raspberry Pi - Python Snap7 - Mapping and Reading Datablocks


import snap7.client
from snap7.snap7types import *
from snap7.util import *


class DBObject(object):
    pass


offsets = { "Bool":2,"Int": 2,"Real":4,"DInt":6,"String":256}

db=\
"""
Temperature Real 0.0
Cold Bool 4.0
RPis_to_Buy Int 6.0
Db_test_String String 8.0
"""

def DBRead(plc,db_num,length,dbitems):
    data = plc.read_area(areas['DB'],db_num,0,length)
    obj = DBObject()
    for item in dbitems:
        value = None
        offset = int(item['bytebit'].split('.')[0])

        if item['datatype']=='Real':
            value = get_real(data,offset)

        if item['datatype']=='Bool':
            bit =int(item['bytebit'].split('.')[1])
            value = get_bool(data,offset,bit)

        if item['datatype']=='Int':
            value = get_int(data, offset)

        if item['datatype']=='String':
            value = get_string(data, offset)

        obj.__setattr__(item['name'], value)

    return obj

def get_db_size(array,bytekey,datatypekey):
    seq,length = [x[bytekey] for x in array],[x[datatypekey] for x in array]
    idx = seq.index(max(seq))
    lastByte = int(max(seq).split('.')[0])+(offsets[length[idx]])
    return lastByte


if __name__ == "__main__":
    plc = snap7.client.Client()
    plc.connect('10.10.55.109',0,0)
    itemlist = filter(lambda a: a!='',db.split('\n'))
    deliminator='\t'
    items = [
        {
            "name":x.split(deliminator)[0],
            "datatype":x.split(deliminator)[1],
            "bytebit":x.split(deliminator)[2]
         } for x in itemlist
    ]
    #get length of datablock
    length = get_db_size(items,'bytebit','datatype')
    meh = DBRead(plc,10,length,items)
    print """
    Cold:\t\t\t{}
    Tempeature:\t\t{}
    RPis_to_Buy:\t{}
    Db_test_String:\t{}
    """.format(meh.Cold,meh.Temperature,meh.RPis_to_Buy,meh.Db_test_String)
    plc.disconnect();

Tuesday, February 2, 2016

25+ Raspberry Compatible 1-Wire Host Boards/Hats

(sortable)

Image Name / Link Channels (Buses) Extras Price Price per channel
1-Wire Driver
DS2482-800
8 ch. --- £21.05 £2.63 / ch
1-Wire Interface 
Module
1 ch. --- £5.93 £5.93 / ch
R-Pi i2c 1-Wire OWFS Expansion Module 1 ch. --- £17.99 £17.99 / ch
I2C counter /
1-wire board
8 ch. 6x 16 bit Counter inputs £69.99 £8.75 / ch
Com Pi 1 ch. RS232 Port £12.99 £12.99 / ch
1 Wire Pi Plus 1 ch. --- £12 £12 / ch
RP1 1-Wire GPIO Host Adapter 1 ch. --- £7.95 £7.95 / ch
RPI2 1-Wire Host Adapter 1 ch. --- £14 £13.95 / ch
RPI3 v1 1-Wire Host Adapter 8 ch. RTC £33 £4.12 / ch
RPI3 v2 1-Wire Host Adapter 8 ch. RTC £33 £4.12 / ch
AbioWire+ 17 ch. --- £42 £5.25 / ch
1-Wire Mini Host 8 ch. --- £15.26 £1.90 / ch
1-Wire Automation System 8 ch. expansion slot £114 £14.25 / ch
Raspberry Pi -9 Channel 1-Wire Board 9 ch. RTC £33 £3.66 / ch
IoT-1Wire-1 module Board 8 ch. --- £34 £4.25 / ch
IoT-1Wire-1 module Board 1 ch. (5 ports) --- £24 £24 / ch
4 USB Hub & I2C AD/DA - 1-Wire   Board 1 ch. RTC, 10bit ADC, 8bit DAC, 4 USB Hub £52 £52 / ch
7 USB Hub & I2C AD/DA - 1-Wire   Board 1 ch. 10bit ADC / 8bit DAC, 7 USB Hub £58 £58 / ch
Step Motor & I2C 1-Wire Board 1 ch. 8 ch output / step motor output  £21 £21 / ch
One-Wire 17 Channels 17 ch. --- £46.99 £2.76 / ch
USB to One Wire converter 1 ch. --- $24.60 $24.60 / ch
S4: USB / 1-Wire Interface Card 1 ch. --- €39 €39 / ch
USB to 1-Wire RJ11 1 ch. --- £26 £26 / ch
I2C 1 Wire Click 8 ch. --- £19.45 £2.43 / ch
UART to 1 Wire Adapter (Retired)  1 ch. --- --- ---
UniPi Expansion Board 1 ch. Relays, Inputs, Outputs, Analog In/Out 0-10v $134 $134 / ch
PIGATOR Onewire 1 ch.  RTC, uplink header for expansion £60 £60 / ch






Tuesday, January 5, 2016

Google Trends - Which Country Loves the Raspberry Pi the Most?

I often visit google.com/trends and decided to do a query on "Raspberry Pi" and here were the results:

Web Search

Image Search


Video Search



News Search


Google Shopping Search

Monday, January 4, 2016

10+ Things the Raspberry Pi Can Do As a Cheaper Replacement in Industrial Automation






The Raspberry Pi has many Industrial Control Applications and many ways to interface with current Industrial Protocols. 

I am starting a  Raspberry Pi Industrialized Google+ Community to gather people smarter than me to answer questions,give tutorials on Raspberry Pi and PLC interfaces, show present and upcoming raspberry pi hardware, and to show off their cool industrial projects using the Raspberry Pi. 

Since I'm a python fan here's a list of Ethernet/Serial Based Protocols I've found:
  1. ModbusTCP/RTU using pymodbus 
  2. *Profinet (a GitHub link
  3. S7 Protocol using snap7 python (tutorial here)
    • (Siemen's S7-300,S7-1500 / S7-200,S7-1200)
  4. Koyo ECOM Protocol, (see my github, and here for example usage)
    • DL05, DL06 PLCs
  5. *EtherNet/IP (Link)
* I've not tested these libraries yet.

Here are the ways the Raspberry Pi can replace or enhance your Industrial Automation Process:

  • Bridging Protocols.  Normally a protocol converter/bridge can cost $100+

    • Modbus RTU <--> Modbus TCP,Siemens S7, Koyo ECOM, EtherNet/IP
    • Modbus TCP <--> Siemens S7, Koyo ECOM, EtherNet/IP
    • Any Other Serial ASCII Device <--> Modbus TCP, Siemens S7, Koyo ECOM, EtherNet/IP
  • Cheap HMI Screen Replacement.  HMI can cost $1000s and since the Raspberry Pi can integrate with several protocols it could be a decent replacement to save some $$$, £££, or € depending on where you live. Of course it may take some knowledge on either HTM5 with websockets or using QT as your front ends. 

  • Remote Relay I/O.


  • Remote Analog I/O


  • Custom Raspberry Pi.  Lastly I am going to mention the customizable Raspberry Pi.  Yes, Customizable!  Element14 can customize the board to fit your process a little better.  Adding Wifi, more GPIO, onboard Flash memory, and others.

Monday, December 28, 2015

20+ Things to plug into your ADC input


A list of analog sensor for your projects by category.


Power Monitoring

  1. AC/DC Current $4
  2. AC Single Phase Voltage Sensor $6 





Outdoor Environmental

Weather

  1. Wind Speed $70-$100
  2. Temperature
  3. Humidity
  4. Wind Direction $70-$100
  5. UV Light $5.99
  6. Light $3.95
  7. Lux Sensor $10

Garden

  1. Liquid Level Sensor 1Meter @ $80
  2. Soil Temperature $31
  3. Capacitive Soil Moisture Probe $31
  4. Water Pressure $20

Indoor Environmental

Air Quality

  1. Gas Sensor - Hydrogen $8
  2. Gas Sensor - Carbon Monoxide $12
  3. Gas Sensor - Alcohol $7.50
  4. Gas Sensor - CO2 $42
  5. Gas Sensor - LGP $8
  6. Flame Sensor $5



Presence 

  1. Sound Sensor $4.46
  2. Vibration Sensor $5.99
  3. IR Distance Sensors $11.25

Converters