來源:http://www.liaomiao-automation.com/

上海了淼Modbus-TCP編碼器支持五種通訊方式:Modbus-TCP、TCP、UDP、Web網頁設置、RS485-ModbusRTU。
了淼編碼器網絡參數默認IP地址為192.168.0.32,默認子網掩碼255.255.255.0,默認網關地址為192.168.0.1。編碼器使用以太網通訊周期最短能做到2ms完成數據輸出,使用西門子PLC做主站連接時,PLC更新數據時間能做到10ms左右更新數據,此時間參數與PLC編程時的輪詢方式有關。
1.Modbus-TCP通訊介紹
上海了淼Modbus-TCP編碼器可以使用Modbus-TCP協議進行通訊,主從問詢的方式讀取編碼器位置值、轉速值、和時間戳等編碼器數據。
Modbus-TCP是基于以太網TCP/IP的modbus協議,可以使MODBUS-RTU協議運行于以太網。MODBUS-TCP使用TCP/IP以太網在站點間傳送MODBUS報文,MODBUS-TCP結合了以太網物理網絡和網絡標準TCP/IP以及以MODBUS作為應用協議標準的數據表示方法。MODBUS-TCP通信報文包在以太網TCP/IP數據包中。與傳統的串口方式,MODBUS-TCP插入一個標準的MODBUS報文到TCP報文中,不再帶有數據校驗和地址。

