999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Python的羅克韋爾語音報警系統設計與實現

2024-10-31 00:00:00江海濤
現代信息科技 2024年17期

摘 要:隨著現代工廠生產規模的不斷擴大,操作崗位監控的HMI畫面也越來越多。面對大量的操作終端,除正常生產操作外,操作人員對重點報警的及時了解與跟蹤處理顯得尤為重要。文章以實現羅克韋爾語音報警系統為出發點,基于Python開發環境,利用PySide2、Pylogix、win32com等第三方生態模塊,旨在設計一套能根據羅克韋爾PLC實時標簽值自動播放語音報警的智能系統。

關鍵詞:Python;PySide2;Pylogix;win32com;羅克韋爾;語音報警

中圖分類號:TP311 文獻標識碼:A 文章編號:2096-4706(2024)17-0169-05

0 引 言

在一個基于羅克韋爾的工業自動化控制系統中,傳統的語音報警實現方式是在HMI系統上進行開發,當PLC變量值滿足觸發條件時,通過VBA腳本自動播放特定的聲音文件,一條報警內容對應一個聲音文件。

在工程應用實踐后,作者發現這種方式存在以下弊端:

1)此方式基于HMI系統進行開發,為保證操作終端內容的一致性,相關終端均需同步實施。在后期使用中,如果要增、刪、改配置,需要到各HMI操作終端中修改組態畫面,工作量煩瑣。

2)播放的聲音文件需提前錄制,并存放于計算機中。一旦要更改語音播放內容,需重新錄制聲音文件并替換,不夠靈活。

3)系統長時間運行后,HMI通過VBA腳本播放聲音文件會造成操作畫面卡頓,不利于正常生產,關鍵時刻甚至存在安全隱患。

本文中,作者以解決上述弊端為出發點,利用主流編程語言Python及其第三方模塊,實現一款靈活、友好、智能的羅克韋爾語音報警系統。

1 系統設計與開發

主要過程如下:

1)系統啟動后,加載UI界面、讀取Excel配置文件并將配置信息顯示到UI界面。

2)檢查系統配置是否正常,如IP數量與槽號數量是否一致、IP地址是否有效等。如果系統配置不正常則退出系統運行。

3)從本地磁盤讀取歷史報警記錄文件并顯示到前端UI界面。

4)定周期采集PLC變量值。如果有新的報警產生,則修改實時數據圖中變量對應的當前值、背景色,語音播放報警內容,將報警信息顯示到歷史報警表格并保存到歷史報警文件中。

5)如果系統配置不正?;蛉斯c擊“關閉”按鈕,則系統退出。

6)人機接口程序根據信號、槽函數自動觸發。

系統運行流程如圖1所示。

1.1 系統配置表格設計

該表格用于保存系統配置信息,包括標簽所在CPU的IP地址、CPU槽號、Tag地址及對應語音報警內容。系統配置如表1所示。

在后續使用中,如果要增加、減少、修改報警點或更改語音報警內容,只需修改本配置表格即可,程序無須改動,使得系統應用非常靈活、方便。

1.2 前端UI界面開發

基于PySide2模塊開發前端UI界面,內容包括實時數據區、歷史數據區、狀態欄區、公共操作區,用于系統配置信息、實時及歷史報警數據的可視化顯示及人機操作。

系統運行后,實時數據界面及歷史數據界面分別如圖2、圖3所示。

1)實時數據區。通過點擊軟件頂部“實時數據”按鈕進行切換,用于顯示本軟件名稱、開發作者、適用系統、Excel文件配置的Tag名稱、報警內容、系統采集的當前值等信息。

2)歷史數據區。通過點擊軟件頂部“歷史數據”按鈕進行切換,用于顯示配置統計信息(CPU總數、Tag總數、報名總數)、報警查詢窗口、顯示全部按鈕、清空報警按鈕、歷史報警信息(報警時間、報警IP、報警Tag、報警內容)。

3)狀態欄區。位于軟件底部左半部分,用于顯示與軟件相關的狀態信息(如:配置是否異常、軟件授權狀態等)。

4)公共操作區。位于軟件底部右半部分,包括:“聲音測試”按鈕,用于測試系統音頻狀態;“關于作者”按鈕,點擊后彈出作者信息窗口;“總在最前”復選框,用于選擇本軟件是否顯示在桌面最前端。

