引言
隨著工æ¥è‡ªå‹•化的發展,MODBUSæˆç‚ºäº†å·¥æ¥æŽ§åˆ¶ç³»çµ±ä¸çš„一種通用å”è°ã€‚由于該å”è°çš„ç°¡å–®ä¸”é€šç”¨ï¼Œå¾—åˆ°äº†çœ¾å¤šå„€è¡¨å» å•†çš„æ”¯æŒï¼Œæˆç‚ºå„€è¡¨åŠæ™ºèƒ½çµ‚ç«¯çš„ä¸€é …å·¥æ¥æ¨™æº–,在工æ¥ç›£æŽ§ç³»çµ±ä¸å¾—åˆ°äº†å»£æ³›çš„æ‡‰ç”¨ã€‚é€šéŽæ¤å”è°ï¼ŒæŽ§åˆ¶å™¨ç›¸äº’ä¹‹é–“ã€æŽ§åˆ¶å™¨ç¶“ç”±ç¶²çµ¡ï¼ˆä¾‹å¦‚ä»¥å¤ªç¶²ï¼‰å’Œå…¶å®ƒè¨å‚™ä¹‹é–“å¯ä»¥é€²è¡Œé€šä¿¡ã€‚它的開放性ã€å¯æ“´å……性和標準化使ä¸åŒå» 商生產的控制è¨å‚™å¯ä»¥ç°¡å–®å¯é 地連æˆå·¥æ¥ç¶²çµ¡ï¼Œé€²è¡Œç³»çµ±çš„集ä¸ç›£æŽ§ï¼Œå¾žè€Œæˆç‚ºæœ€æµè¡Œçš„å”è°ä¹‹ä¸€ã€‚åŒæ¨£ï¼Œä¸–紀星組態軟件也æä¾›äº†æ”¯æŒä¸Šä½æ©Ÿå’Œä¸‹ä½è¨å‚™é€²è¡ŒMODBUS通信的驅動程åºï¼Œä½¿ç”¨æˆ¶å¯ä»¥æ–¹ä¾¿ä½¿ç”¨è£æœ‰ä¸–ç´€æ˜Ÿè»Ÿä»¶çš„ä¸Šä½æ©Ÿå’Œä¸‹ä½çš„è¨å‚™é€²è¡Œé€šä¿¡ã€‚
MODBUS通信å”è°
MODBUSå”è°æ˜¯èŽ«è¿ªåº·å…¬å¸1978å¹´ç™¼æ˜Žçš„ä¸€ç¨®ç”¨äºŽé›»åæŽ§åˆ¶å™¨é€²è¡ŒæŽ§åˆ¶å’Œé€šä¿¡çš„å”è°ã€‚æ¤å”è°æ”¯æŒå‚³çµ±çš„RS232ã€RS422ã€RS485標準和以太網è¨å‚™ã€‚ä¸åŒå» 商生產的符åˆMODBUSå”è°çš„æŽ§åˆ¶è¨å‚™å¯ä»¥é€£æˆå·¥æ¥ç¶²çµ¡ï¼Œé€²è¡Œé›†ä¸ç›£æŽ§ã€‚MODBUSå”è°é‡‡ç”¨ä¸»å¾žï¼ˆmaster-slave)技術,是一種å•ç”æ–¹å¼çš„通信å”è°ã€‚æ¯æ¬¡é€šä¿¡å‡ç”±ä¸»æ©Ÿç™¼å‡ºæ•¸æ“šè«‹æ±‚ä¿¡æ¯ï¼Œå¾žæ©ŸæŽ¥æ”¶åˆ°æ£ç¢ºæ¶ˆæ¯åŽå°±å¯ä»¥ç™¼é€æ•¸æ“šåˆ°ä¸»æ©Ÿä»¥éŸ¿æ‡‰è«‹æ±‚;主機也å¯ä»¥ç›´æŽ¥ç™¼ä¿¡æ¯ä¿®æ”¹å¾žæ©Ÿçš„æ•¸æ“šï¼Œå¯¦ç¾é›™å‘讀寫。
MODBUSå”è°æ”¯æŒå…©ç¨®æ•¸æ“šå‚³é€æ¨¡å¼ï¼Œå³ASCII碼和MODBUS-RTU。
(1)MODBUS-RTU
表1 ä¸»æ©Ÿè©¢å•æ•¸æ“šå¹€å ±æ–‡

表2å¾žæ©Ÿå›žç”æ•¸æ“šå¹€å ±æ–‡

(2)ASCII碼
表3ä¸»æ©Ÿè©¢å•æ•¸æ“šå¹€å ±æ–‡

表4å¾žæ©Ÿå›žç”æ•¸æ“šå¹€å ±æ–‡

