三菱plc 与 计算机 通讯,PC与三菱PLC之间的RS232通讯协议
《PC與三菱PLC之間的RS232通訊協(xié)議》由會員分享,可在線閱讀,更多相關(guān)《PC與三菱PLC之間的RS232通訊協(xié)議(9頁珍藏版)》請在人人文庫網(wǎng)上搜索。
1、交流QQ:458362670,PC與三菱PLC之間的RS232通訊協(xié)議,一、VC與PLC的串口通訊主要操作: 1、對位元件和字元件狀態(tài)讀操作; 操作對象元件:PLC內(nèi)部的X、Y、M、S、T、C、D元件 命令通用格式: STX CMD0 ADD LEN EXT CHK 意義: 起始符 讀命令 元件起始位 個數(shù) 停止符 校驗碼 數(shù)字代碼格式: 0X02 0X30 0X03 0 x30是讀操作指令; ADD是讀位元件或字元件的4位起始地址,高位先發(fā),低位后發(fā),以ASCII碼的格式發(fā)送; LEN是一次讀取位元件或字元件的個數(shù),最多可以讀取0 xff個字節(jié)的元件,也是以ASCII碼的形式發(fā)送; CHK是。
2、兩位和校驗,將CMD0,ADD,LEN,EXT三項進行和累計,將和累計的最低兩位轉(zhuǎn)化成ASCII,高位先發(fā),低位后發(fā)。 在發(fā)完上述命令格式代碼后,就可以直接讀取PLC響應(yīng)返回的信息, 響應(yīng)信息格式:STX DATA EXT CHK 意義: 起始符 接收的數(shù)據(jù) 停止符 校驗碼 數(shù)字代碼格式:0 x02 0 x03 DATA為我們需要讀取的數(shù)據(jù); 需要注意的是:讀取DATA數(shù)據(jù)時遵循低位先發(fā),高位后發(fā)的原則,所以我們解析數(shù)據(jù)的時候需要注意高低位的轉(zhuǎn)換。 CHK則為DATA,EXT兩項的和累計的最后兩位轉(zhuǎn)化為ASCII。,2、位元件和字元件狀態(tài)寫操作; 操作對象元件:PLC內(nèi)部的XYMSTCU元件 。
3、命令通用格式:STX CMD1 ADD LEN DATA EXT CHK 意義: 起始符 讀命令 元件起始位 個數(shù) 寫入的數(shù)據(jù) 停止符 校驗碼 數(shù)字代碼格式:0X02 0X31 0X03 0 x031是寫操作指令; DATA是待寫入PLC緩沖區(qū)的數(shù)據(jù),低位先發(fā),高位后發(fā),以ASCII碼的形式發(fā)送; 其他和讀指令一樣,此處不再重復(fù); 發(fā)送后返回值為06,表示寫入成功; 返回值為15,表示寫入失敗;,二、IPC讀取PLC內(nèi)部數(shù)據(jù)時: 首先將需要讀取的PLC內(nèi)部元件的地址找到,主要內(nèi)部元件地址如下: D: m_address*2+1000H; T: m_address+00C0H; C: m_add。
4、ress*2+01C0H; S: m_address*3; M: m_address*2+0100H; Y: m_address+00A0H; X: m_address+0080H;(只能讀不能寫,輸入寄存器必須由外部信號驅(qū)動) m_address元件是指最低位開始后的第N個元件的位置。 數(shù)據(jù)通訊舉例: 例1:讀D0的值 D0的內(nèi)部地址為1000H=31H 30H 30H 30H LEN表示我們需要讀字節(jié)的個數(shù),0-7為一個字節(jié),D0占兩個字節(jié),所以LEN=30H 32H. 計算CHK校驗碼=CMD0+ADD+LEN+EXT =30H+31H+30H+31H+30H+30H+32H+03H=1。
5、57H 所以校驗碼為35H 37H. 得到完整的數(shù)字命令格式為:02H 30H 31H 30H 30H 30H 30H 32H 03H 35H 37H 將這段數(shù)字代碼發(fā)送給PLC, 返回代碼:02H 30H 30H 30H 30H 03H 43H 33H 得到數(shù)據(jù)段DATA為30H,31H,30H,30H=0001B(低位先發(fā),高位后發(fā))=1D 至此得到D0=1. 完成IPC讀取PLC內(nèi)部數(shù)據(jù)的全部過程。,IO通訊舉例: 例2:讀取Y1的值 Y1的內(nèi)部地址是00A0=30H 30H 41H 30H,表示的意思是Y7-Y0的地址,Y1只是其中的一個位。 LEN因為00A0只有一個字節(jié),所以可以去。
6、LEN=01D=30H 31H; 計算CHK校驗碼=36H 35H; 得到完成的數(shù)字代碼為:02H 30H 30H 30H 41H 30H 30H 31H 03H 36H 35H; 返回代碼:02H 30H 32H 03H 36H 35H 數(shù)據(jù)段為:30H 32H=02D=0010B 從Y7-Y0低往高排列可以知,Y1現(xiàn)在是狀態(tài)值為1; 如果這里取LEN=2D=30H 32H 發(fā)送代碼:02H 30H 30H 30H 41H 30H 30H 32H 03H 36H 36H; 返回代碼:02H 30H 32H 30H 30H 03H 43H 35H 數(shù)據(jù)段為:30H 32H 30H 30H=00。
7、02B(低位先發(fā),高位后發(fā))=2D 從Y7-Y0低往高排列可以知,Y1現(xiàn)在是狀態(tài)值為1; 注意:全部過程中,PLC內(nèi)部程序不需要做任何程序編寫。,三、PLC讀取IPC數(shù)據(jù)時: 數(shù)據(jù)通訊舉例: 例1:PLC讀取IPC內(nèi)部參數(shù)X的值。 思路:1、先將X的值轉(zhuǎn)化成數(shù)字代碼形式。 2、再講X的值發(fā)送寫入PLC內(nèi)部數(shù)據(jù)寄存器中; 3、然后PLC直接讀取這個數(shù)據(jù)寄存器的數(shù)據(jù)。 設(shè):X=2;數(shù)據(jù)寫入PLC內(nèi)部數(shù)據(jù)寄存器D0中 則DATA=X=2=0010H=31H 30H 30H 30H(低位先發(fā),高位后發(fā)); ADD=31H 30H 30H 30H; LEN=02D=30H 32H.;(D為10進制;H為。
8、16進制) CHK=CMD1+ADD+LEN+DATA+EXT; =31H+31H+30H+30H+30H+30H+32H+31H+30H+30H+30H+03H=218H 則校驗碼為:31H 38H 完整的數(shù)字代碼為:02H 31H 31H 30H 30H 30H 30H 32H 31H 30H 30H 30H 03H 31H 38H 返回值為06表示寫入成功,PLC直接讀取D0里面的數(shù)據(jù)即可。 完成PLC讀取IPC數(shù)據(jù)。 當(dāng)然這只是即時的讀取,如果需要可控性的話,需要增加自定義讀取和發(fā)送標志位,多加個數(shù)據(jù)用來表示控制字節(jié)用。,IO通訊舉例: 例2:IPC置位PLC內(nèi)部位元件Y1 思路:1、。
9、確定Y1地址(讀操作已說明); 2、就于寫入的原理,需要先讀取00A0的值; 3、將讀取的值與0010進行 寫入數(shù)據(jù):00A0表示的是Y7-Y0 8個位,需要Y1為1,寫入00000010B=02H,但是LEN為2,表示2個字節(jié),所以需要寫入0002H轉(zhuǎn)化為30H 32H 30H 30H(低位先發(fā),高位后發(fā)); 完整代碼:02H 31H 30H 30H 41H 30H 30H 32H 30H 32H 30H 30H 03H 32H 39H 返回:06寫入成功。,四、數(shù)據(jù)通訊VC代碼編寫分析實例: 例1:將IPC端3個數(shù)據(jù): X=1003.5;Y=-4500;Z=-3.1456 寫入PLC中 代。
10、碼編寫步驟: 1、將XYZ分別轉(zhuǎn)化成整數(shù),然后保存其小數(shù)位數(shù),這里將XYZ分別都乘以10的N次方,直到其不在 -32767-32767范圍后分別保存乘以10的個數(shù)在N1,N2,N3中; 從而得到 X=10035 ; N1=1; Y=-4500; N2=0; Z=31456; N3=4; 2、將X、Y、Z、N1、N2、N3分別轉(zhuǎn)換成16進制; 3、再轉(zhuǎn)化為16進制ASCII碼; 4、將得到的16進制ASCII碼按照X、N1、Y、N2、Z、N3的順序排列進counts35數(shù)組中; 5、計算校驗碼; 6、將數(shù)據(jù)counts35每個數(shù)轉(zhuǎn)化為對應(yīng)的兩個ASCII碼值保存于counts_ascii70中;。
11、 例如:“35”轉(zhuǎn)化為“3”和“5”; 7、將ASCII碼轉(zhuǎn)化為字符串代碼保存于a270,累加排列輸出; 例如:“3”的字符串代碼為48+3=51; 8、返回值06,表示寫入成功。,例2:讀取PLC內(nèi)部數(shù)據(jù)X、Y、Z的值 (讀取D0-D5的數(shù)據(jù)) 代碼編寫步驟:(思路與上例一樣) 1、將固定讀取的數(shù)字代碼發(fā)送給PLC, 固定讀取D0-D5的數(shù)字代碼為:02H 30H 31H 30H 30H 30H 30H 43H 03H 36H 37H 2、發(fā)送成功后,則有數(shù)據(jù)信息反饋;不成功則返回15; 3、將返回的窗口輸出字符串依次保存在字符串?dāng)?shù)組char s184中; 4、將數(shù)組s1轉(zhuǎn)化為數(shù)字保存在數(shù)據(jù)。
12、b中;類似:字符串?dāng)?shù)字51=“3”; 5、將數(shù)組b轉(zhuǎn)為16進制ASCII,再轉(zhuǎn)化為10進制保存在數(shù)組c中; 例如:“3”“5”=3*10+5=35;再如:35H=5D; 6、將數(shù)組c轉(zhuǎn)為2進制,方便判斷正負數(shù)和后期運算,保存在數(shù)值c2中; 7、判斷正負數(shù),設(shè)立標志位flog; 如果為負數(shù),則將其二進制取反加1后轉(zhuǎn)化為10進制整數(shù); 如果不為負數(shù),則直接轉(zhuǎn)化為10進制整數(shù); 8、得到的數(shù)分別保存在D0、D1、D2、D3、D4、D5中(IPC內(nèi)部變量區(qū)別開PLC內(nèi)部數(shù)據(jù)寄存器); 自定義運算; 可以得到 X=D0/(10D1);/D0除以10的D1次方 Y=D2/(10D3); Z=D4/(10D5。
總結(jié)
以上是生活随笔為你收集整理的三菱plc 与 计算机 通讯,PC与三菱PLC之间的RS232通讯协议的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机里libcurl.dll,Upda
- 下一篇: 裸服务器证书,使用SSH证书远程登陆你的