1.3 報警記錄生成

當新的語音報警產生時,報警總數加1,在歷史報警表的最后生成一條新的記錄,并同時與之前產生的歷史報警合并成一個報警日志文件保存到電腦硬盤中。包含報警產生的日期、時間、CPU的IP、報警Tag、報警內容。后期可根據需要調用該歷史記錄進行篩選、查詢。

2 系統配置表格解析及可視化顯示

首先,基于第三方模塊openpyxl讀取Excel配置表格,獲取系統配置信息;然后,進一步對配置內容進行解析和整合,如總共配置了多少套PLC、每套PLC的CPU IP地址、CPU槽號、Tag地址等;最后,將數據推送至前端UI界面中,關鍵實現代碼如下:

# ------將讀到的數據寫到tablewidget------

def write_to_ui_tab1_tw(self):

# 設置TableWidget

# 設置列數

self.ui.tab1_tw.setColumnCount(3)

# 設置列數

self.ui.tab1_tw.horizontalHeader().setStyleSheet("::section{Background-color:rgb(255,228,225)}")

# 設置單元選中

self.ui.tab1_tw.setSelectionBehavior(QAbstractItemView.SelectItems)

# Tag名稱

self.ui.tab1_tw.setHorizontalHeaderItem(0,QTableWidgetItem('Tag名稱'))

# 報警內容

self.ui.tab1_tw.setHorizontalHeaderItem(1,QTableWidgetItem('報警內容'))

# 當前值

self.ui.tab1_tw.setHorizontalHeaderItem(2,QTableWidgetItem('當前值'))

# Tag名稱

self.ui.tab1_tw.setColumnWidth(0,334)

# 報警內容

self.ui.tab1_tw.setColumnWidth(1,399)

# 當前值

self.ui.tab1_tw.setColumnWidth(2,65)

for i in range(len(self.excel_tag_address_list)):

self.ui.tab1_tw.insertRow(i)

# Tag名稱

self.ui.tab1_tw.setItem(i,0,QTableWidgetItem(self.excel_tag_address_list[i]))

# 報警內容

self.ui.tab1_tw.setItem(i,1,QTableWidgetItem(self.excel_voice_alarm_content_list[i]))

# 當前值

self.ui.tab1_tw.setItem(i,2,QTableWidgetItem(' '))

3 PLC數據采集及語音報警實現

基于第三方模塊pylogix,根據系統配置的CPU數量、槽號、IP地址,通過以太網,定周期從各PLC中讀取標簽數值,并判斷是否滿足語音報警觸發條件。當標簽值滿足語音報警條件后,利用第三方模塊win32com,調用系統API接口,播放標簽對應的語音報警內容,播放三次后自動停止。如表1中標簽BOOL[1]滿足上升沿條件后,則會通過電腦音頻播放“M1膠帶機故障”。若同一個掃描周期有多個標簽滿足語音報警條件,則依次按序播放。

PLC數據采集及語音報警實現的關鍵代碼為:

# ------讀取PLC變量值------

def read_plc_job(self):

# 變量值列表

tag_read_content_list = []

try:

# 遍歷IP列表

for index in range(len(self.excel_ip_list)):

with PLC() as com:

# IP

com.IPAddress = self.excel_ip_list[index]

# 槽號

com.ProcessorSlot = self.excel_slot_list[index]

# 批量讀取單個PLC變量

tag_read_content_temp = com.Read(self.excel_per_cpu_tag_address_list[index])

# 將變量值存放在value_list列表中

tag_read_content_list += tag_read_content_temp

except:

pass

# ------判斷標簽上升沿并報警------

for index,item in enumerate(tag_read_content_list):

value = item.Value

value_item = self.tablewidgetitem(value)

# 更新前臺表中value列的值

self.ui.tab1_tw.setItem(index,2,QTableWidgetItem(value_item))

if value == True and (self.tag_value_ons_list[index] == False):

# 報警時間

alarm_time = str(datetime.datetime.now())[:-7]

# 報警IP

alarm_ip = self.excel_ip_fill_list[index]

# 報警標簽

alarm_tag = self.excel_tag_address_list[index]

# 報警內容

alarm_content = self.excel_voice_alarm_content_list[index]

# 報警信息推送到UI

insert_row_num = self.ui.tab2_tw.rowCount()

self.ui.tab2_tw.insertRow(insert_row_num)