MODBUS在世紀星ä¸çš„æ‡‰ç”¨
在世紀星ä¸ï¼Œé™¤äº†æ”¯æŒMODBUS-RTUå’ŒASCIIç¢¼å…©ç¨®æ•¸æ“šå‚³é€æ¨¡å¼å¤–,還支æŒMODBUS TCP/IP 傳逿–¹å¼ã€‚事實上,MODBUS TCP/IPçš„å‘½ä»¤æ ¼å¼å’ŒMODBUS-RUT是很相似的,MODBUS TCP/IPåªæ˜¯ç¼ºå°‘兩個å—節的CRCæ ¡é©—ã€‚åœ¨MODBUSå”è°ä¸ï¼Œæ˜¯æ ¹æ“šä¸åŒçš„功能碼來完æˆä¸åŒçš„è®€å¯«åŠŸèƒ½çš„ï¼Œä¸–ç´€æ˜Ÿä¸æ”¯æŒçš„功能碼åŠå…¶åŠŸèƒ½å¦‚è¡¨5所示:
表5 世紀星所支æŒçš„功能碼

在硬件è¨å‚™ä¸ï¼Œæ•¸æ“šå˜å„²åœ¨å¯„å˜å™¨å…§ï¼Œæ¯å€‹å˜å„²æ•¸æ“šçš„寄å˜å™¨å°æ‡‰ä¸€å€‹å¯„å˜å™¨åœ°å€ï¼Œä¸Šä½æ©Ÿå°±æ˜¯æ ¹æ“šé€™äº›åœ°å€çµ„織命令去讀寫寄å˜å™¨é‡Œçš„æ•¸æ“šã€‚一個兩個å—節的整型數據å˜å„²åœ¨ä¸€å€‹å¯„å˜å™¨åœ°å€ä¸ï¼Œä¸€å€‹å››å—節的整型或浮點型數據則è¦å˜å„²åœ¨é€£çºŒçš„兩個寄å˜å™¨åœ°å€ä¸ï¼Œé€šå¸¸éƒ½æ˜¯é«˜åœ°å€å˜æ”¾æ•¸æ“šçš„高å—,低地å€å˜æ”¾æ•¸æ“šçš„低å—。
由于很多用MODBUSå”è°çš„å„€è¡¨å» å®¶éƒ½åœ¨ä»¥è‡ªå·±çš„æ–¹å¼ä¾†èªªæ˜Žå„€è¡¨ä¸Šçš„åƒæ•¸ä»¥åŠå®ƒå°æ‡‰çš„寄å˜å™¨åœ°å€ï¼Œæ‰€ä»¥ä¸€éƒ¨åˆ†å» 家是以åå…進制來標記寄å˜å™¨åœ°å€ï¼Œè€Œå¦ä¸€éƒ¨åˆ†å» 家用åé€²åˆ¶ã€‚ç‚ºäº†ä½¿ç”¨æˆ¶åœ¨å·¥ç¨‹é‡Œå»ºç«‹è®Šé‡æ™‚方便的和儀表上的寄å˜å™¨é€£æŽ¥ï¼Œä¸–紀星分別在MODBUS-RTUå’ŒASCII碼兩種通信方å¼ä¸‹ï¼Œæ”¯æŒåå…進制通é“號和å進制通é“號兩種變é‡é€£æŽ¥æ–¹å¼ï¼Œå› æ¤ï¼Œå°±å…去了用戶åšå¾ˆå¤šçš„åå…進制和å進制之間轉æ›çš„工作。
在è¨å‚™çš„說明書ä¸ï¼Œä¸€èˆ¬æœƒæŒ‡å®šå¯„å˜å™¨åœ°å€ï¼Œæ•¸æ“šé¡žåž‹ï¼Œè©²åœ°å€çš„寄å˜å™¨æ”¯æŒçš„功能碼ç‰è¦ç´ ,以MODBUS-RTU åå…進制的驅動為例,如果寄å˜å™¨åœ°å€ç‚º0005H,數據類型為兩個å—節的整形,支æŒ03HåŠŸèƒ½ç¢¼è®€æ•¸æ“šï¼Œå‰‡å°æ‡‰åˆ°ä¸–紀星軟件ä¸éœ€è¦é€£æŽ¥çš„變é‡ç‚º4x0005,變é‡é¡žåž‹ç‚ºI/O整數,數據類型å¯ä»¥åˆ†ç‚ºæœ‰ç¬¦è™Ÿçš„INT或無符號的UINT 或者BCD碼,在進行通信時,世紀星發é€çš„以åŠè¨å‚™è¿”回的命令如下表所示:
主機發é€ï¼š

從機返回:

