PC與三菱PLC串口通訊.ppt_第1頁(yè)
PC與三菱PLC串口通訊.ppt_第2頁(yè)
PC與三菱PLC串口通訊.ppt_第3頁(yè)
PC與三菱PLC串口通訊.ppt_第4頁(yè)
PC與三菱PLC串口通訊.ppt_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

PC與三菱PLC串口通訊實(shí)例 簡(jiǎn)介 PC與PLC之間的通訊 按硬件接口分類主要分為串口通訊和網(wǎng)口通訊 RS 232C RS 422A RS 485 UDP 串口通訊 TCP 網(wǎng)口通訊 目錄 1 三菱PLC數(shù)據(jù)操作對(duì)象元件 1 三菱PLC操作元件分為位元件和字元件 位元件主要有 X Y M S T C 字元件主要有 D 2 元件說(shuō)明 輸入繼電器 X 是可編程控制器從外部的輸入開(kāi)關(guān)接受信號(hào)的窗口 只能讀不能寫(xiě) 輸入寄存器必須由外部信號(hào)驅(qū)動(dòng) 輸出繼電器 Y 是可編程控制器驅(qū)動(dòng)外部負(fù)載的窗口 輔助繼電器 M 是可編程控制器內(nèi)部輔助繼電器軟元件 狀態(tài) S 是可編程控制器內(nèi)部狀態(tài)繼電器軟元件 定時(shí)器 T 是可編程控制器定時(shí)溢出軟元件 計(jì)數(shù)器 C 是可編程控制器計(jì)數(shù)溢出軟元件 數(shù)據(jù)寄存器 D 是可編程控制器保存數(shù)據(jù)的軟元件 FX系列可編程控制器的數(shù)據(jù)寄存器是16位 最高位是正負(fù)位 組合2個(gè)寄存器可以處理32位 最高位是正負(fù)位 的數(shù)值 2 三菱PLC元件首地址 讀取PLC主要內(nèi)部元件地址如下 D address 2 1000H M address 2 0100H X address 0080H Y address 00A0H T address 00C0H C address 2 01C0H S address 3 注意 address為十進(jìn)制數(shù) 例1 D0的地址為0 2 1000H算一算 1 D123的地址 2 M40的地址 3 Y13的地址 1000H 123 2 1000H F6H 10F6H 0100H 40 2 0100H 50H 0150H 00A0H 13 00A0H DH 00ADH 3 PLC數(shù)據(jù)類型和儲(chǔ)存格式 2 PLC數(shù)據(jù)儲(chǔ)存格式整數(shù) int型 三菱PLC普通數(shù)據(jù)為int型 32768 32767 如 PLC寄存器數(shù)據(jù)格式 0 1 32766 32767 32768 32769 65535實(shí)際數(shù)據(jù) 0 1 32766 32767 32768 32767 1讀取PLC的數(shù)據(jù)為 34303030383030308000H 32768浮點(diǎn)數(shù) real型32位 讀取PLC的數(shù)據(jù)為 32334239464333443DFCB923H轉(zhuǎn)換成二進(jìn)制 001111011111110010111001001000110 判斷正負(fù)數(shù) 0為正數(shù) 1為負(fù)數(shù) 01111011 指數(shù)11111001011100100100011 數(shù)值 3 PLC數(shù)據(jù)類型儲(chǔ)存格式 2 1 4321 3 PLC數(shù)據(jù)類型和儲(chǔ)存格式 指數(shù) 01111011b 123d123 127 4PLC在儲(chǔ)存數(shù)值時(shí) 第一位都為1 所以不保存在數(shù)據(jù)里 在分析數(shù)據(jù)時(shí)要加上1 數(shù)值 111111001011100100100011 1 1 2 4 1 1 2 5 1 1 2 5 1 1 2 5 1 1 2 5 1 1 2 5 0 1 2 5 1 2 27 0 12343 舉一反三1 把12 34轉(zhuǎn)換成PLC寫(xiě)入的數(shù)據(jù) 2 把0 79轉(zhuǎn)換成PLC寫(xiě)入的數(shù)據(jù) 4131373034353431 3730334434413346 4 PC與PLC串口通訊操作 一 對(duì)位元件和字元件狀態(tài)讀操作發(fā)送格式 命令格式 STXCMD0ADDLENEXTCHK解釋 起始符讀命令元件起始位個(gè)數(shù)停止符校驗(yàn)碼數(shù)字代碼格式 0 x020 x30 0 x03 0 x30是讀操作指令 CMDD是讀位元件或字元件的4位起始地址 高位先發(fā) 低位后發(fā) 以ASCII碼的格式發(fā)送 LEN是一次讀取位元件或字元件的字節(jié)個(gè)數(shù) 最多可以讀取0 xff個(gè)字節(jié)的元件 以ASCII碼的格式發(fā)送 CHK是兩位和校驗(yàn) 將CMD0 ADD LEN EXT三項(xiàng)進(jìn)行和累計(jì) 將和累計(jì)的最低位兩位轉(zhuǎn)化為ASCII 4 PC與PLC串口通訊操作 響應(yīng)格式 響應(yīng)信息格式 STXDATAETXCHK解釋 起始符返回的數(shù)據(jù)停止符校驗(yàn)碼數(shù)字代碼格式 0 x02 0 x03 DATA為我們前面讀取的數(shù)據(jù) 讀取DATA數(shù)據(jù)時(shí)遵循低位先發(fā) 高位后發(fā)的原則 所以我們解析數(shù)據(jù)的時(shí)候需要注意高低位的轉(zhuǎn)換 CHK位DATA EXT兩項(xiàng)和累計(jì)的最后兩位轉(zhuǎn)化為ASCII碼 例2 讀取D2寄存器的數(shù)據(jù)讀取碼 0 x30D2的寄存器地址 2 2 1000H 1004H 0 x31 0 x30 0 x30 0 x34 個(gè)數(shù) 0 x30 0 x34校驗(yàn)碼 30 31 30 30 34 30 34 03 15C 0 x35 0 x43 發(fā)送數(shù)據(jù) 0 x020 x300 x310 x300 x300 x340 x300 x340 x030 x350 x43響應(yīng) 0 x020 x320 x340 x420 x390 x460 x430 x330 x440 x030 x450 x340 1234練練手 1 讀取D123寄存器的數(shù)據(jù) 2 讀取Y13的值 0230313046363034033734 17 100230303041443031033739返回 02303203363500001000 4 PC與PLC串口通訊操作 二 對(duì)位元件和字元件狀態(tài)寫(xiě)操作發(fā)送格式 命令格式 STXCMD1ADDLENDATAEXTCHK解釋 起始符寫(xiě)命令元件起始地址位數(shù)寫(xiě)入的數(shù)據(jù)停止符校驗(yàn)碼數(shù)字代碼 0 x020 x31 0 x03 0 x31是寫(xiě)操作指令 DATA是待寫(xiě)入PLC緩沖區(qū)的數(shù)據(jù) 低位先發(fā) 高位后發(fā) 以ASCII碼的形似發(fā)送 其他的和讀指令一樣 響應(yīng)格式 返回06 表示寫(xiě)入成功 返回15 表示寫(xiě)入失敗 例3 把12 23寫(xiě)入D10寄存器里寫(xiě)命令 0 x31首地址 10 2 1000H 1014H 0 x31 0 x30 0 x31 0 x34 個(gè)數(shù) 0 x30 0 x34寫(xiě)入的數(shù)據(jù) 0 x31 0 x32 0 x41 0 x46 0 x34 0 x33 0 x34 0 x31 4 PC與PLC串口通訊操作 校驗(yàn)碼 31 31 30 31 34 30 34 31 32 41 46 34 33 34 31 03 314H 0 x31 0 x34 發(fā)送數(shù)據(jù) 0 x020 x310 x310 x300 x310 x340 x300 x340 x310 x320 x410 x460 x340 x330 x340 x310 x030 x310 x34如果響應(yīng)反饋是06表示寫(xiě)入成功 否則寫(xiě)入失敗 練練手 1 把1 2寫(xiě)入寄存器D6的的數(shù)據(jù) 2 把1寫(xiě)入Y1寄存器中 Y1 0000000002313030413130313032034339 02313130304330343132414634333431033134 5 SCI與三菱PLC串口通訊流程 一 設(shè)置變量寫(xiě)入變量 首地址 寫(xiě)入個(gè)數(shù) 校驗(yàn)碼 發(fā)送的數(shù)據(jù) 接受數(shù)據(jù) 讀取變量 首地址 讀取個(gè)數(shù) 校驗(yàn)碼 讀取的數(shù)據(jù) 二 把操作PLC的指令賦值給變量新建一個(gè)腳本 把要操作PLC的命令賦值給發(fā)送的數(shù)據(jù) 三 發(fā)送賦值的變量給PLC1 新建一個(gè)串口算子設(shè)置發(fā)送數(shù)據(jù)的變量 設(shè)置發(fā)送數(shù)據(jù)格式 ASCII編碼 字符串格式 2 配置串口參數(shù)波特率 9600停止位 1奇偶校驗(yàn) 偶數(shù)據(jù)位 7四 接受PLC響應(yīng)的數(shù)據(jù)新建一個(gè)腳本 解析響應(yīng)的數(shù)據(jù) 6 程序?qū)崿F(xiàn) 一 讀數(shù)據(jù)操作1 讀取設(shè)置CustomVar Fx Raddr 0 讀取首地址小于255CustomVar Fx Rnum 2 讀取個(gè)數(shù)小于162 轉(zhuǎn)換成發(fā)送數(shù)據(jù)格式vars 0201003 02和03為十六進(jìn)制 ASCII 02H Ctrl B 03H Ctrl PauseBreak vartemp newArray 創(chuàng)建一個(gè)數(shù)組temp length 4 設(shè)置數(shù)組長(zhǎng)度Ra CustomVar Fx Raddr 2 toString 16 toUpperCase 首地址轉(zhuǎn)換成十六進(jìn)制字符串if Ra length 2 少于兩位補(bǔ)0 Ra 0 Ra Rn CustomVar Fx Rnum 4 toString 16 toUpperCase 個(gè)數(shù)轉(zhuǎn)換成十六進(jìn)制字符串if Rn length 2 少于兩位補(bǔ)0 Rn 0 Rn a Ra Rn 6 程序?qū)崿F(xiàn) for i 0 i 4 i if parseInt a substr i 1 16 9 0 9加48 A F加55 0的ASCII碼30H 30H轉(zhuǎn)換十進(jìn)制為48 A的ASCII碼41H 41H轉(zhuǎn)換十進(jìn)制為55 temp i parseInt a substr i 1 16 48 else temp i parseInt a substr i 1 16 55 a 48 49 48 3 temp 0 temp 1 temp 2 temp 3 toString 16 數(shù)據(jù)值累加并轉(zhuǎn)換成十六進(jìn)制字符CustomVar Fx Rchk a substr a length 2 2 toUpperCase 取后兩位作為和校驗(yàn)CustomVar Fx RS s substr 0 4 Ra Rn s substr 4 1 CustomVar Fx Rchk 發(fā)送的字符串 6 程序?qū)崿F(xiàn) 3 轉(zhuǎn)換響應(yīng)返回的數(shù)據(jù)vartemp newArray temp length CustomVar Fx Rnum 8 for i 0 i CustomVar Fx Rnum 8 i if 串口 2 DataArray 1 i 57 判斷接收的每位數(shù)據(jù)是否小于等于57 temp i 串口 2 DataArray i 1 0 x30 toString 16 toUpperCase 把接收的數(shù)據(jù)轉(zhuǎn)換成十六 進(jìn)制字符串else temp i 串口 2 DataArray i 1 0 x30 0 x7 toString 16 toUpperCase for i2 0 i2 CustomVar Fx Rnum i2 a temp 2 i2 8 temp 3 i2 8 temp 0 i2 8 temp 1 i2 8 temp 6 i2 8 temp 7 i2 8 temp 4 i2 8 temp 5 i2 8 把字符串累加CustomVar Fx R i2 HextoReal a 調(diào)用函數(shù) 并賦值賦值 6 程序?qū)崿F(xiàn) 把取出的十六進(jìn)制轉(zhuǎn)換成實(shí)屬函數(shù)functionHextoReal h vari3 i4 i5 i6 b b1 s e m m1 h h substr 4 4 h substr 0 4 低四位先發(fā) 高四位后發(fā)b for i3 0 i3 8 i3 把十六進(jìn)制轉(zhuǎn)換成實(shí)數(shù) temp i3 parseInt h substr i3 1 16 for i4 0 i4 8 i4 把實(shí)數(shù)轉(zhuǎn)換成二進(jìn)制 b1 temp i4 toString 2 for i5 b1 length i5 4 i5 b1 0 b1 補(bǔ)碼 b b b1 6 程序?qū)崿F(xiàn) s b substr 0 1 正負(fù)數(shù)值e parseInt b substr 1 8 2 127 計(jì)算指數(shù)m 1 b substr 9 獲取數(shù)值m1 0 for i6 0 i6 24 i6 把二進(jìn)制數(shù)值轉(zhuǎn)換成實(shí)數(shù) m1 m1 m substr i6 1 Math pow 2 i6 Math pow 2 e 把二進(jìn)制轉(zhuǎn)換成實(shí)數(shù) if s 1 判斷正負(fù)數(shù) m1 m1 CustomVar Read D1 m1 return m1 6 程序?qū)崿F(xiàn) 二 寫(xiě)數(shù)據(jù)操作1 變量賦值CustomVar Fx Waddr 0 寫(xiě)入首地址小于255CustomVar Fx Wnum 2 寫(xiě)入個(gè)數(shù)小于16CustomVar Fx W 0 12 34 寫(xiě)入的數(shù)據(jù)0表示第一個(gè)數(shù)據(jù) 1表示第二個(gè)數(shù)據(jù)CustomVar Fx W 1 0 12342 轉(zhuǎn)換成發(fā)送數(shù)據(jù)格式vars 0211003 02和03為02H的ASCII 02H Ctrl B 03H Ctrl PauseBreak vartemp newArray 創(chuàng)建一個(gè)數(shù)組temp length 4 8 CustomVar Fx Wnum 首地址 個(gè)數(shù) 8 數(shù)據(jù)個(gè)數(shù)Wa CustomVar Fx Waddr 2 toString 16 toUpperCase 首地址轉(zhuǎn)換成十六進(jìn)制字符if Wa length 2 首地址字符長(zhǎng)度小于2時(shí) 在字符前面加0 Wa 0 Wa Wn CustomVar Fx Wnum 4 toString 16 toUpperCase 個(gè)數(shù)轉(zhuǎn)換成十六進(jìn)制字符 6 程序?qū)崿F(xiàn) if Wn length 2 個(gè)數(shù)字符長(zhǎng)度小于2時(shí) 在字符前面加0 Wn 0 Wn Wv for i3 0 i3 CustomVar Fx Wnum i3 Wv Wv RealtoHex CustomVar Fx W i3 把要寫(xiě)入的數(shù)據(jù)轉(zhuǎn)換成十六進(jìn)制 a Wa Wn Wv n 0 for i 0 i a length i 把字符轉(zhuǎn)換成ASCII碼 把ASCII轉(zhuǎn)換成十進(jìn)制數(shù)值 if parseInt a substr i 1 16 9 temp i parseInt a substr i 1 16 48 0 9加48 A F加55 0的ASCII碼30H 30H轉(zhuǎn)換十進(jìn)制為48 A的ASCII碼41H 41H轉(zhuǎn)換十進(jìn)制為55 6 程序?qū)崿F(xiàn) else temp i parseInt a substr i 1 16 55 n n temp i 數(shù)據(jù)值累加 a1 49 49 48 3 n toString 16 計(jì)算和校驗(yàn) 并轉(zhuǎn)換成十六進(jìn)制字符串CustomVar Fx Wchk a1 substr a1 length 2 2 toUpperCase 取后兩位值CustomVar

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論