为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

台达PLC与VB通讯简易教程[1]

2011-11-17 10页 pdf 226KB 153阅读

用户头像

is_735186

暂无简介

举报
台达PLC与VB通讯简易教程[1] VB實現電腦與台達 PLC的串列通信 ───────PLC產品處 王乃全 摘要:本文介紹了 Visual Basic6編程語言,MODBUS ASCII通信協定及通過 VB如何實現 P PLC的通信 關鍵字:Visual Basic MODBUS 前言: 現代的世界是一個高度自動化的世界,各式各樣的設備都可以和電腦連線,而最簡單的 自動化連線方式就是使用串列通信。 VB提供了串列通信控制項 以讓開發者開發串列通信的系統程 ,功能上也提供了不 少為用戶著想的簡便之處。 PLC 制...
台达PLC与VB通讯简易教程[1]
VB實現電腦與台達 PLC的串列通信 ───────PLC產品處 王乃全 摘要:本文介紹了 Visual Basic6編程語言,MODBUS ASCII通信協定及通過 VB如何實現 P PLC的通信 關鍵字:Visual Basic MODBUS 前言: 現代的世界是一個高度自動化的世界,各式各樣的設備都可以和電腦連線,而最簡單的 自動化連線方式就是使用串列通信。 VB提供了串列通信控制項 以讓開發者開發串列通信的系統程 ,功能上也提供了不 少為用戶著想的簡便之處。 PLC 制領域不可缺 的部分,已經非常普及,如何簡 的與 PLC交互已經成 為眾多廠 戰場。由此 生了人機界面、組態軟體等產品。 些產品的產 大簡 化了對 P ,操作,使 方便。但也有共同的缺點:價格 高和開發性較差。VB 作為“原始"的編程語言在這兩 面無疑有著明顯的優勢。 本文結合一個簡單的案例, 比較基礎的概念為大家展示如何 VB實現 PC-PLC的 通信,對於初涉這個領域的 一、串列通信基本概念 1、 通信的種類:通常通信的形 列通信(Serial Communicat 位元。這兩種不同的通信模 并行设备 如打印机 并行设备 如打印机 2、 串列通信 可 少 產 用更 方 用 師,也會受益與本文提供的基本概 式可以分為兩種,並行通信(Paral ion)。所謂並行,既是一次傳輸量為 式如圖 平行傳輸 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 串列傳輸 式 便 這 過 通過 是現在控 商新的競爭 LC的控制 念。 lel Communica 8位;而串列 1 2 3 4 5 6 7 8 生大 與台達 DV ASCII PLC tion)和串 一次只傳 1 设 备 设 备 常用的串列通信也有兩種。分別位 RS-232和 RS-485 2-1 RS-232 RS-232 的信號准位元乃是參考地線而來的,如圖,傳輸端參考接地端 1 來傳送資料; 接收端則參考接地端 2還原出傳送端的信號準備。 傳送端 接收端 地電壓 接地端 1 接地端 2 由圖可知,由於兩個接地端准位不一定一樣,而且很容易受到干擾,所以信號在 RS-232 線路傳輸時,很容易產生錯誤。 2-2 RS-485 RS-485的信號傳輸方式如圖。 傳送端 接收端 地電壓 接地點 1 接地點 2 RS-485 的信號將被傳送出去時會分成正負兩條線路,當到達接收端後,在將信號相減 還原成原來的信號;如果將原始的信號示成(DT),而被分成的信號分別標示成(D+) 及(D-),則 DT= (D+)-(D-) 同樣地,接收端在接收到信號後,也依據上式還原成原來的樣子。如果線路受到干擾,兩條 線路的信號分別為(D+)+Noise (D-)+Noise。接收端還原信號為 (DT)= [(D+)+Noise]-[ (D-)+Noise] 與先前結果一樣,所以 RS-485可以有效的防止雜訊的干擾。 二、Visual Basic基本概念 1、 VB 是微軟的視窗軟體,提供了很多介面成員。物件、屬性、事件、方法就是四個 重要的介面。 2、 VB常用控制項。 2-1標籤控制項 此控制項專用於顯示文字,數位用,顯示如圖 2-2 按鈕控制項 此控制項使用率很高,提供一個供系統用戶操作用的按鈕 2-3 計時器控制項 此控制項的最大作用在於固定的時間內會執行所設置的程式碼一次。 VB提供了大量的控制項,在此不一一敍述。 三、MScomm控制項 要完成 VB與 PLC等串列設備的通信,MScomm控制項是一個很好用的控制項。 所以在此有必要對MScomm控制項做一個較為詳細的說明 1、 MScomm非標準控制項,要手動添加,步驟如下: 1-1選擇功能表的【工程】 1-2 選擇【部件】 1-3 在彈出的對話方塊中做如圖選擇 1-4在部件選項卡就會出現MScomm控制項 2、基本屬性 電腦通信口選擇 通信參數設置 PortOpen 通信口是否打開 Input 收到的字元 Output 發送的字元 四、MODBUS ASCII。 Modbus 分為ASCII和RTU兩種,ASCII採用的格式和 格式,並僅對使用的功能碼進行說明,更多的資訊,請參看 1、通信格式 STX 起始字元 “:"(3AH) ADR 1 ADR 0 通信地址(站號)採用 2個字 CMD 1 CMD 0 功能碼。採用 2個字元 DATA(0) DATA(1) ………. DATA(n-1) 資料項目 LRC CHK 1 LRC CHK 0 LRC 校驗碼。採用 2個字元 END 1 END 0 結束字元。採用 2個字元。 END 1 = CR(0DH),END 0 2、 LRC演算法 ADR H+CMD H+DATA H,然後取 2的補數 3、功能碼 05, 寫入線圈 格式 例子(十六進位) 字頭 3A 站號 01 功能碼 05 地址 05 00 寫入狀態 FF 00 LRC 碼 F6 06, 寫入單個字寄存器 格式 例子(十六進 字頭 3A 起 读 L 校驗相對簡單,本文採用ASCII 協定的詳細說明 元 = LF(0AH) 01, 讀線圈狀態 位) 格式 例子 (十六进制) 字头 3A 站号 01 功能码 01 始地址 06 14 取数目 00 25 RC 码 BF 站號 01 功能碼 06 寄存器位址 06 00 寫入的資料 12 34 LRC 校驗碼 AD 五、VB與 PLC通信的實現 1、控制要求 a、控制 PLC的啟動、停止,並顯示運行狀態(綠色為運行,紅色為停止) b、能夠用交替型按鈕控制 Y0,Y1。並用指示燈顯示 Y0,Y1狀態。(綠色為運行,紅色為 停止) c、能夠對 D256,D512兩個寄存器進行數值寫入的操作 2、思路: a、PLC 啟動停止的標誌位元為 M1072,查 DVP 協議,知道位址為 H0C30。按功能碼 01操作 b、同樣 Y0,Y1的地址分別為 H0500,H0501。寫入 FF00為 ON,0000為 OFF,按功能 碼 05操作 c、D256,D512位址分別為 H1100,H1200,按功能碼 06操作即可 3、VB介面的設計如圖 用按鈕控制 PLC的啟動停止,Y0,Y1的 ON/OFF以及 D256,D512寫完資料的發送 用 Shape元件做指示燈,表示 PLC的運行狀態和 Y的狀態。 用 timer元件不停的讀取M1072的狀態,以判斷 PLC的運行情況 用MScomm控制項實現 PC與 PLC的通信 4、代碼構成 1)、LRC演算法校驗的實現 Public Function LRC(str As String) As String c = 0 l = Len(str) For c = c + 1 To l c_data = Mid$(str, c, 2) d_lrc = d_lrc + Val("&H" + c_data) c = c + 1 Next c If d_lrc > &HFF Then d_lrc = d_lrc Mod &H100 End If h_lrc = Hex(&HFF - d_lrc + 1) If Len(h_lrc) > 2 Then h_lrc = Mid(h_lrc, Len(h_lrc) - 1, 2) End If LRC = h_lrc End Function 2)、運行的一開始就判斷 PLC的狀態,並設置標誌位元 '初次運行打開串口,並顯示 PLC運行狀態 Private Sub Form_Load() Dim s1 As String Dim s2 As String Dim s22 As String Dim s3 As String Dim s4 As String MSComm1.PortOpen = True s2 = "01010C300001" s22 = LRC(s2) s1 = ":" + s2 + s22 + Chr$(13) + Chr$(10) MSComm1.Output = s1 s3 = MSComm1.Input s4 = Mid$(s, 6, 8) If s4 = "0C30FF00" Then plc = 1 'PLC為運行標誌 Else plc = 0 'PLC為停止標誌 End If End Sub 3)、下面一段為用指示燈表示 PLC的運行狀態 Private Sub Timer5_Timer() Dim s1 As String Dim s2 As String Dim s22 Dim s3 As String Dim s4 As String s2 = "01010C300001" s22 = LRC(s2) s1 = ":" + s2 + s22 + Chr$(13) + Chr$(10) MSComm1.Output = s1 s3 = MSComm1.Input s4 = Mid$(s3, 8, 2) If s4 = "31" Then plc = 1 'PLC為運行標誌 Else: If s4 = "30" Then plc = 0 'PLC為停止標誌 End If If plc = 1 Then Label2.Caption = "PLC正在運行......" Shape1.FillColor = RGB(0, 255, 0) 'green Else Label2.Caption = "PLC已經停止" Shape1.FillColor = RGB(255, 0, 0) 'red End If End Sub 4)、PLC的啟動與停止 '啟動 PLC Private Sub start_Click() Dim strout As String Timer5.Enabled = False str = "00050C30FF00" 'M1072 為 PLC啟動停止標誌位元。查地址表,M1072為 OC30.FF00 為置 ON,0000為置 OFF '以上都是固定格式,要牢記 LRCC = LRC(str) '計算 str的 lrc校驗碼 strout = ":" + str + LRCC + Chr$(13) + Chr$(10) '欲傳送之資料。13為 D,10為 A MSComm1.Output = strout Timer5.Enabled = True End Sub '停止 PLC Private Sub stop_Click() Dim strout As String Timer5.Enabled = False str = "00050C300000" LRCC = LRC(str) strout = ":" + str + LRCC + Chr$(13) + Chr$(10) MSComm1.Output = strout Timer5.Enabled = True End Sub Y0,Y1的 ON/OFF與 PLC啟動/停止的控制方式相同,指示燈的表示方式也相同。D256, D512資料寫入的操作類似,此處由於篇幅的關係,就不把代碼全部列出。 六、總結 由於 VB 語言使用的簡易型,為眾多工程技術人員與串列設備的通信提供了很大的方 便。 台達 PLC 採用標準的 MODBUS 協定,這一協定目前廣為流行,為大家所熟知,也為 大家最終實現通信提供了簡化的平臺。 由於台達所有的機電產品都支援MODBUS協定,所以,掌握了 VB與 PLC通信過程, 也就等於掌握了 PC與台達所有機電產品的通信。 本文的形成由於時間的關係,也由於筆者的能力所限,難免有不祥之處,也希望大家能 夠不吝指出。 參考文獻 《VB與 RS-232通信實例》 《VB6從入門到精通》 《DVP-PLC應用技術手冊》 《DVP-Protocal》 2005-12-18
/
本文档为【台达PLC与VB通讯简易教程[1]】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索