上海了淼Modbus-TCP編碼器默認IP地址為192.168.0.32,默認子網掩碼255.255.255.0,默認網關地址為192.168.0.1。用于Modbus-TCP通訊端口號為502,編碼器單元ID為32,編碼器作為TCP服務器,PLC等主站作為TCP客戶機,以C/S方式通訊。
(1)Modbus-TCP協議簡介
編碼器使用標準的Modbus-TCP協議,使用0x03(讀保持寄存器)功能碼來讀取編碼器內部寄存器數據。可以通過讀取指令一次性讀取全部的20個寄存器。單個寄存器數據格式為16進制數據,有些編碼器參數需要2個寄存合成數據,舉例:編碼器的位置值是一個32bit無符號數據,寄存器0和寄存器1這兩個來表示編碼器位置值數據,寄存器0為位置值高16位數據,寄存器1為位置值低16位數據。
編碼器使用0x06(寫單個寄存器)和0x10(寫入多個寄存器)功能碼來寫入相關編碼器參數,舉例:寫入旋轉方向寄存器10時需要用0x06(寫單個寄存器)功能碼;寫入預設值參數時需要用0x10(寫入多個寄存器)功能碼。
請注意:寫入指令時,編碼器需要將數據寫入flash內存中,flash內存擦寫次數100萬次,頻繁寫入會影響編碼器壽命。
(2)Modbus-TCP寄存器介紹
寄存器地址/
西門子PLC地址
|
數據
范圍
|
讀/寫
方式
|
功能說明
|
0/400001
|
Bit16-31
|
只讀
|
位置值:無符號32位,編碼器當前的位置數據。單位:脈沖步數。
舉例:讀取編碼器位置值為164005,則編碼器當前圈數為20圈(圈數=164005/8192(默認單圈分辨率)取整),圈內脈沖數為165(圈內數=164005%8192(默認單圈分辨率)取余)。
|
1/400002
|
Bit0-15
|
2/400003
|
Bit16-31
|
只讀
|
轉速值:有符號32位,編碼器當前轉速,轉速含小數部分擴大10000倍,單位為rpm。
舉例:讀取編碼器轉速數值為 -30607845,則當前轉速=-30607845/10000=-3060.7845rpm。
|
3/400004
|
Bit0-15
|
4/400005
|
Bit16-31
|
只讀
|
時間戳:無符號32位,時間標記,編碼器內部生成,單位為ms,可以用來做位置值更新標記。
|
5/400006
|
Bit0-15
|
6/400007
|
Bit0-15
|
只讀
|
故障代碼:無符號16位,內部檢測的故障碼。
|
7/400008
|
Bit16-31
|
只讀
|
物理量程:無符號32位,編碼器所能檢測到最大量程范圍,由編碼器硬件決定,無法修改;數值=物理極限圈數*單圈分辨率,當圈數=65536圈,單圈分辨率=65536步時,此數值為4294967296。
|
8/400009
|
Bit0-15
|
9/400010
|
Bit0-15
|
只讀
|
預留
|
10/400011
|
Bit0-15
|
讀/寫
|
旋轉方向:無符號16位,0=CW順時針旋轉數值增加;1=CCW逆時針旋轉數值增加
|
11/400012
|
Bit16-31
|
讀/寫
|
單圈分辨率:無符號32位,設置圈內分辨率,默認8192步,可設置:256/512/1024/2048/4096/8192/
16384/32768/65536
|
12/400013
|
Bit0-15
|
13/400014
|
Bit16-31
|
讀/寫
|
縮放量程:無符號32位,在物理量程范圍內,用于可以指定縮放量程,舉例:
若物理量程=3355432(4096圈*圈內分辨率8192),
設置縮放量程1024圈時將數據8388608(1024圈*圈內分辨率8192)寫入即可。設置預防圈數只能為2的n次方。
|
14/400015
|
Bit0-15
|
15/400016
|
Bit16-31
|
讀/寫
|
預設值:無符號32位,用來指定編碼器當前位置,寫入數值不能超過縮放量程。
|
16/400017
|
Bit0-15
|
17/400018
|
Bit0-15
|
只寫
|
重啟:寫入數據1時重啟編碼器。
|
18/400019
|
Bit0-15
|
只讀
|
編碼器軟件版本號:無符號16位
|
19/400020
|
Bit0-15
|
只讀
|
內部溫度:有符號16位 ,編碼器內部溫度℃
|
|
|
|
|
2.編碼器TCP通訊
上海了淼Modbus-TCP編碼器可以通過以太網TCP/IP協議與控制主機進行通訊,雙方使用ASCII格式的數據報文。
(1)編碼器TCP簡介
上海了淼Modbus-TCP編碼器默認IP地址為192.168.0.32,默認子網掩碼255.255.255.0,默認網關地址為192.168.0.1。用于TCP/IP通訊端口號為6000。PC等控制器與編碼器要處于同一個局域網內,可以使用Windos電腦的DOS命令提示符的ping指令檢查電腦與編碼器之間的網絡連接。可以使用網絡調試助手來發送TCP指令測試編碼器。
(2)編碼器TCP指令定義
指令
|
說明
|
RUN!
|
命令編碼器輸出一次位置信息,按照設定格式輸出編碼器位置信息,可以修改編碼器輸出位置信息格式,按照ASCII輸出或者BIN二進制輸出。
|
GET_Position
|
讀取位置值,舉例POSITION=23570
|
GET_Velocity
|
讀取編碼器轉速,擴大10000倍,舉例VELOCITY=-933737
|
GET_FaultCode
|
讀取故障碼,沒有故障時為0。舉例FaultCode=0x0000
|
GET_TotalPhysical
|
讀取編碼器物理總量程,舉例TotalPhysical=536870912
|
GET_CountingDir
|
讀取旋轉方向,
CW=順時針(默認);CCW=逆時針。舉例CountingDir=CW
|
GET_SingleResolution
|
讀取單圈分辨率,舉例SingleResolution=8192。
|
GET_UserTotalScaledRes
|
讀取用戶縮放總量程,舉例UserTotalScaledRes=536870912
|
GET_SoftVer
|
讀取編碼器版本號,舉例SoftVer=19.4
|
GET_Temperature
|
讀取編碼器內部溫度,單位℃,舉例Temperature=36
|
GET_CycleTime
|
讀取自動循環時間,單位ms,默認10ms,當發送模式為周期發送時生效。舉例CycleTime=10
|
GET_SendMode
|
讀取編碼器發送模式,
Polled=主從問答模式(默認),
Cyclic = 自動周期發送模式,
ChangeState = 檢測到位置值改變時發送一次。
舉例SendMode=Polled
|
GET_OutputMode
|
讀取輸出模式,
PositionPlus:全部輸出數據(默認),位置值+轉速值+時間戳。
Position:簡單輸出數據,位置值。
舉例OutputMode=PositionPlus
|
GET_OutputType
|
讀取輸出數據類型,
ASCII :POSITION=18613 VELOCITY=-18 TIMESTAMP=6521005,(默認)
ASCII_SHORT:18613 -18 6521005,
BINARY:00 00 53 DB 00 00 00 09 00 80 6A C8 輸出二進制格式數據。
舉例OutputType=ASCII
|
GET_IP
|
讀取編碼器IP地址,舉例IP=192.168.0.32
|
GET_NetMask
|
讀取編碼器子網掩碼,舉例NetMask=255.255.255.0
|
GET_Gateway
|
讀取編碼器網關地址,舉例Gateway=192.168.0.1
|
GET_MAC
|
讀取編碼器MAC地址,舉例MAC=00:17:BC:10:00:01
|
SET_CountingDir=
|
設置旋轉方向,
順時針:SET_CountingDir=CW;
逆時針:SET_CountingDir=CCW
|
SET_SingleResolution=
|
設置單圈分辨率,
數據范圍:256,512,1024,2048,4096,8192(默認),16384,32768,65536
舉例SET_SingleResolution=8192
|
SET_UserTotalScaledRes=
|
設置縮放總量程,縮放總量程不能大于物理總量程,設置總量程圈數只能為2的指數倍,如256圈編碼器,設置縮放量程為16圈,
16圈*8192單圈分辨率=131072,SET_UserTotalScaledRes=131072
|
SET_PresetValue=
|
設置預設值,指定編碼器當前位置值,
舉例設置當前位置為0,SET_PresetValue=0
|
SET_SendMode=
|
設置發送模式,
Polled=主從問答模式,
Cyclic = 自動周期發送模式,
ChangeState = 檢測到位置值改變時發送一次。
舉例SET_SendMode=Polled
|
SET_OutputMode=
|
設置輸出模式,
PositionPlus:全部輸出數據,位置值+轉速值+時間戳。
Position:簡單輸出數據,位置值。
舉例SET_OutputMode=PositionPlus
|
SET_OutputType=
|
設置輸出格式,
ASCII :POSITION=18613 VELOCITY=-18 TIMESTAMP=6521005,
ASCII_SHORT:18613 -18 6521005,
BINARY:00 00 53 DB 00 00 00 09 00 80 6A C8 輸出二進制格式數據。
舉例SET_OutputType=ASCII
|
SET_CycleTime=
|
設置周期發送時間,單位ms,
舉例SET_CycleTime=100
|
SET_IP=
|
設置IP地址,
舉例SET_IP=192.168.0.32,重啟生效
|
SET_NetMask=
|
設置子網掩碼地址,
舉例SET_NetMask=255.255.255.0,重啟生效
|
SET_Gateway=
|
設置網關地址,
舉例SET_Gateway=192.168.0.1,重啟生效
|
Reboot
|
設置編碼器重啟,舉例Reboot
|
|
|
(3)編碼器TCP指令異常應答
響應指令
|
|
ERROR:
|
發送錯誤的指令,指令格式不正確,設置參數不合理。
舉例:
發→◇SET_CountingDir=CWCCC
收←◆ERROR:CWCCC
|
SUCCESS:
|
設置參數正確。
舉例:
發→◇SET_CountingDir=CW
收←◆SUCCESS:CW
|
3.UDP通訊
上海了淼Modbus-TCP編碼器可以通過以太網UDP協議與控制主機進行通訊,UDP是不可靠連接,因此只能使用主從問詢方式來應答,不支持自動周期發送和設置編碼器參數。
(1)UDP通訊設置
上海了淼Modbus-TCP編碼器默認IP地址為192.168.0.32,默認子網掩碼255.255.255.0,默認網關地址為192.168.0.1。用于UDP通訊端口號為5000。
(2)UDP通訊指令定義
指令
|
說明
|
RUN!
|
命令編碼器輸出一次位置信息,按照設定格式輸出編碼器位置信息,可以修改編碼器輸出位置信息格式,按照ASCII輸出或者BIN二進制輸出。
|
GET_Position
|
讀取位置值,舉例POSITION=23570
|
GET_Velocity
|
讀取編碼器轉速,擴大10000倍,舉例VELOCITY=-933737
|
GET_FaultCode
|
讀取故障碼,沒有故障時為0。舉例FaultCode=0x0000
|
GET_TotalPhysical
|
讀取編碼器物理總量程,舉例TotalPhysical=536870912
|
GET_CountingDir
|
讀取旋轉方向,
CW=順時針(默認);CCW=逆時針。舉例CountingDir=CW
|
GET_SingleResolution
|
讀取單圈分辨率,舉例SingleResolution=8192。
|
GET_UserTotalScaledRes
|
讀取用戶縮放總量程,舉例UserTotalScaledRes=536870912
|
GET_SoftVer
|
讀取編碼器版本號,舉例SoftVer=19.4
|
GET_Temperature
|
讀取編碼器內部溫度,單位℃,舉例Temperature=36
|
GET_CycleTime
|
讀取自動循環時間,單位ms,默認10ms,當發送模式為周期發送時生效。舉例CycleTime=10
|
GET_SendMode
|
讀取編碼器發送模式,
Polled=主從問答模式(默認),
Cyclic = 自動周期發送模式,
ChangeState = 檢測到位置值改變時發送一次。
舉例SendMode=Polled
|
GET_OutputMode
|
讀取輸出模式,
PositionPlus:全部輸出數據(默認),位置值+轉速值+時間戳。
Position:簡單輸出數據,位置值。
舉例OutputMode=PositionPlus
|
GET_OutputType
|
讀取輸出數據類型,
ASCII :POSITION=18613 VELOCITY=-18 TIMESTAMP=6521005,(默認)
ASCII_SHORT:18613 -18 6521005,
BINARY:00 00 53 DB 00 00 00 09 00 80 6A C8 輸出二進制格式數據。
舉例OutputType=ASCII
|
GET_IP
|
讀取編碼器IP地址,舉例IP=192.168.0.32
|
GET_NetMask
|
讀取編碼器子網掩碼,舉例NetMask=255.255.255.0
|
GET_Gateway
|
讀取編碼器網關地址,舉例Gateway=192.168.0.1
|
GET_MAC
|
讀取編碼器MAC地址,舉例MAC=00:17:BC:10:00:01
|
4.Web網絡參數設置
上海了淼Modbus-TCP編碼器可以通過Web網頁方式設置編碼器網絡參數,網絡參數修改后重啟編碼器開始生效。
第一步:編碼器與電腦在同一個局域網段內。
第二步:在瀏覽器地址欄中輸入編碼器地址http://192.168.0.32(默認出廠IP地址)
第三步:在打開的頁面中核對MAC地址與編碼器是否一致,然后修改IP地址、子網掩碼、網關地址。確認無誤后點擊保存并重啟。新網絡參數生效。
5.RS485-ModbusRTU通訊
上海了淼Modbus-TCP編碼器可以通過RS485接口使用Modbus-RTU協議讀取和設置編碼器參數。當以太網網絡參數無法找回時,可以通過RS485通訊將以太網參數重置為出廠值。
(1)RS485通訊參數
Modbus-RTU格式《十六進制》
設備默認地址為32(0x20) (可以軟件修改)
默認串口參數:
波特率:19200bps
數據位:8位
校驗位:無校驗
控制流:無控制流
停止位:1位
(2)Modbus-RTU寄存器定義
地址(HEX)/西門子PLC地址
|
功能
|
讀/寫
|
參數范圍
|
說明
|
默認值
|
0x0000
/40001
|
軟件版本
|
R
|
0~65535
|
軟件版本號
|
|
0x0001
/40002
|
本機站號
|
R/W
|
0~255
|
本機通訊地址,
|
32(0x20)
|
0x0002
/40003
|
多圈位置
|
R
|
0~65535
|
最大為65535,16進制無符號
|
|
0x0003
/40004
|
單圈位置
|
R
|
0~65535
|
單圈角度,16進制無符號
|
|
0x0004
/40005
|
旋轉轉速
|
R
|
-32768~+32767
|
單位:轉/分鐘,16進制有符號
|
|
0x0005
/40006
|
通訊波特率
|
R/W
|
19200
|
通訊波特率
1200,2400,4800,9600,19200,38400,11520,25600
11520表示115200bps
25600表示256000bps
|
19200
|
0x0006
/40007
|
設置旋轉方向
|
R/W
|
0~1
|
0:逆時針角度增加
1:順時針角度增加
|
1
|
0x0007
/40008
|
設置零點
|
W
|
0~1
|
1:寫入1 將當前位置設為0圈0°;
2:寫入2 將預設值生效一次。
注意:設置零點時編碼器需要保持靜止,不可頻繁設置零點,影響編碼器使用壽命。
|
0
|
0x0008
/40009
|
傳感器內部溫度
|
R
|
-5500~+17500
|
溫度數據擴大100倍
|
|
0x0009
/40010
|
故障代碼
|
R
|
0~65535
|
|
0:編碼器無故障
|
0x000A
/40011
|
寄存器
|
R
|
|
|
|
0x000B
/40012
|
預留
|
R/W
|
0~1
|
|
1
|
0x000C
/40013
|
機械圈數
|
R
|
0~18
|
機械可識別圈數,是該編碼器能夠識別的最大圈數。
如0表示20,1圈即單圈編碼器。
18表示218,262144圈。
|
|
0x000D
/40014
|
使用圈數
|
R/W
|
0~機械圈數
|
設置實際使用多圈位數,如12表示212,,4096圈。
最大使用圈數為機械圈數。
|
機械圈數
|
0x000E
/40015
|
設置單圈分辨率
|
R/W
|
8~16
|
1、設置單圈分辨率,13表示213,13位分辨率;
|
13
|
0x000F
/40016
|
設置當前機械位置圈數
|
W
|
0~65535
|
設置當前機械位置的多圈值,該值小于使用圈數,例如使用圈數為4096圈,此處設置范圍0~4095
|
預設值
|
0x0010
/40017
|
設置當前機械位置角度值
|
W
|
0~65535
|
設置當前機械位置的單圈角度值,該值小于單圈最大值,例如使用單圈分辨率為8192,此處設置范圍0~8191
|
預設值
|
0x0011
/40018
|
以太網參數恢復出廠值
|
W/R
|
10
|
寫入數據10,將以太網參數重置為出廠值,
IP地址:192.168.0.32,
子網掩碼:255.255.255.0
網關地址:192.168.0.1
|
0
|
0x0012
/40019
|
IP地址高16位
|
W/R
|
0~65535
|
編碼器IP地址前2位
默認值為0xC0A8,
0xC0=192(十進制)
0xA8=168(十進制)
|
|
0x0013
/40020
|
IP地址低16位
|
W/R
|
0~65535
|
編碼器IP地址后2位
默認值0x0020
0x00=0(十進制)
0x20=32(十進制)
|
|
0x0014
/40021
|
子網掩碼高16位
|
W/R
|
0~65535
|
編碼器子網掩碼地址前2位
默認值為0xFFFF,
0xFF=255(十進制)
0xFF=255(十進制)
|
|
0x0015
/40022
|
子網掩碼低16位
|
W/R
|
0~65535
|
編碼器子網掩碼地址后2位
默認值為0xFF00,
0xFF=255(十進制)
0x00=0(十進制)
|
|
0x0016
/40023
|
設備重啟
|
W
|
0~1
|
1:寫入1設備重新啟動
|
|
0x0017
/40024
|
轉速整數部分
|
R
|
-32768~+32767
|
精確轉速 = 轉速整數部分+(轉速小數部分/10000);單位:轉/分鐘,16進制有符號
|
|
0x0018
/40025
|
轉速小數部分
|
R
|
-9999~+9999
|
0x0019
/40026
|
網關地址高16位
|
W/R
|
0~65535
|
編碼器網關地址前2位
默認值為0xC0A8,
0xC0=192(十進制)
0xA8=168(十進制)
|
|
0x001A
/40027
|
網關地址低16位
|
W/R
|
0~65535
|
編碼器網關地址后2位
默認值0x0001
0x00=0(十進制)
0x01=1(十進制)
|
|
0x0022
/40035
|
MAC地址1
|
R
|
0~65535
|
編碼器MAC地址1
舉例:0x0017
|
|
0x0023
/40036
|
MAC地址2
|
R
|
0~65535
|
編碼器MAC地址2
舉例:0xBC10
|
|
0x0024
/40037
|
MAC地址3
|
R
|
0~65535
|
編碼器MAC地址3
舉例:0x0001
|
|
|
|
|
|
|
|
從Modbus-RTU中讀取到的位置數據合成方式:
位置值=多圈位置*8192(默認分辨率)+單圈位置,單位:脈沖步數。
6.網絡參數設置教程
(1)配置設備處于同一個局域網
上海了淼Modbus-TCP編碼器出廠默認IP為192.168.0.32,子網掩碼為255.255.255.0,網關地址:192.168.0.1。
編碼器接好電源線和網線,配置變成電腦和PLC處于同一個以太網網段內。
電腦端在:控制面板\網絡和 Internet\網絡連接中 修改本地連接IP地址到相同網段。
(2)Ping指令檢查編碼器的以太網連接
使用Windos電腦的DOS命令提示符的ping指令檢查電腦與編碼器之間的網絡連接。