# 報警時間

self.ui.tab2_tw.setItem(insert_row_num,0,QTableWidgetItem(alarm_time))

# 報警IP

self.ui.tab2_tw.setItem(insert_row_num,1,QTableWidgetItem(alarm_ip))

# 報警Tag

self.ui.tab2_tw.setItem(insert_row_num,2,QTableWidgetItem(alarm_tag))

# 報警內容

self.ui.tab2_tw.setItem(insert_row_num,3,QTableWidgetItem(alarm_content))

# 累計報警總數

self.alarm_num = self.ui.tab2_tw.rowCount()

self.tab2_alarm_num_signal.set_text.emit(self.ui.tab2_alarm_num,str(self.alarm_num))

# 保存歷史報警到本地文件

# 將UI數據保存到csv文件中

self.download_job()

# 播放語音報警

self.speaker.Speak(self.excel_voice_alarm_content_list[index])

self.speaker.Speak(self.excel_voice_alarm_content_list[index])

self.speaker.Speak(self.excel_voice_alarm_content_list[index])

self.tag_value_ons_list[index] = value

4 UI接口程序實現

UI接口程序主要用于實現人機交互功能:

1)實時數據顯示:將Excel表格中配置的Tag名稱、報警內容、PLC當前值推送到前端UI界面。其中,當前值狀態的定義如下。

標簽值為0時,文本內容顯示False,背景色為綠色,顏色代碼#99CC33;

標簽值為1時,文本內容顯示True,背景色為淺紅色,顏色代碼#FF9999;

標簽值讀取錯誤(配置的CPU信息錯誤或標簽地址錯誤等)時,文本內容顯示None,背景色為黃色,顏色代碼#FFFF00。

2)配置信息顯示。程序啟動之初,讀取Excel配置文件,獲取CPU總數、Tag總數,推送至配置信息表中;從歷史報警文件中統計歷史報警總數,推送至配置信息表中。

3)歷史數據“報警查詢”。獲取“選擇報警內容”下拉菜單的操作選項(下拉菜單選擇Al3l或某一項報警內容),通過歷史數據查詢,將結果顯示在歷史報警表格中。

4)歷史數據“顯示全部”。獲取“顯示全部”按鈕的操作信號,將系統產生的所有報警記錄顯示在下部的歷史報警表格中。

5)歷史數據“清空報警”。獲取“清空報警”按鈕的操作信號,清空歷史報警表格內容及硬盤中的歷史記錄文件。

6)“聲音測試”。獲取“聲音測試”按鈕的操作信號,發出音頻“聲音測試”,用于測試主機聲卡、揚聲器等是否正常,音量大小是否合適。

7)“關于作者”。獲取“關于作者”按鈕的操作信號,彈出關于作者信息的UI界面,方便使用人員與作者進行技術溝通和交流。

8)“總在最前”。獲取“總在最前”復選框的當前狀態,用于控制該軟件是否總是顯示在桌面最前端。

5 結 論

由于本系統具有優秀的通用性及良好的擴展性,在羅克韋爾工程應用中僅通過修改Excel配置文件即可滿足各種項目需求,大大節省了后期開發過程中的人工成本;同時,該系統獨立于原有HMI系統,在開發、應用過程中不會對原有HMI產生影響,更可靠、更安全。

參考文獻:

[1] 王維波,栗寶鵑,張曉東.Python Qt GUI與數據可視化編程 [M].北京:人民郵電出版社,2019:12-16.

[2] 韋斯·麥金尼.利用Python進行數據分析 [M].徐敬,譯.北京:機械工業出版社,2018:168-184.

[3] 李慶輝.深入淺出Pandas:利用Python進行數據處理與分析 [M].北京:機械工業出版社,2021:89-105.

[4] 詹卡洛·扎克內. Python并行編程實戰:第2版 [M].蘇鈺涵,譯.北京:中國電力出版社,2020:33-37.

[5] 布拉德利.Python數據結構與算法分析:第3版 [M].呂能,刁壽鈞,譯.北京:人民郵電出版社,2023:91-103.

[6] 宋勇江,鞏偉.RSView32利用VBA實現報警歷史查詢 [J].自動化技術與應用,2014,33(4):85-87+94.

[7] 張蕾,王婧博,李曉丹.基于S7-200 PLC的步進電機運動控制系統設計 [J].自動化技術與應用,2024,43(2):9-12.

