中文字幕第二一区_久久久久在线视频_精品国产自在现线看久久_亚洲精品一区二区三区电影网

產品分類

當前位置: 首頁 > 工業電子產品 > 半導體產品 > 微控制器MCU

類型分類:
科普知識
數據分類:
微控制器MCU

使用 Raspberry Pi 3 構建低成本工業控制器

發布日期:2022-04-22 點擊率:78

有些小企業的工業作業需要同時滿足惡劣工作環境、高 I/O 能力和復雜功能要求,可編程邏輯控制器 (PLC) 正好可以勝任。盡管存在簡化版 PLC,但設計師現在也可以選擇多種低成本的開源硬件和軟件解決方案,以實現有效的工業監視和控制。

Raspberry Pi Foundation 的微小型 Raspberry Pi 3 及其相關的擴展板就是此類解決方案的一個實例。本文將介紹 Raspberry Pi 3 的主要特征,然后討論如何使用它來監視和控制應用。

Raspberry Pi 為何適用于小企業工業控制

對于很多較小作業規模而言,Raspberry Pi 3 平臺提供了一種性能卓越的低成本解決方案。Raspberry Pi 3 開發板結合了基于 Broadcom ARM? Cortex?-A53 的處理器、1 GB RAM、數字接口、Wi-Fi 和藍牙連接,完全能夠勝任專門的工業自動化任務。處理器本身就是一個高性能的片上系統 (SoC) 器件,集成了具有 512 KB L2 緩沖的四核 ARM Cortex-A53 CPU 以及 54 個排列成三組的 GPIO。

每個 GPIO 分別支持最少兩種、最多六種替代性功能,包括脈寬調制器、時鐘和串行接口。開發人員可以將任何未分配的 GPIO 用作可提供最多 16 毫安 (mA) 電流(每組 GPIO 總電流最多為 50 mA)的中斷線、輸入或輸出。

與 Raspberry Pi 系列中的其他產品一樣,Raspberry Pi 3 充分簡化了嵌入式開發,初學者亦能輕松上手,同時仍不失足夠強大,可以滿足經驗豐富的開發人員更復雜、更強大的處理要求。

開始時,開發人員只需將開發板的視頻端口連接到顯示器并將其 USB 端口連接到鍵盤和鼠標。對于軟件設計,開發人員則有著廣泛的生態系統基礎支撐,受到 Raspberry Pi Foundation 的基于 Linux 的免費 Raspbian 操作系統支持,且該操作系統可通過該開發板的微型 SD 接口從存儲卡加載。

增加工業處理能力

除了具有高性能和易開發的優勢以外,Raspberry Pi 用于擴展其功能的簡化方法也非常適合工業自動化應用的各種要求。需要增加硬件的能力時,開發人員只需將一塊被稱為 HAT(頂部安裝硬件)的擴展板插到 Raspberry Pi 3 開發板上即可。與更復雜的工業系統一樣,HAT 提供了用于識別 HAT 以及根據需要自動配置 GPIO 和驅動程序的標準方法。因此,開發人員只需插入 Pimoroni PIM213 Automation HAT(圖 1),即可針對工業應用立即將自己的 Raspberry Pi 系統升級。

Pimoroni Automation HAT 擴展板圖片

圖 1:開發人員可以通過連接專用的擴展板(例如 Pimoroni Automation HAT)來升級用于實現工業自動化的基礎 Raspberry Pi 3 開發板。(圖片來源:Pimoroni)

專為監測和控制自動化系統而設計的 Pimoroni Automation HAT 組合了多個 I/O 通道,包括模擬和數字輸入、供電型輸出以及繼電器控制。除了支持 24 伏 (V) 電壓以外,這些 I/O 通道還提供大容量的輸入和輸出緩存。例如,繼電器輸出支持最大 2 安 (A) 的電流,足以驅動低功耗的 24 伏零件,如 Crouzet 81 546 001 電磁閥

對于使用 Automation Hat 進行的軟件開發,Pimoroni 提供了一個相關的 Python 模塊,只需要編寫幾行代碼,就可使用 HAT 的硬件功能。當導入到 Python 程序時,Pimoroni 模塊會創建軟件對象,以控制模擬輸入、數字輸入、數字輸出、繼電器輸出和 LED 燈,所有這些功能都包含相應的低級別讀/寫功能(列表 1)。