(3)修改編碼器以太網IP網絡參數
當需要修改編碼器的網絡IP地址時,推薦使用Web網頁進行修改,
在瀏覽器地址欄中輸入編碼器地址http://192.168.0.32(默認出廠IP地址),在打開的頁面中核對MAC地址與編碼器是否一致,然后按照正確的以太網規范修改IP地址、子網掩碼、網關地址。確認無誤后點擊保存并重啟。新網絡參數生效。
(4)按照編碼器MAC地址查找局域網IP
同一個局域網內有多個不同IP地址的了淼編碼器時,可以用編碼器銘牌上的MAC物理地址來區分確認編碼器IP地址。
使用Windos電腦的DOS命令提示符窗口,
第一步,輸入命令:for /L %i IN (1,1,254) DO ping -w 2 -n 1 192.168.0.%i |find /i "TTL"
電腦將按照指示在192.168.0網段內從192.168.0.1~192.168.0.255中自動遍歷ping檢查。

第二步,輸入命令:arp -a
找出遍歷到的IP地址和對應的MAC物理地址。

7.Modbus-TCP編碼器與S7-1210 PLC組態教程
上海了淼編碼器可以與西門子S7-1212 PLC使用Modbus-TCP協議進行通訊,首先將編碼器和PLC的電源線和以太網線連接好。
(1)在電腦上打開西門子博途軟件新建PLC項目工程,設置PLC常規參數,啟用系統存儲字節和啟用時鐘存儲器字節,后續編程要用到系統定時器作為觸發信號。