ç”±è¨å‚™è¿”回的命令,å¯ä»¥çŸ¥é“è¨å‚™è¿”回了兩個å—節的有效數據(00 1A),則寄å˜å™¨åœ°å€ç‚º0005H里的數據為001AH=26。
如果寄å˜å™¨åœ°å€ç‚º0009H,數據類型為兩個å—節的整型,支æŒ06HåŠŸèƒ½ç¢¼å¯«æ•¸æ“šï¼Œå‰‡å°æ‡‰åˆ°ä¸–紀星軟件ä¸éœ€è¦é€£æŽ¥çš„變é‡ç‚º4x0009,變é‡é¡žåž‹ç‚ºI/O整數,數據類型å¯ä»¥ç‚ºæœ‰ç¬¦è™Ÿçš„INT或無符號的UINT 或者BCD碼,在通信時,世紀星發é€çš„以åŠè¨å‚™è¿”回的命令如下表所示(寫入數據258=0102H):
主機發é€ï¼š

從機返回:

ç¶“éŽç™¼é€ä¸Šè¡¨ä¸çš„命令,0102H便æˆåŠŸå¯«å…¥åˆ°å¯„å˜å™¨åœ°å€ç‚º0009H號的寄å˜å™¨ä¸ã€‚
如果寄å˜å™¨åœ°å€ç‚º0010H,數據類型為四個å—節的整型或浮點型,支æŒ10HåŠŸèƒ½ç¢¼å¯«æ•¸æ“šï¼Œå‰‡å°æ‡‰åˆ°ä¸–紀星軟件ä¸éœ€è¦é€£æŽ¥çš„變é‡ç‚º4x0010,變é‡é¡žåž‹ç‚ºI/O實數,數據類型å¯ä»¥ç‚ºæœ‰æ•´åž‹çš„LONG或浮點型的FLOAT,在通信時,世紀星發é€çš„以åŠè¨å‚™è¿”回的命令如下表所示(寫入數據258=0102H):
主機發é€ï¼š

從機返回:

ç¶“éŽç™¼é€ä¸Šè¡¨ä¸çš„命令,0102H便æˆåŠŸå¯«å…¥åˆ°å¯„å˜å™¨åœ°å€ç‚º0010H號的寄å˜å™¨ä¸ï¼Œ0000HæˆåŠŸå¯«å…¥äº†å¯„å˜å™¨åœ°å€ç‚º0011H號的寄å˜å™¨ä¸ã€‚
ä¸Šè¿°å…§å®¹å°±æ˜¯åœ¨ä¸–ç´€æ˜Ÿä¸æ ¹æ“šè¨å‚™èªªæ˜Žæ›¸é€£æŽ¥ä¿æŒå¯„å˜å™¨çš„變é‡é€£æŽ¥æ–¹å¼ï¼Œä»¥åŠé€šä¿¡çš„éŽç¨‹ï¼Œå…¶å®ƒçš„例如輸入寄å˜å™¨ï¼Œè¼¸å…¥ç·šåœˆç‰éƒ½å’Œä¿æŒå¯„å˜å™¨æ˜¯é¡žä¼¼çš„,通éŽç‰¹å®šçš„功能碼å°ç‰¹å®šåœ°å€çš„寄å˜å™¨é€²è¡Œè®€å¯«æ“作,這里就ä¸ä¸€ä¸€ä»‹ç´¹äº†ã€‚
å°çµ
在平時用戶使用世紀星和支æŒMODBUSå”è°çš„儀表進行通信的éŽç¨‹ä¸ï¼Œæˆ‘們和客戶也有很多的交æµï¼Œåœ¨å¤šæ•¸æƒ…æ³ä¸‹ï¼Œä¸–紀星都能很æ£å¸¸çš„和儀表進行通信,但ç¾åœ¨é‚„是é¿å…ä¸äº†çš„ä¸€ç¨®æƒ…æ³æ˜¯ï¼Œæœ‰äº›ç”¨æˆ¶çš„儀表支æŒçš„并䏿˜¯æ¨™æº–çš„MODBUSå”è°ã€‚
MODBUS是一種通用的å”è°ï¼Œä½†å°±ç´°ç¯€ä¾†èªªï¼Œå¾ˆå¤šå» å®¶é‚„æ˜¯å„æœ‰å„的用法,這使我們èªè˜åˆ°äº†æˆ‘們的MODBUSé€šä¿¡é‚„æ˜¯ç¼ºå°‘ä¸€äº›éˆæ´»æ€§ï¼Œè€Œæˆ‘們一定會é‡å°é€™ç¨®æƒ…æ³åšä¸€äº›æ”¹é€²å·¥ä½œï¼ŒåŠ›æ±‚æ›´å¤šçš„ä½¿ç”¨MODBUSå”è°çš„å®¢æˆ¶èƒ½å¤ æ–¹ä¾¿ä½¿ç”¨æˆ‘å€‘çš„è»Ÿä»¶å’Œå„€è¡¨é«˜æ•ˆå¯é 的通信??蛻舻è‡Mæ„ï¼Œæ°¸é æ˜¯æˆ‘們努力追求的目標。