class AnalogInput(object):

    type = 'Analog Input'

 

    def __init__(self, channel, max_voltage, led):

        self._en_auto_lights = True

        self.channel = channel

        self.value = 0

        self.max_voltage = float(max_voltage)

        self.light = SNLight(led)

 

    def auto_light(self, value):

        self._en_auto_lights = value

        return True

 

    def read(self):

        """Return the read voltage of the analog input"""

        return round(self.value * self.max_voltage, 2)

 

    def _update(self):

        self.value = ads1015.read(self.channel)

 

    def _auto_lights(self):

        if self._en_auto_lights:

            adc = self.value

            self.light.write(max(0.0,min(1.0,adc)))

列表 1:Pimoroni 用于 Automation HAT 的 Python 模塊可通過處理詳細事務處理,如從板載模數轉換器 (ADC) 讀取讀數,而簡化開發工作。(圖片來源:Pimoroni)

每個對象都可以識別相應的通道和其他相關數據。例如,當創建時,模擬輸入對象包含關聯引腳的最大電壓(請參見列表 1 中的 init 函數)。為了執行模數轉換器 (ADC) 轉換,ADC 對象會調用底層的 ADC 模塊(列表 1 中的 ads1015.read)。隨后,ADC 模塊會執行設置 ADC 和執行轉換所需的低級別 I2C 事務處理,然后返回有用格式的值(列表 2)。

class ads1015:

    def __init__(self, i2c_bus=None, addr=ADDR):

        self._over_voltage = [False] * 4

 

        self.i2c_bus = i2c_bus

        if not hasattr(i2c_bus, "write_i2c_block_data") or not hasattr(i2c_bus, "read_i2c_block_data"):

            raise TypeError("Object given for i2c_bus must implement write_i2c_block_data and read_i2c_block_data")

 

        self.addr = addr

 

    def read(self, channel=0, programmable_gain=PGA_4_096V, samples_per_second=1600):

        # sane defaults

        config = 0x0003 | 0x0100

 

        config |= SAMPLES_PER_SECOND_MAP[samples_per_second]

        config |= CHANNEL_MAP[channel]

        config |= PROGRAMMABLE_GAIN_MAP[programmable_gain]

 

        # set "single shot" mode

        config |= 0x8000

 

        # write single conversion flag

        self.i2c_bus.write_i2c_block_data(self.addr, REG_CFG, [(config >> 8) & 0xFF, config & 0xFF])

 

        delay = (1.0 / samples_per_second) + 0.0001

        time.sleep(delay)

 

        data = self.i2c_bus.read_i2c_block_data(self.addr, REG_CONV)

 

        value = ((data[0] << 4) | (data[1] >> 4))

 

        if value & 0x800:

            value -= 1 << 12

 

        value /= 2047.0 # Divide down to percentage of FS

        value *= float(programmable_gain)

        value /= 3300.0 # Divide by VCC

 

        return value

...

列表 2:用于 ADC 轉換的更高級別函數調用會調用一個讀取例程,此例程會執行 I2C 總線寫入以開始進行轉換,并休眠足夠長的時間以便轉換完成,然后執行 I2C 總線讀取以收集結果。(圖片來源:Pimoroni)

但對于開發人員而言,當讀取模擬值時,只需對模擬對象的指定模擬輸入 (.one) 執行高級別讀取功能 (.read()):

          value = automationhat.analog.one.read()

資源庫允許使用這種簡單模型實現其他的 HAT 功能,因此打開或關閉繼電器也是一個簡單的調用:

          automationhat.relay.write(1) # 1 = ON, 0 = OFF

靈活的選擇

Pimoroni Automation HAT 提供了小型工業自動化應用所需的基本 IO 功能,但開發人員可以選擇多種可用的 HAT,以實現工業自動化等專業應用所需的各種功能。例如,Adafruit 3013 RTC HAT 提供實時時鐘 (RTC) 功能,這并非開發板本身的標準功能。Raspberry Pi 設計師希望開發人員始終將開發板連接到因特網,以便能夠使用標準的網絡時間協議 (NTP) 保持時鐘時間。因此,對于因設計本意或意外與因特網斷開連接的設計,需要使用外部 RTC,例如 Adafruit RTC HAT。

當增加 RTC 等功能時,開發人員在工業自動化設計中無需只使用一個 HAT。開發人員可以在 Raspberry Pi 開發板上疊接多個 HAT。盡管大多數 HAT 經過專門設計可進行疊接,但開發人員可能需要增加疊接針座(例如 Adafruit 的 2223)以完成裝配,或者增加 M2.5 支座以防止 HAT 相互接觸或與基板接觸。