[8] 王鵬.Pylogix與Rockwell系列PLC通信的研究 [J].自動化應用,s97STBw7wiwDIikkLzyftalIvIGOe+H6c/4Lk59Au7o=2024,65(1):44-46+49.

[9] 郭星濤,彭蓮香.基于Python的電子像控點點之記程序設計與實現[J].工業控制計算機,2024,37(3):75-77.

[10] 蔡文樂,秦立靜.基于Python爬蟲的招聘數據可視化分析 [J].物聯網技術,2024,14(1):102-105.

DOI:10.19850/j.cnki.2096-4706.2024.17.033

作者簡介:江海濤(1983—),男,漢族,江蘇南京人,電子信息工程師,本科,研究方向:鋼鐵行業自動化、數字化和智能化應用。

收稿日期:2024-03-29

Design and Implementation of Rockwell Voice Alarm System Based on Python

JIANG Haitao

(Baosight Software (Nanjing) Co., Ltd., Nanjing 210039, China)

Abstract: With the continuous expansion of modern factory production scale, the HMI screens for monitoring operation positions are also increasing. Faced with a large number of operating terminals, in addition to normal production operations, timely understanding and tracking processing of key alarms by operators is particularly important. Based on the Python development environment, this paper takes the implementation of the Rockwell voice alarm system as the starting point, and uses third-party ecological modules such as PySide2, Pylogix, and win32com, aiming to design an intelligent system that can automatically play voice alarms according to the real-time tag values of the Rockwell PLC.

Keywords: Python; PySide2; Pylogix; win32com; Rockwell; voice alarm

主站蜘蛛池模板: 久久久久国色AV免费观看性色| 亚洲无卡视频| 福利国产微拍广场一区视频在线| 在线亚洲精品福利网址导航| 国产白丝av| 91精品国产综合久久不国产大片| 亚洲一区二区三区国产精华液| 久久精品视频亚洲| 久996视频精品免费观看| 五月婷婷综合色| 喷潮白浆直流在线播放| 国产嫖妓91东北老熟女久久一| 67194在线午夜亚洲| 一级毛片在线播放免费| 色国产视频| 亚洲高清在线天堂精品| 天天综合天天综合| 国产精品无码久久久久AV| av一区二区三区高清久久| 国产午夜不卡| 亚洲欧美在线综合一区二区三区| 91色在线观看| 亚洲精品午夜天堂网页| 九九热在线视频| 亚洲国产天堂在线观看| 久久毛片基地| 99久视频| 久久综合AV免费观看| 丝袜无码一区二区三区| 美女无遮挡被啪啪到高潮免费| 免费看av在线网站网址| 性69交片免费看| 99热精品久久| 91丝袜在线观看| 国产精品视频第一专区| 欧美成人在线免费| 国产v精品成人免费视频71pao| 综合色天天| 精品自拍视频在线观看| 精品国产电影久久九九| 国产尤物视频在线| 99视频全部免费| 99国产精品免费观看视频| 国产精品蜜臀| 亚洲无码高清视频在线观看| 漂亮人妻被中出中文字幕久久| 成人a免费α片在线视频网站| h视频在线播放| 免费高清自慰一区二区三区| 天堂在线www网亚洲| 精品国产成人国产在线| 热99re99首页精品亚洲五月天| 狠狠色婷婷丁香综合久久韩国| 久久精品一卡日本电影| 国产成年女人特黄特色大片免费| 最新国产精品鲁鲁免费视频| 亚洲成人手机在线| 国产欧美日韩va| 中文字幕第4页| 亚洲黄色成人| 久久久久亚洲精品成人网| 狠狠色成人综合首页| 国产97视频在线| 成人小视频网| 制服丝袜 91视频| 精品国产美女福到在线直播| 永久在线精品免费视频观看| 香蕉综合在线视频91| 亚洲男人天堂网址| 午夜精品久久久久久久99热下载| 毛片在线区| 国产成人精品高清不卡在线| 成年人国产视频| www.亚洲一区| 久青草网站| 日本爱爱精品一区二区| 一区二区偷拍美女撒尿视频| 99久久精品国产精品亚洲| 久久综合亚洲鲁鲁九月天| www欧美在线观看| 91久久偷偷做嫩草影院| 国产精品视频白浆免费视频|