环球电气之家-午夜精彩视频-中国专业电气电子产品行业服务网站!

產品分類

當前位置: 首頁 > 工業電氣產品 > 端子與連接器 > 線路板連接器 > FFC連接器

類型分類:
科普知識
數據分類:
FFC連接器

使用Raspberry Pi 3實現工業控制

發布日期:2022-04-17 點擊率:67

有些小企業的工業作業需要同時滿足惡劣工作環境、高 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 功能,但開發人員可以選擇多種valuation-boards-expansion-boards-daughter-cards/797?s=N4IgjCBcpgHAzFUBjKAzAhgGwM4FMAaEAeygG1wQj4aAGWgJipBoE4AWAdieoFZX47AGzN2tMGCEjqsBjWktYrBmJABdIgAcALlBABlbQCcAlgDsA5iAC%2BRALRNoIVJGMBXQiXIhW62yDsIJxdMXE9SSAowTk5YP39HCgAJAEEAFT8gA">可用的 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 盾板,開發人員能夠分別獲得大量的可用 valuation-boards-expansion-boards-daughter-cards/797?s=N4IgjCBcpgHAzFUBjKAzAhgGwM4FMAaEAeygG0R4qAGagJhCPgFYBOeAFgDZHLZW6Har3itqo2CNbMudBkSFgwXHgF0iABwAuUEAGUtAJwCWAOwDmIAL5EwAdg4NoIVJEy5CJcpTDcOHEV8uNkCONgD1EG1dAxMLayIAWicUKCMAV09SSApWEFUbEESIZ1d3fCJsijBqZmECwqcKDEMAE3SzUgKgA">Arduino 盾板、valuation-boards-expansion-boards-daughter-cards/797?s=N4IgjCBcpg7ALAJiqAxlAZgQwDYGcBTAGhAHsoBtEAZgFY5ZaQBdEgBwBcoQBlDgJwCWAOwDmIAL4kwATgAcMlCHSRs%2BYmUogADC3ZdIvASPFSQAWnhKVawiXKQqcsHJAl68ObDcgPc1%2B5g8DK6JPC01GCh4Noy8NQsEmbIjiCi-KQAbgSJQA">Grove 器件和 valuation-boards-expansion-boards-daughter-cards/797?s=N4IgjCBcpmAMVQGMoDMCGAbAzgUwDQgD2UA2iACwCcATABx0DMIh1YVYAbCyIwOwBWThQE9%2BQit0LjhfMYOF0eFRiM5TeCgQlZ1OjGqOlaK8oQKOU6VOnFPHzGmQOYPOApawpqEAXUIADgAuUCAAykEATgCWAHYA5iAAvoQAtDSIICiQUQCuBMRkIFQgvkkpIBmQ5ACy0QDWkUQAQgCqYaVJQA">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 操作系統中的響應延遲變化可能會影響精度。盡管標準系統可能以微秒級分辨率提供具有足夠確定性的響應,但開發人員可能需要借助使用 mentation/howto/applications/preemptrt_setup" target="_blank">Linux PREEMPT_RT 補丁的方法來滿足更嚴格、更具確定性的分辨率要求。

總結

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

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

下一篇: PLC、DCS、FCS三大控

上一篇: PRBS和白噪聲生成

推薦產品