開發人員可以使用疊接針座和支座輕松疊接 HAT,例如 Adafruit 2348 電機 HAT,以增加很多工業自動化應用所需的電機驅動器。每個 2348 電機 HAT 都可以驅動兩個步進電機或四個直流電機。實際上,開發人員可以疊接多達 32 塊這樣的擴展板,以支持最多 64 個步進電機或 128 個直流電機(圖 2)。

多個 Adafruit 2348 電機 HAT 圖片

圖 2:開發人員可以疊接多個 Adafruit 2348 電機 HAT,以便在設計中支持最多 64 個步進電機或 128 個直流電機。(圖片來源:Adafruit)

與 Pimoroni Automation HAT 一樣,可以使用幾個簡單的 Python 命令對 Adafruit 2348 電機 HAT 進行編程。Adafruit 針對電機 HAT 的采樣軟件甚至具有基本設計模式,能夠使用 Python 線程模塊并行運行多個電機(列表 3)。

from Adafruit_MotorHAT import Adafruit_MotorHAT, Adafruit_DCMotor, Adafruit_StepperMotor

import threading

 

# create a default object, no changes to I2C address or frequency

mh = Adafruit_MotorHAT()

 

# create empty threads (these will hold the stepper 1 and 2 threads)

st1 = threading.Thread()

st2 = threading.Thread()

 

...

 

myStepper1 = mh.getStepper(200, 1)      # 200 steps/rev, motor port #1

myStepper2 = mh.getStepper(200, 2)      # 200 steps/rev, motor port #1

myStepper1.setSpeed(60)          # 30 RPM

myStepper2.setSpeed(60)          # 30 RPM

 

stepstyles = [Adafruit_MotorHAT.SINGLE, Adafruit_MotorHAT.DOUBLE, Adafruit_MotorHAT.INTERLEAVE, Adafruit_MotorHAT.MICROSTEP]

 

def stepper_worker(stepper, numsteps, direction, style):

    #print("Steppin!")

    stepper.step(numsteps, direction, style)

    #print("Done")

 

while (True):

    if not st1.isAlive():

        randomdir = random.randint(0, 1)

        if (randomdir == 0):

            dir = Adafruit_MotorHAT.FORWARD

        else:

            dir = Adafruit_MotorHAT.BACKWARD

        randomsteps = random.randint(10,50)

        st1 = threading.Thread(target=stepper_worker, args=(myStepper1, randomsteps, dir, stepstyles[random.randint(0,3)],))

        st1.start()

 

    if not st2.isAlive():

        randomdir = random.randint(0, 1)

        if (randomdir == 0):

            dir = Adafruit_MotorHAT.FORWARD

        else:

            dir = Adafruit_MotorHAT.BACKWARD

 

        randomsteps = random.randint(10,50)

        print("%d steps" % randomsteps)

 

        st2 = threading.Thread(target=stepper_worker, args=(myStepper2, randomsteps, dir, stepstyles[random.randint(0,3)],))

        st2.start()

列表 3:Adafruit 的電機 HAT Python 模塊包含采樣軟件,例如此代碼片段就展示了如何使用簡單控制命令和 Python 線程模塊來控制一對步進電機。(圖片來源:Adafruit)

對于可用 HAT 中未提供的功能,開發人員不需要限制自己只使用 HAT 格式。利用 DFRobot DFR0327 Arduino 盾板、Seeed Technology GrovePi+ 入門套件和 MikroElektronika MIKROE-2756 click 盾板,開發人員能夠分別獲得大量的可用 Arduino 盾板、Grove 器件和 MikroBUS click 板。

使用這些開發板時,開發人員可以通過連接 MikroElektronika MIKROE-988 CAN click 板,快速添加標準 CAN 接口支持,或通過連接 MikroElektronika MIKROE-1296 4 至 20 mA 電流回路 Click 板,添加 4 至 20 mA 的電流回路。

完成小企業設計

即使為基于 Raspberry Pi 的設計快速配置了所需的擴展功能后,開發人員通常也需要花費時間構建相應的用戶界面。而使用 Raspberry Pi 3 之后,開發人員就可以將設計連接到 Adafruit 的 IO 云服務,從而為用戶提供自動化流程的圖形化反饋和控制。云服務允許開發人員創建簡單的數據和流程信息饋送(列表 4),并構建儀表板以允許用戶從臺式機、智能手機或其他移動設備上的任何 Web 瀏覽器監視和控制項目(圖 3)。

# import library and create instance of REST client.

