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










