版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
自由口模式下PLC與計(jì)算機(jī)的通信概述本例說明如如何以自由協(xié)協(xié)議實(shí)現(xiàn)計(jì)算算機(jī)與S7-2000的通信,計(jì)計(jì)算機(jī)作為主主站,可以實(shí)實(shí)現(xiàn)對PLC從站各寄存存器的讀/寫操作。計(jì)算機(jī)通過COM口發(fā)送指令令到PLC的PORT0(或PORT1)口,PLC通過RCV接收指令,然然后對指令進(jìn)進(jìn)行譯碼,譯譯碼后調(diào)用相相應(yīng)的讀/寫子程序?qū)崒?shí)現(xiàn)指令要求求的操作,并并返回指令執(zhí)執(zhí)行的狀態(tài)信信息。通信協(xié)議在自由由口模式下,通通信協(xié)議是由由用戶定義的的。用戶可以以用梯形圖程程序調(diào)用接收收中斷、發(fā)送送中斷、發(fā)送送指令(XMT)、接受指指令(RCV)來控制通通信操作。在在自由口模式式下,通信協(xié)協(xié)議完全由梯梯形圖程序控控制。指令格式定義計(jì)算機(jī)每次發(fā)送送一個33字節(jié)長的指指令來實(shí)現(xiàn)一一次讀/寫操作,指指令格式見表表1說明:起始字符起始始字符標(biāo)志著著指令的開始始,在本例中中被定義為ASCII碼的"g",不同的PLC從站可以定定義不同的起起始字符以接接收真對該P(yáng)LC的指令。指令類型該字字節(jié)用來標(biāo)志志指令的類型型,在本例中中05H代表讀操作作,06H代表寫操作作。目標(biāo)PLC站地地址目標(biāo)PLC站地址占用用指令的B2、B3兩個字節(jié),以以十六進(jìn)制ASCII碼的格式表表示目標(biāo)PLC的站地址。目標(biāo)寄存器地址址在PLC內(nèi)部可以用4個字節(jié)來表表示一個寄存存器的地址(但但不能表示一一個位地址)。前前兩個字節(jié)表表示寄存器類類型,后兩個個字節(jié)表示寄寄存器號。0000(HH):
I寄存器區(qū)0100(HH):
Q寄存器區(qū)0200(HH):
M寄存器區(qū)0800(HH):
V寄存器區(qū)例如:IB000的地地址可表示為為
000000000(H)VB100的地地址可表示為為
080000064(H)讀/寫字節(jié)數(shù)MM當(dāng)讀命令時時,始終讀回回從目標(biāo)寄存存器開始的連連續(xù)8個字節(jié)的數(shù)數(shù)據(jù)(轉(zhuǎn)換為為十六進(jìn)制ASCII碼后占用16個字節(jié)),可可以根據(jù)自己己的需要取用用,M可以任意寫寫入。當(dāng)寫命令時時,M表示的是要要寫入數(shù)據(jù)的的十六進(jìn)制ASCII碼所占用的的字節(jié)數(shù)。例例如要寫入1個字節(jié)的數(shù)數(shù)據(jù),數(shù)據(jù)在在指令中以十十六進(jìn)制ASCII碼表示,它它將占用2個字節(jié),此此時應(yīng)向M中寫入"02"。同理,如如果要寫入5個字節(jié)的數(shù)數(shù)據(jù),M中應(yīng)寫入"0A"。要寫入的數(shù)據(jù)要寫入的數(shù)數(shù)據(jù)在指令中中以十六進(jìn)制制ASCII碼的格式表表示,占用指指令的B14-BB29共16個字節(jié)。數(shù)數(shù)據(jù)區(qū)必須填填滿,但只有有前M個字節(jié)的數(shù)數(shù)據(jù)會被寫入入目標(biāo)寄存器器。一條指令令最多可以寫寫入8個字節(jié)的數(shù)數(shù)據(jù)(此時M中應(yīng)寫入"10",代表十進(jìn)進(jìn)制的16)BCC校驗(yàn)碼在傳輸過程程中,指令有有可能受到任任何的干擾而而使原來的數(shù)數(shù)據(jù)信號發(fā)生生扭曲,此時時的指令當(dāng)然然是錯誤的,為為了偵測指令令在傳輸過程程中發(fā)生的錯錯誤,接收方方必須對指令令作進(jìn)一步的的確認(rèn)工作,以以防止錯誤的的指令被執(zhí)行行,最簡單的的方法就是使使用校驗(yàn)碼。BCC校驗(yàn)碼的方方法就是將要要傳送的字符符串的ASCII碼以字節(jié)為為單位作異或或和,并將此此異或和作為為指令的一部部分傳送出去去;同樣地,接接收方在接到到指令后,以以相同的方式式對接收到的的字符串作異異或和,并與與傳送方所送送過來的值作作對比,若其其值相等,則則代表接收到到的指令是正正確的,反之之則是錯誤的的。在本例中,bcc為指令B1到B29的異或和,BCC為bcc的十六進(jìn)制ASCII碼。bcc==B1xoorB2xorBB3xorrB4xxor……xorB29結(jié)束字符結(jié)束束字符標(biāo)志著著指令的結(jié)束束,在本例中中被定義為ASCII碼的"G",不同的PLC從站可以定定義不同的結(jié)結(jié)束字符以接接收真對該P(yáng)LC的指令。PLC在接到上上位機(jī)指令后后,將發(fā)送一一個21字節(jié)長反饋饋信息,格式式見表2說明:起始字符起始始字符標(biāo)志著著反饋信息的的開始,在本本例中被定義義為ASCII碼的"g",不同的PLC從站可以定定義不同的起起始字符,這這樣上位機(jī)可可以根據(jù)信息息的起始字符符來判斷反饋饋信息的來源源。狀態(tài)信息該字字節(jié)包含指令令執(zhí)行的狀態(tài)態(tài)信息,在本本例中01H
代表
讀取正確02H
代表
寫入正確03H
代表
BCC校驗(yàn)碼錯錯誤04H
代表
指令不合法數(shù)據(jù)區(qū)反饋信信息的B3到B18為讀指令所所要讀取的數(shù)數(shù)據(jù),以十六六進(jìn)制ASCII碼表示。BCC校驗(yàn)碼與上位機(jī)指指令中的BCC校驗(yàn)碼類似似,它是反饋饋信息B3到B18的異或和。結(jié)束字符結(jié)束束字符標(biāo)志著著反饋信息的的結(jié)束,在本本例中被定義義為26H。指令中為何要使使用ASCII碼一條指令除除包含數(shù)據(jù)外外,還包含必必要的控制字字(起始字符符、結(jié)束字符符、指令類型型等)。如果果指令中的數(shù)數(shù)據(jù)直接以其其原本的形式式傳輸,則不不可避免的會會與指令中的的控制字發(fā)生生混淆。例如本例中中,指令的起起始字符為"g",其ASCII碼值為67H,結(jié)束字符符為"G",其ASCII碼值為47H。假設(shè)要寫寫入的數(shù)據(jù)中中也有47H,并且數(shù)據(jù)據(jù)直接以其原原本的形式傳傳輸,則PLC會因?yàn)榻邮帐盏搅藬?shù)據(jù)中中的47H而停止接收收,這樣PLC接收到的指指令將是一個個不完整的非非法指令,很很可能造成PLC的誤動作。為了避免這這種情況的發(fā)發(fā)生,可以用用文本來傳送送二進(jìn)制數(shù)據(jù)據(jù)。通過以16進(jìn)制ASCII碼的格式描描述數(shù)據(jù),每每個二進(jìn)制的的字節(jié)都可以以表示成一對對ASCII編碼,這對對編碼表示這這個字節(jié)的兩兩個16進(jìn)制字符。這這種格式可以以表示任何的的數(shù)值,僅僅僅使用ASCII代碼的30H到39H(表示0到9)和41H到46H(表示A到F)。ASCII碼的其余部部分可以用作作控制字(起起始標(biāo)志、結(jié)結(jié)束標(biāo)志、指指令類型等)。這這樣,數(shù)據(jù)中中的47H以ASCII碼的形式進(jìn)進(jìn)行傳送就變變成了34H337H兩個字節(jié),從從而避免了PLC因接收到數(shù)數(shù)據(jù)中的47H而停止接收收的錯誤。表1上位機(jī)指指令格式Byte0起始字符Byte1指令類型(讀//寫)Byte2目標(biāo)PLC站地地址(十六進(jìn)進(jìn)制ASCII碼)Byte3Byte4目標(biāo)寄存器地址址(十六進(jìn)制制ASCII碼)Byte5Byte6Byte7Byte8Byte9Byte10Byte11Byte12讀/寫字節(jié)數(shù)MM(十六進(jìn)制ASCII碼)Byte13Byte14要寫入的數(shù)據(jù)(十十六進(jìn)制ASCII碼)Byte15Byte16Byte17Byte18Byte19Byte20Byte21Byte22Byte23Byte24Byte25Byte26Byte27Byte28Byte29Byte30BCC校驗(yàn)碼(十十六進(jìn)制ASCII碼)Byte31Byte32結(jié)束字符表2反饋信息息格式Byte0起始字符Byte1狀態(tài)信息Byte2數(shù)據(jù)區(qū)(十六進(jìn)進(jìn)制ASCII碼)Byte3Byte4Byte5Byte6Byte7Byte8Byte9Byte10Byte11Byte12Byte13Byte14Byte15Byte16Byte17Byte18BCC校驗(yàn)碼(十十六進(jìn)制ASCII碼)Byte19Byte20結(jié)束字符PLC程序執(zhí)行行過程PLC在第一次掃掃描時執(zhí)行初初始化子程序序,對端口及及RCV指令進(jìn)行初初始化。初始始化完成后,運(yùn)運(yùn)行RCV指令使端口口處于接受狀狀態(tài)。RCV會將以"g"開頭"G"結(jié)尾的指令令保存到接收收緩沖區(qū),并并同時產(chǎn)生接接收完成中斷斷。RCVccompleete中斷服務(wù)程程序用來處理理接收完成中中斷事件,它它會將接收緩緩沖區(qū)中的十十六進(jìn)制ASCII碼還原成數(shù)數(shù)據(jù)并保存,同同時置位Veriffy子程序的觸觸發(fā)條件(M0.1)。Veriify子程序首先先復(fù)位本身的的觸發(fā)條件以以防止子程序序被重復(fù)調(diào)用用,然后求出出接收緩沖區(qū)區(qū)中指令的BCC校驗(yàn)碼并與與指令中的BCC校驗(yàn)碼進(jìn)行行比對。如果果相等則置BCC碼校驗(yàn)正確確的標(biāo)志位(M0.0)為1;如果指令令格式正確(指指令的結(jié)束標(biāo)標(biāo)志在接收緩緩沖區(qū)中特定定的位置VB133)而BCC碼不相等,則則發(fā)送代表BCC校驗(yàn)碼錯誤誤的反饋信息息;如果指令令格式不正確確(VB133中不是指令令的結(jié)束標(biāo)志志),則返回回代表指令格格式錯誤的反反饋信息。Read子程序的觸觸發(fā)條件為::指令中的站站地址與本機(jī)機(jī)站地址相符符、指令類型型為讀指令、BCC檢驗(yàn)碼正確確。當(dāng)條件滿滿足時,Read子程序被執(zhí)執(zhí)行。Read子程序首先先禁止RCV,然后將指指令所要讀取取的數(shù)據(jù)轉(zhuǎn)換換成十六進(jìn)制ASCII碼并寫入發(fā)發(fā)送緩沖區(qū)、計(jì)計(jì)算BCC檢驗(yàn)碼、最最后發(fā)送反饋饋信息。Writte子程序的觸觸發(fā)條件為::指令中的站站地址與本機(jī)機(jī)站地址相符符、指令類型型為寫指令、BCC檢驗(yàn)碼正確確。當(dāng)條件滿滿足時,Write子程序被執(zhí)執(zhí)行。Write子程序首先先禁止RCV,然后將指指令中的數(shù)據(jù)據(jù)寫入目標(biāo)寄寄存器,最后后發(fā)送代表寫寫入正確的反反饋信息。PLC每接到一條條指令后都會會發(fā)送一條反反饋信息,當(dāng)當(dāng)反饋信息發(fā)發(fā)送完成時,會會產(chǎn)生發(fā)送完完成中斷,XMTcoomplette中斷服務(wù)程程序用來處理理發(fā)送完成中中斷事件。在在XMTcoomplette中斷服務(wù)程程序中所要執(zhí)執(zhí)行的操作包包括:復(fù)位BCC校驗(yàn)碼正確確的標(biāo)志位(M0.0);允許RCV;bcc碼寄存器清清零;重新裝裝入用于計(jì)算算BCC校驗(yàn)碼的地地址指針;接接收緩沖區(qū)中中存放指令結(jié)結(jié)束字符的字字節(jié)VB133清零(用來來判斷下一條條指令格式是是否正確)。PLC寄存器地地址分配此程程序占用PLC寄存器的VB1000-VB1999,內(nèi)部繼電電器占用M0.0和M0.1。寄存器地地址分配見表表3、表4、表5、表6。表3接收緩沖沖區(qū)VB100字符數(shù)
VB101起始字符Byte0VB102指令類型(讀//寫)Byte1VB103目標(biāo)PLC站地地址(十六進(jìn)進(jìn)制ASCII碼)Byte2VB104Byte3VB105目標(biāo)寄存器地址址(十六進(jìn)制制ASCII碼)Byte4VB106Byte5VB107Byte6VB108Byte7VB109Byte8VB110Byte9VB111Byte10VB112Byte11VB113讀/寫字節(jié)數(shù)MM(十六進(jìn)制ASCII碼)Byte12VB114Byte13VB115要寫入的數(shù)據(jù)(十十六進(jìn)制ASCII碼)Byte14VB116Byte15VB117Byte16VB118Byte17VB119Byte18VB120Byte19VB121Byte20VB122Byte21VB123Byte22VB124Byte23VB125Byte24VB126Byte25VB127Byte26VB128Byte27VB129Byte28VB130Byte29VB131BCC校驗(yàn)碼(十十六進(jìn)制ASCII碼)Byte30VB132Byte31VB133結(jié)束字符Byte32表4譯碼區(qū)VB134PLC站號(AATHfrromVBB103-VVB104)VB135合成為VD1335作為目標(biāo)寄寄存器的地址址指針(ATHffromVVB105--VB1122)VB136VB137VB138VB139讀/寫字節(jié)數(shù)(ATHffromVVB113--VB1144)VB140bcc碼(ATTHfroomVB1131-VBB132)VB141未使用VB142VB143VB144VB145VB146VB147VB148VB149和成為VD1449作為VB102的地址指針針用以計(jì)算BCC校驗(yàn)碼VB150VB151VB152表5發(fā)送緩沖沖區(qū)VB153字符數(shù)
VB154起始字符Byte0VB155狀態(tài)信息Byte1VB156數(shù)據(jù)區(qū)(十六進(jìn)進(jìn)制ASCII碼)Byte2VB157Byte3VB158Byte4VB159Byte5VB160Byte6VB161Byte7VB162Byte8VB163Byte9VB164Byte10VB165Byte11VB166Byte12VB167Byte13VB168Byte14VB169Byte15VB170Byte16VB171Byte17VB172BCC校驗(yàn)碼(十十六進(jìn)制ASCII碼)Byte18VB173Byte19VB174結(jié)束字符Byte20表6其它VB175合成為VW1775作為接收時時計(jì)算bcc碼循環(huán)的INDXVB176VB177合成為VW1777作為發(fā)送時時計(jì)算bcc碼循環(huán)的INDXVB178VB179接收數(shù)據(jù)的bccc碼VB180發(fā)送數(shù)據(jù)的bccc碼VB181合成為VD1881作為VB156的地址指針針(計(jì)算發(fā)送送反饋信息的的bcc碼時使用)VB182VB183VB184VB185至VVB198未使用VB199本機(jī)站號程序清單主程序:NETWORKK1LDSM0.1//第一次掃描描調(diào)用初始化化子程序CALLinitiallize
NETWORKK2LDB=VB134,VB1999//指令中的站站地址與本機(jī)機(jī)站地址相符符AB=VB102,5//指令類型為為讀指令A(yù)M0.0//BCC碼校校驗(yàn)正確CALLRead//調(diào)用讀子程程序
NETWORKK3LDB=VB134,VB1999//指令中的站站地址與本機(jī)機(jī)站地址相符符AB=VB102,6//指令類型為為寫指令A(yù)M0.0//BCC碼校校驗(yàn)正確CALLWrite//調(diào)用寫子程程序
NETWORKK4LDM0.1//指令接收完完成后調(diào)用BCC碼校驗(yàn)子程程序CALLVerify
NETWORKK5LDSM4.5//當(dāng)端口空閑閑時啟動RCVRCVVB100,0
Read子程序序:NETWORKK1LDSM0.0//停止端口00的接收RSM87.7,,1
RM0.0,11
RCVVB100,0
NETWORKK2LDSM0.0//將數(shù)據(jù)寫入入發(fā)送緩沖區(qū)區(qū)MOVB103,VBB154
MOVB1,VB1555
HTA*VD135,,VB1556,166
MOVB26,VB1174
MOVB21,VB1153
NETWORKK3LDSM0.0//計(jì)算BCCC校驗(yàn)碼FORVW177,+1,++16
NETWORKK4LDSM0.0
XORB*VD181,,VB1880
NETWORKK5LDSM0.0
INCDVD181
NETWORKK6NEXT
NETWORKK7LDSM0.0
HTAVB180,VB1722,2//BCC校驗(yàn)驗(yàn)碼寫入發(fā)送送緩沖區(qū)
NETWORKK8LDSM4.5//發(fā)送反饋信信息XMTVB153,0
Write子程程序:NETWORKK1LDSM0.0//停止端口00的接收RSM87.7,,1
RM0.0,11
RCVVB100,0
NETWORKK2LDSM0.0//裝入要寫如如數(shù)據(jù)源的地地址指針MOVD&VB115,,VD1445
NETWORKK3LDSM0.0//寫入數(shù)據(jù)ATH*VD145,,*VD1135,VVB139
NETWORKK4LDSM0.0//指令執(zhí)行的的反饋信息寫寫入發(fā)送緩沖沖區(qū)MOVB21,VB1153
MOVB103,VBB154
MOVB2,VB1555
MOVB26,VB1174
NETWORKK5LDSM4.5//發(fā)送指令執(zhí)執(zhí)行的反饋信信息XMTVB153,0
Verify子子程序:NETWORKK1LDSM0.0
RM0.1,11//復(fù)位verrify子程序的執(zhí)執(zhí)行條件
NETWORKK2LDSM0.0//計(jì)算BCCC碼FORVW175,+1,++29
NETWORKK3LDSM0.0
XORB*VD149,,VB1779
NETWORKK4LDSM0.0
INCDVD149
NETWORKK5NEXT
NETWORKK6LDB=VB179,VB1400//當(dāng)BCC碼碼校驗(yàn)正確時時,M0.0置1AB=VB133,71
SM0.0,11
NETWORKK7LDB=VB133,71//BCC碼錯錯誤時發(fā)送反反饋信息AB<>VB179,VB1400
MOVB21,VB1153
MOVB103,VBB154
MOVB3,VB1555
MOVB26,VB1174
RSM87.7,,1
RCVVB100,0
XMTVB153,0
NETWORKK8LDB<>VB133,71//指令格式錯錯誤或RCV超時時發(fā)送送反饋信息MOVB21,VB1153
MOVB103,VBB154
MOVB4,VB1555
MOVB26,VB1174
RSM87.7,,1
RCVVB100,0
XMTVB153,0
Initiallize子程序:NETWORKK1LDSM0.0
MOVB9,SMB330//0口"96600,N,,8,1"
NETWORKK2LDSM0.0//RCV指令令初始化MOVB16#EC,SMB877
MOVB103,SMMB88
MOVB71,SMBB89
MOVB+1000,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 招標(biāo)投標(biāo)瓷磚供應(yīng)合同管理要點(diǎn)
- 城市建筑垃圾運(yùn)輸合同協(xié)議
- 正規(guī)采購合同的格式規(guī)范
- 支模工程合作協(xié)議模板
- 冷鏈倉儲物流合作
- 城市環(huán)境保護(hù)測量服務(wù)合同
- 網(wǎng)絡(luò)音樂技術(shù)服務(wù)合同
- 招標(biāo)文件疑問詢問信
- 無紡布買賣合同模板
- 勞動合同補(bǔ)充協(xié)議的修改與解除
- 移動通信期末考試卷AB卷及答案
- GB/T 6109.20-2008漆包圓繞組線第20部分:200級聚酰胺酰亞胺復(fù)合聚酯或聚酯亞胺漆包銅圓線
- 電力安全工作規(guī)程(配電部分)
- GB/T 20831-2007電工鋼片(帶)層間絕緣涂層溫度特性測試方法
- GB/T 18114.10-2010稀土精礦化學(xué)分析方法第10部分:水分的測定重量法
- GB/T 17435-1998船用電解海水防污裝置設(shè)計(jì)和安裝
- GB/T 12513-2006鑲玻璃構(gòu)件耐火試驗(yàn)方法
- FZ/T 10001-2016轉(zhuǎn)杯紡紗捻度的測定退捻加捻法
- 導(dǎo)游基礎(chǔ)知識 第一章 云南歷史
- 車險(xiǎn)理賠部組織架構(gòu)及崗位設(shè)置
- 三年級上冊數(shù)學(xué)課件-四邊形-人教版
評論
0/150
提交評論