from Adafruit_IO import Client

aio = Client('YOUR ADAFRUIT IO KEY')

 

# Send the value 100 to a feed called 'Foo'.

aio.send('Foo', 100)

列表 4:開發人員可以輕松地將數據從工業自動化應用傳輸到 Adafruit IO 云服務,進行顯示和控制。(圖片來源:Adafruit)

Adafruit IO 儀表板圖片

圖 3:開發人員可以顯示來自基于 Raspberry Pi 3 的工業自動化應用的信息,并使用 Adafruit IO 儀表板提供控制。(圖片來源:Adafruit)

簡單的軟件開發、豐富的擴展板和高性能的 Raspberry Pi 組合提供了一個適合小型工業自動化應用的解決方案。但在某些這樣的應用中,與使用 RTC 的配置(例如 Adafruit 3013 RTC HAT)相比,開發人員可能需要更嚴格的定時控制。

3013 RTC HAT 基于 Maxim Integrated DS3231 RTC IC,提供了兩個可編程報警功能和一個方波輸出信號。開發人員可以使用報警功能在指定日期、時、分、秒生成中斷,或者使用方波在 1 赫茲 (Hz) 頻率生成中斷。對于需要以快于 1 Hz 的定期中斷的應用,開發人員需要使用處理器的系統定時器開發定制軟件功能,或者構建能夠以所需的速率生成中斷的定制硬件計數器

在需要更快的定時分辨率的應用中,同樣重要的要求將變成確定性響應延遲。在高速率下,標準 Raspbian 操作系統中的響應延遲變化可能會影響精度。盡管標準系統可能以微秒級分辨率提供具有足夠確定性的響應,但開發人員可能需要借助使用 Linux PREEMPT_RT 補丁的方法來滿足更嚴格、更具確定性的分辨率要求。

總結

傳統 PLC 提供的能力通常超出小規模制造業、加工業和原型開發車間的大多數較小工業作業的要求和預算。對于這些應用,操作員面臨的要求通常較低,Raspberry Pi 3 完全可以勝任。

開發人員可以使用 Raspberry Pi 3 和相應的擴展板,快速實施能夠滿足廣泛小企業作業要求的專用工業自動化系統

下一篇: 斷路器、隔離開關、接

上一篇: 索爾維全系列Solef?PV

推薦產品

