自由口模式下LC與計(jì)算機(jī)的通信_第1頁
自由口模式下LC與計(jì)算機(jī)的通信_第2頁
自由口模式下LC與計(jì)算機(jī)的通信_第3頁
自由口模式下LC與計(jì)算機(jī)的通信_第4頁
自由口模式下LC與計(jì)算機(jī)的通信_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論