更多
主站蜘蛛池模板: 穿线管|波纹穿线管|包塑金属软管|蛇皮管?闵彬专注弱电工程? | 断桥铝破碎机_铝合金破碎机_废铁金属破碎机-河南鑫世昌机械制造有限公司 | HV全空气系统_杭州暖通公司—杭州斯培尔冷暖设备有限公司 | 自动配料系统_称重配料控制系统厂家| ph计,实验室ph计,台式ph计,实验室酸度计,台式酸度计 | 礼仪庆典公司,礼仪策划公司,庆典公司,演出公司,演艺公司,年会酒会,生日寿宴,动工仪式,开工仪式,奠基典礼,商务会议,竣工落成,乔迁揭牌,签约启动-东莞市开门红文化传媒有限公司 | 爱德华真空泵油/罗茨泵维修,爱发科-比其尔产品供应东莞/杭州/上海等全国各地 | 选矿设备,选矿生产线,选矿工艺,选矿技术-昆明昆重矿山机械 | 2025世界机器人大会_IC China_半导体展_集成电路博览会_智能制造展览网 | 奶茶加盟,奶茶加盟店连锁品牌-甜啦啦官网 | 制丸机,小型中药制丸机,全自动制丸机价格-甘肃恒跃制药设备有限公司 | 江苏大隆凯科技有限公司 | 武汉刮刮奖_刮刮卡印刷厂_为企业提供门票印刷_武汉合格证印刷_现金劵代金券印刷制作 - 武汉泽雅印刷有限公司 | 天助网 - 中小企业全网推广平台_生态整合营销知名服务商_天助网采购优选 | 飞飞影视_热门电影在线观看_影视大全 | 武汉画册印刷厂家-企业画册印刷-画册设计印刷制作-宣传画册印刷公司 - 武汉泽雅印刷厂 | 北京百度网站优化|北京网站建设公司-百谷网络科技 | 薄壁轴承-等截面薄壁轴承生产厂家-洛阳薄壁精密轴承有限公司 | 冰晶石|碱性嫩黄闪蒸干燥机-有机垃圾烘干设备-草酸钙盘式干燥机-常州市宝康干燥 | 浴室柜-浴室镜厂家-YINAISI · 意大利设计师品牌 | 咿耐斯 |-浙江台州市丰源卫浴有限公司 | Dataforth隔离信号调理模块-信号放大模块-加速度振动传感器-北京康泰电子有限公司 | 儋州在线-儋州招聘找工作、找房子、找对象,儋州综合生活信息门户! | 伶俐嫂培训学校_月嫂培训班在哪里报名学费是多少_月嫂免费政府培训中心推荐 | 路面机械厂家| 尚为传动-专业高精密蜗轮蜗杆,双导程蜗轮蜗杆,蜗轮蜗杆减速机,蜗杆减速机生产厂家 | 周口市风机厂,周鼓风机,河南省周口市风机厂 | 网架支座@球铰支座@钢结构支座@成品支座厂家@万向滑动支座_桥兴工程橡胶有限公司 | 诺冠气动元件,诺冠电磁阀,海隆防爆阀,norgren气缸-山东锦隆自动化科技有限公司 | 企典软件一站式企业管理平台,可私有、本地化部署!在线CRM客户关系管理系统|移动办公OA管理系统|HR人事管理系统|人力 | 骨龄仪_骨龄检测仪_儿童骨龄测试仪_品牌生产厂家【品源医疗】 | 无刷电机_直流无刷电机_行星减速机-佛山市藤尺机电设备有限公司 无菌检查集菌仪,微生物限度仪器-苏州长留仪器百科 | 冷轧机|两肋冷轧机|扁钢冷轧机|倒立式拉丝机|钢筋拔丝机|收线机-巩义市华瑞重工机械制造有限公司 | 单电机制砂机,BHS制砂机,制沙机设备,制砂机价格-正升制砂机厂家 单级/双级旋片式真空泵厂家,2xz旋片真空泵-浙江台州求精真空泵有限公司 | 杭州网络公司_百度SEO优化-外贸网络推广_抖音小程序开发-杭州乐软科技有限公司 | 高低温老化试验机-步入式/低温恒温恒湿试验机-百科 | 纸张环压仪-纸张平滑度仪-杭州纸邦自动化技术有限公司 | HV全空气系统_杭州暖通公司—杭州斯培尔冷暖设备有限公司 | 无线讲解器-导游讲解器-自助讲解器-分区讲解系统 品牌生产厂家[鹰米讲解-合肥市徽马信息科技有限公司] | 振动台-振动试验台-振动冲击台-广东剑乔试验设备有限公司 | PSI渗透压仪,TPS酸度计,美国CHAI PCR仪,渗透压仪厂家_价格,微生物快速检测仪-华泰和合(北京)商贸有限公司 | 天津试验仪器-电液伺服万能材料试验机,恒温恒湿标准养护箱,水泥恒应力压力试验机-天津鑫高伟业科技有限公司 |