(2)新建MODBUS-TCP通訊模塊MB_CLIENT

(3)創建Encoder_Modbus-TCP通訊數據塊。
(4)在新建的Encoder_Modbus-TCP通訊數據塊中修改屬性,取消優化的塊訪問

(5)在Encoder_Modbus-TCP數據塊中創建TCON_IP_V4類型的Connect變量組,并配置網絡連接參數變量初始值。

(6)在Encoder_Modbus-TCP數據塊中創建Struct類型的讀取編碼器數據變量組Read_Buff,并新建可以讀取的編碼器Modbus-TCP寄存器。

(7)在Encoder_Modbus-TCP數據塊中創建Struct類型的寫入編碼器數據變量組Write_Buff,并新建可以寫入的編碼器Modbus-TCP寄存器。

(8)編寫modbus-TCP讀取程序,以10Hz的頻次讀取編碼器數據

(9)分別編譯數據塊和主程序,并下載進PLC中,在線監控讀取到的編碼器數據。

(10)設置編碼器預設值
(11)設置編碼器旋轉方向
8.Modbus-TCP編碼器TCP/IP通訊
上海了淼Modbus-TCP編碼器默認IP地址為192.168.0.32,默認子網掩碼255.255.255.0,默認網關地址為192.168.0.1。用于TCP/IP通訊端口號為6000。編碼器與電腦處于同一個網段內,打開網絡收發調試助手進行通訊。
9.Modbus-TCP編碼器UDP通訊
上海了淼Modbus-TCP編碼器默認IP地址為192.168.0.32,默認子網掩碼255.255.255.0,默認網關地址為192.168.0.1。用于UDP通訊端口號為5000。編碼器與電腦處于同一個網段內,打開網絡收發調試助手進行通訊。
10.Modbus-TCP編碼器與Smart 200 PLC組態教程
(1)使用STEP 7-MicroWIN SMART新建空白PLC工程

(2)編寫PLC程序



(3)創建符號表,監控編碼器數據

(4)設置編碼器預設值

注意:由于Flash有擦寫壽命,不可以頻繁對編碼器進行清零設置或預設值。
(5)設置編碼器旋轉方向

|