原創不易,請勿抄襲!
很多人可能聽過或者用過這個軟件,其實簡單來說就是一個信息采集的系統,在工業中,對應的就是人機界面,類似于WINCC,INTOUCH,組態王等等,近幾年在國內很火,今天和大家分享一下。
其實,建立自己的人機界面的方式有很多種,其中包括文中所講的Labview,除此之外作者還使用過VB運用prodave驅動或者Libnodave驅動連接PLC數據制作畫面,也非常好用。都是非常好用且有趣的應用,而且使用這些小眾化的方式可以使得編出來的人機界面很高大上,最重要的是沒有刻苦學習過的人無法更改或者判斷故障,也就是不可替代性!搞工控的都知道不可替代性代表了什么,尤其是在每年數萬電氣自動化畢業生就業的前提下。
除了上述的目的,我覺得對于這些應用,一般的工控人員來講只需要簡單了解,需要用的時候再去研究學習即可,畢竟自動化知識不是紙上談兵,沒有實際應用再好的學生也學不來。
好吧,開始我們今天的案例!
西門子S7-1200 PLC支持多種協議通過以太網通訊方式,如OPC、TCP、S7、MODBUS-TCP等。TCP方式相比其它協議,具有更多的靈活性,更快的數據響應等優點,本人即介紹LabVIEW通過TCP方式與S7-1200 PLC通信。
S7-1200 PLC的TCP通信方式,稱之為“開放式用戶通訊”,通過以太網發送或讀取數據。
硬件包括:
博途S1200PLC:CPU 1215C和PC一臺;
軟件包括:
博途 TIA V14 SP1和LabVIEW 2012 或以上版本
編程思路分為兩步;
1PLC編程:配置PLC --> 添加發送和接收數據塊 --> 發送數據程序 --> 接收數據程序 --> 編譯下載
2LabVIEW編程:創建TCP連接 --> 接收或發送數據 --> 關閉連接
3.1 CPU配置
1 打開 TIA Portal,創建項目,添加CPU為1215C。
2 雙擊“設備組態”,切換到“設備視圖”,點擊CPU,右鍵選擇屬性。
3 在常規欄,選擇PROFINET 接口[X1]/以太網地址屬性,設置CPU的IP地址,本例設置為 192.168.0.10,如下圖所示:
4 在常規欄,選擇系統和時間存儲器屬性,啟用系統存儲器字節和時鐘存儲器字節,如下圖:
5 如果傳輸的數據量大,且實時性要求高,可選擇通信負載屬性,把由通信引起的循環負荷由默認為20%,提高到 50%。
3.2 添加數據塊
1 添加發送數據塊。該數據塊用于存儲PLC向LabVIEW發送的數據。點擊程序塊/添加新塊,在打開的對話框中選擇數據塊,輸入名稱,如 PlcSendData ,類型可選擇全局DB。注意如果不一次性傳輸大量數據,可以直接使用PLC變量,單次發送一個數據,不需要創建數據塊。
2 打開該數據塊PlcSendData ,添加數據,名稱如 ArySendData,選擇數據類型Array of Byte,即字節數組,數組長度設置為10。
3 修改數據塊屬性。選中數據塊PlcSendData ,右鍵屬性,在屬性欄去掉優化的塊訪問,以支持絕對尋址模式。
4 添加接收數據塊。該數據塊用于存儲LabVIEW向PLC發送的數據。數據塊名稱PlcRecvData,數據類型Array of Byte,操作方法同步驟1、2、3。
3.3 編寫發送數據程序
1 打開 Main 程序
2 添加指令通信/開放式用戶通信/TSEND_C到程序段1,調用選項的數據塊名稱采用默認。
3 配置 TSEND_C 的通訊參數。選中 TSEND_C,右鍵屬性,切換到組態頁,選擇連接參數屬性?;锇轫椷x擇未指定,連接數據選擇新建,系統會自動創建一個連接數據,如PLC_1_Send_DB。輸入伙伴的IP地址,如192.168.0.12。由伙伴主動建立連接,PLC的端口可保留默認的2000。連接類型為TCP,連接ID采用默認值。(注:所謂伙伴即與PLC通信的另一方,可以為上位機PC、HMI等)
4 配置 TSEND_C 的輸入輸出。TSEND_C在檢測到參數 REQ 上升沿時執行發送作業,因此每次發送數據時,都應在REQ上產生一個脈沖,此處為了簡便,調用系統時鐘 Clock_10Hz(每秒10次),周期性的發送數據。參數DATA為待發送的數據,此處調用數據塊 PlcSendData。注意DATA采用純符號尋址時,發送 LEN 應設置為0,而采用絕對尋址時,應設置為實際發送數據的長度。通訊狀態參數 DONE\BUSY等按需要連接。
3.4 編寫接收數據程序
1 添加指令通信/開放式用戶通信/TRCV_C 到程序段2,調用選項的數據塊名稱采用默認。
2 配置 TRCV_C 的通訊參數。選中 TRCV_C,右鍵屬性,切換到組態頁,選擇連接參數屬性。伙伴項選擇未指定,連接數據選擇3.3 步驟自動創建的數據,如PLC_1_Send_DB,切記不要選擇新建(此例的通訊連接為自動創建,因此發送與接收共用一個連接,必須保持一致才能正常通訊)。
3 配置 TRCV_C 的輸入輸出。TRCV_C在檢測到參數 EN_R 為1時啟動接收。參數DATA為數據接收區,此處調用3.2步驟所創建的數據塊PlcRecvData。注意DATA采用純符號尋址時,接收 LEN 應設置為0,而采用絕對尋址時,應設置為實際發送數據的長度。通訊狀態參數 DONE\BUSY等按需要連接。具體參數信息請查看幫助文檔。
4 為了判斷PLC是否正確接收到LabVIEW所發送的數據,可通過以下兩種方法測試。
a、將第3.3 的數據發送區設置為與數據接收區相同的數據塊,即 PlcRecvData,使PLC把接收到數據發送回LabVIEW。
b、添加 MOVE 指令采用數據移動的方法完成此功能,如下所示:
3.5 編寫LabVIEW程序
1) 創建TCP連接TCP OpenConnection。輸入PLC的IP地址 192.168.0.10 和端口號2000。
2) 讀取數據TCP Read。輸入讀取長度10(PLC程序的發送數據塊長度為10個字節)。
3) 發送數據TCP Write。
4) 關閉連接TCP Close Connection。
5) 前面板如下。點擊 Write,把數據WriteData寫入PLC,同時PLC把該數據發回LabVIEW,通過 ReadData顯示。如果ReadData數據與WriteData一致,即通信正常。
3.6 下載程序,連接測試
哎呀媽呀,累死我了,大家點個贊支持我一下唄!
喜歡的話請點贊并分享,您的支持是我堅持下去的動力!送人玫瑰,手有余香!
· 環境VS2019(64位)+Labview2018(32位)+Windows10
· 使用Labview創建dll共享庫
1.創建項目
2.項目中新建VI
3.此處以一個簡單的加法算法為例
注意輸入輸出部件需要以英文字符命名,不可用中文
4.將輸入輸出接線端添加好
5.將VI和項目命名為add
在程序生成規范中生成共享庫(DLL)
6.高級類別中的包括附加的LabVIEW頭文件,勾選
點擊生成
7.生成的項目有這么多
Labview生成Dll完成
· 使用VS2019調用函數
1.VS2019創建新項目,選擇空項目
2.命名為dll
3.新建項
4.打開項目屬性頁
VC++目錄的包含目錄和庫目錄分別添加頭文件(SharedLib.h)和庫文件(SharedLib.lib)的路徑
5.在鏈接器-輸入-附件依賴項中添加庫名稱——SharedLib.lib
6.編寫了一段簡單的調用代碼,注意頭文件
7.在運行之前要將labview生成的dll文件添加到vs相應項目文件目錄下
8.運行得到正確結果
調用成功