更多
中文字幕第二一区_久久久久在线视频_精品国产自在现线看久久_亚洲精品一区二区三区电影网

      9000px;">

          国产精品久久久久久久久搜平片| 蜜臀av一级做a爰片久久| 欧美日韩精品一区二区天天拍小说| 91啪亚洲精品| 欧美天天综合网| 日韩欧美综合在线| 久久久综合视频| 国产精品国产三级国产普通话三级| 一级中文字幕一区二区| 日韩精品91亚洲二区在线观看| 亚洲男人的天堂网| 免费高清视频精品| 国产91丝袜在线播放九色| 裸体在线国模精品偷拍| 欧美在线观看视频在线| 精品国产一二三| 色狠狠桃花综合| 日韩欧美国产电影| 国产精品伦理在线| 国产精品一区二区三区乱码| 在线影视一区二区三区| 精品剧情v国产在线观看在线| 亚洲激情av在线| 国产一区日韩二区欧美三区| 国产一区美女在线| 日韩欧美国产不卡| 亚洲精品国产高清久久伦理二区| 成人一区二区在线观看| 欧美电影影音先锋| 国产精品高潮呻吟| 北岛玲一区二区三区四区| 欧美一区二区三级| 日本不卡视频在线观看| 91麻豆免费观看| 国产色爱av资源综合区| 久久精品国产一区二区三区免费看| 国产成人av自拍| 在线播放/欧美激情| 亚洲男人天堂av| 一道本成人在线| 中文字幕国产一区| 精品一区二区免费视频| 6080国产精品一区二区| 亚洲男人的天堂在线aⅴ视频| 亚洲第一二三四区| 欧美色爱综合网| 亚洲柠檬福利资源导航| 色欧美日韩亚洲| 中文字幕佐山爱一区二区免费| 国产麻豆91精品| 国产精品美女久久久久av爽李琼 | 美女视频网站久久| 在线亚洲高清视频| 亚洲免费av高清| 色88888久久久久久影院野外| 在线电影院国产精品| 亚洲福利国产精品| 欧美日韩一区二区三区免费看| 天堂va蜜桃一区二区三区漫画版| 欧美视频在线观看一区| 亚洲一区二区在线观看视频| 91精品国产综合久久精品app | 日韩欧美国产不卡| 《视频一区视频二区| 欧美吞精做爰啪啪高潮| 亚洲电影第三页| 欧美大片在线观看| 激情五月激情综合网| 久久夜色精品一区| 91毛片在线观看| 亚洲午夜在线电影| 99re视频精品| 视频在线观看一区二区三区| 日韩一区二区三区在线| 成人av影视在线观看| 一区二区三区国产豹纹内裤在线| 91福利国产成人精品照片| 久久99精品久久只有精品| 国产欧美一区二区三区在线老狼| 色就色 综合激情| 日韩精品成人一区二区三区| 久久新电视剧免费观看| 欧美在线视频全部完| 日本午夜精品一区二区三区电影 | 精品视频1区2区| 激情文学综合丁香| 国产精品美女久久久久aⅴ| 欧美日韩日日摸| 国产麻豆9l精品三级站| 亚洲欧洲性图库| 精品国免费一区二区三区| 国产成人午夜99999| 久久久精品国产免大香伊| 欧美日韩一区成人| 国产一区二区三区免费| 日韩一区精品字幕| 欧美激情一区二区三区不卡| 91精品国产91综合久久蜜臀| 懂色av一区二区夜夜嗨| 亚洲精选视频在线| 国产日产精品1区| 色婷婷久久久综合中文字幕| 综合精品久久久| 26uuu国产一区二区三区| 91免费视频网址| 国产精品一区一区| 首页综合国产亚洲丝袜| 国产精品美女久久久久久久久| 日韩你懂的在线播放| 国产69精品久久99不卡| 91精品免费在线观看| aaa欧美日韩| 毛片av一区二区| 青青青伊人色综合久久| 中文字幕不卡一区| 日韩欧美久久久| 日韩精品一区在线| 欧美丝袜丝交足nylons| 欧美丝袜丝交足nylons| www.色综合.com| 成人高清视频在线| 久久电影国产免费久久电影| 免费精品视频在线| 亚洲高清中文字幕| www激情久久| 欧美精品久久久久久久多人混战| av在线一区二区| 国产成人8x视频一区二区 | 日韩中文欧美在线| 亚洲三级理论片| 国产三级精品三级| 2020日本不卡一区二区视频| 99久久精品国产网站| 日韩电影在线一区| 国产精品乱码人人做人人爱 | 亚洲国产精品成人综合| 国产情人综合久久777777| 欧美成人精品1314www| 亚洲精品一区二区在线观看| 日韩欧美亚洲国产另类| 精品国产免费人成在线观看| 日韩欧美在线123| 日韩一级高清毛片| 欧美激情一区二区| 国产日韩欧美a| 一个色综合av| 一区二区三区四区不卡视频| 久久久不卡网国产精品二区| 国产精品你懂的在线欣赏| 国产精品久久久久影院亚瑟 | 成人午夜视频在线| 国产91对白在线观看九色| 色婷婷久久一区二区三区麻豆| av福利精品导航| 午夜久久久影院| 日本va欧美va精品| 国产专区欧美精品| 99久久伊人精品| 欧美视频三区在线播放| 欧美一级一级性生活免费录像| 在线观看91精品国产麻豆| 日韩视频免费直播| 国产精品久久久久久福利一牛影视| 国产精品久久毛片av大全日韩| 亚洲一区二区三区不卡国产欧美| 亚洲va天堂va国产va久| 男女视频一区二区| 91色九色蝌蚪| 欧美日韩一区二区在线视频| 久久久蜜臀国产一区二区| 国产精品不卡在线| 午夜影院在线观看欧美| 国产精品1024| 日本韩国精品在线| 久久精品一区四区| 亚洲图片欧美色图| 久久精品99国产国产精| 在线欧美日韩精品| 精品国产免费视频| 亚洲成a人v欧美综合天堂| 国产精品影音先锋| 精品综合免费视频观看| 欧美视频你懂的| 国产日韩精品视频一区| 蜜臀久久久99精品久久久久久| 国产成人aaa| 精品污污网站免费看| 久久中文娱乐网| 亚洲福利电影网| 成人免费毛片高清视频| 日韩一区和二区| 日韩亚洲欧美成人一区| 精品国产免费久久| 精品电影一区二区| 久久影院电视剧免费观看| 精品国产乱码久久久久久影片| 亚洲在线中文字幕| 成人av网址在线| 欧美激情一区三区| 美女性感视频久久|