松下PLC通過MODBUS總線控制LEXIUM 05伺服
MODBUS部分功能碼
功能碼定 義操 作(二進(jìn)制)
02讀開關(guān)量輸入讀取一路或多路開關(guān)量狀態(tài)輸入數(shù)據(jù)
01讀開關(guān)量輸出讀取一路或多路開關(guān)量輸出狀態(tài)數(shù)據(jù)
03讀寄存器數(shù)據(jù)讀取一個(gè)或多個(gè)寄存器的數(shù)據(jù)
05寫開關(guān)量輸出控制一路繼電器“合/分”輸出
06寫單路寄存器把一組二進(jìn)制數(shù)據(jù)寫入單個(gè)寄存器
10寫多路寄存器把多組二進(jìn)制數(shù)據(jù)寫入多個(gè)寄存器
1.2 CRC校驗(yàn)的實(shí)現(xiàn)
MODBUS通信的RTU模式中,規(guī)定信息幀的最后兩個(gè)字節(jié)用于傳遞CRC(Cyclic Redundancy Check,循環(huán)冗余校驗(yàn))碼。發(fā)送方將信息幀中地址域、功能碼、數(shù)據(jù)域的所有字節(jié)按規(guī)定的方式進(jìn)行位移并進(jìn)行XOR(異或)計(jì)算,即可得到2字節(jié)的CRC碼,并把包含CRC校驗(yàn)碼的信息幀作為一連續(xù)的流進(jìn)行傳輸。接收方在收到該信息幀時(shí)按同樣的方式進(jìn)行計(jì)算,并將結(jié)果同收到的CRC碼的雙字節(jié)比較,如果一致就認(rèn)為通信正確,否則認(rèn)為通信有誤,從站將發(fā)送CRC錯(cuò)誤應(yīng)答。
RTU模式一般采用CRC-16冗余校驗(yàn)方法,CRC-16的校驗(yàn)碼為16位(2字節(jié)),其中低字節(jié)在前,高字節(jié)在后。實(shí)現(xiàn)CRC校驗(yàn)有兩種方法:根據(jù)CRC校驗(yàn)的定義公式進(jìn)行計(jì)算,或者在程序中建立CRC校驗(yàn)值表。在程序中使用前者更容易實(shí)現(xiàn),這里需要使用CRC生成多項(xiàng)式X16+X15+X2+1。該多項(xiàng)式對(duì)應(yīng)的碼組系數(shù)為18005H(16進(jìn)制),去除最高位,對(duì)應(yīng)的16位余數(shù)為8005H,即為CRC-16常數(shù)。CRC-16校驗(yàn)過程如下:將CRC寄存器的每一位預(yù)置為1;把該寄存器值與8bit的信息幀數(shù)據(jù)進(jìn)行異或,結(jié)果存于該寄存器;對(duì)CRC寄存器從高到低進(jìn)行移位,在最高位(MSB)的位置補(bǔ)零,而最低位(LSB,移位后已經(jīng)被移出CRC寄存器)如果為1,則把寄存器與CRC-16常數(shù)進(jìn)行異或,否則如果LSB為零,則無需進(jìn)行異或。重復(fù)上述的由高至低的移位8次,第一個(gè)8bit數(shù)據(jù)處理完畢,用此時(shí)寄存器的值與下一個(gè)8bit數(shù)據(jù)異或并進(jìn)行如前一樣的8次移位。所有的字符處理完成后CRC寄存器內(nèi)的值即為最終的CRC值。CRC添加到消息中時(shí),先加入低字節(jié),然后高字節(jié)。
1.3 鏈路特征
MODBUS標(biāo)準(zhǔn)的物理層可以采用RS-232串行通信方式,但在長距離通信中常采用RS-422或RS-485代替。在多點(diǎn)通信情況下只采用RS-485方式,所以RTU模式下的MODBUS系統(tǒng)采用屏蔽雙絞線,通信距離可達(dá)1000m。一條總線上最多可配置31個(gè)從站設(shè)備。傳輸線上的信息交換是半雙工的,即同時(shí)只能有一臺(tái)設(shè)備允許發(fā)送信息,主站在發(fā)送下一條指令之前等待從站回應(yīng),從而避免了線路的沖突。
RTU模式的傳輸格式是1個(gè)數(shù)據(jù)位,2個(gè)停止位,沒有奇偶校驗(yàn)位。通信數(shù)據(jù)安全由控制參數(shù)CRC-16碼保證。RTU接收設(shè)備依靠接收字符間經(jīng)過的時(shí)間判斷一幀的開始,如果經(jīng)過3個(gè)半的字符時(shí)間后仍然沒有新的字符或者沒有完成幀,接收設(shè)備就會(huì)放棄該幀,并設(shè)下一個(gè)字符為新一幀的開始。
2 松下PLC MODBUS控制的實(shí)現(xiàn)
松下PLC支持modbus協(xié)議,只需要在選項(xiàng)、PLC系統(tǒng)寄存器設(shè)置、COM1口設(shè)置中站號(hào)設(shè)成1,通訊模式設(shè)為MODBUS RTU,通訊速率和通訊格式與05驅(qū)動(dòng)器的設(shè)置保持一致。設(shè)置完成后可通過F145 SEND指令實(shí)現(xiàn)與05的通訊。
例:
F0 MV , H2 ,DT10 (發(fā)送2個(gè)字節(jié))
F0 MV , H1002 ,DT11 (通過1號(hào)COM口向2號(hào)站發(fā)數(shù)據(jù))
F145 SEND, DT10 ,DT4 ,DT0 ,K1282
(把DT4,DT5的兩個(gè)字節(jié)通過COM1發(fā)送到2號(hào)站的K1282地址)










