|
在工業自動化發展的進程中,Modbus成(cheng)為(wei)了(le)工(gong)業(ye)控(kong)製(zhi)係(xi)統(tong)中(zhong)的(de)一(yi)種(zhong)通(tong)用(yong)協(xie)議(yi)。由(you)於(yu)該(gai)協(xie)議(yi)的(de)簡(jian)單(dan)且(qie)通(tong)用(yong),得(de)到(dao)眾(zhong)多(duo)儀(yi)表(biao)廠(chang)商(shang)的(de)支(zhi)持(chi),成(cheng)為(wei)儀(yi)表(biao)及(ji)智(zhi)能(neng)終(zhong)端(duan)的(de)一(yi)項(xiang)工(gong)業(ye)標(biao)準(zhun),在(zai)工(gong)業(ye)監(jian)控(kong)係(xi)統(tong)中(zhong)得(de)到(dao)廣(guang)泛(fan)的(de)應(ying)用(yong)。通(tong)過(guo)此(ci)協(xie)議(yi),控(kong)製(zhi)器(qi)相(xiang)互(hu)之(zhi)間(jian)、控製器經由網絡(例如以太網)和其它設備之間可以進行通信。它的開放性、kekuochongxinghebiaozhunhuashibutongchangshangshengchandekongzhishebeikeyijiandankekaodilianchenggongyewangluo,jinxingxitongdejizhongjiankong,congerchengweizuiliuxingdexieyizhiyi。tongyang,shijixingzutairuanjianyetigongzhichishangweijihexiaweishebeijinxingModbus通信的驅動程序,使用戶可以方便地使用裝有世紀星軟件的上位機和下位的設備進行通信。
1、Modbus 設備選擇 進入世紀星設備列表PLC大類中的標準Modbus協議,可以看到我們有5種Modbus設備,分別是Modbus RTU(十進製地址)、Modbus RTU(十六進製地址)、Modbus ASCII(十進製地址)、Modbus ASCII(十六進製地址)以及Modbus TCP/IP(十進製地址)。 首先,Modbus的三種通信方式:Modbus RTU、Modbus ASCII以及Modbus TCP/IP世紀星都全麵支持,用戶可以根據設備的通訊說明進行相應的選擇。 其次,Modbus設she備bei十shi進jin製zhi和he十shi六liu進jin製zhi的de區qu分fen除chu了le方fang便bian一yi部bu分fen用yong戶hu的de同tong時shi,在zai設she備bei選xuan擇ze的de方fang麵mian也ye給gei另ling一yi部bu分fen的de用yong戶hu造zao成cheng困kun擾rao,針zhen對dui這zhe個ge問wen題ti我wo會hui給gei大da家jia兩liang點dian解jie釋shi,第di一yi:同樣的一個設備,如果用十進製地址的Modbus驅動能連接得上的話,用十六進製地址的Modbus驅動肯定也沒問題,確定這點之後,我們提前預想周全的貼心功能就不會在選擇設備時給您造成困擾了。第二:Modbus協議已經成為工業控製係統中的一種通用協議,很多儀表廠商都采用Modbus協議與上位機進行通信,有些廠商協議的說明文檔中,采用十進製的寄存器地址說明,如表1所示。 而有些廠商采用十六進製的寄存器地址說明,如表2所示。為避免用戶在連接變量時再去做繁瑣的十進製和十六進製的轉化工作,我們將Modbus RTU以及Modbus ASCII分別做成用十進製的寄存器地址連接變量的驅動和用十六進製的寄存器地址連接變量的驅動。舉個例子(假定表1表2中列出的寄存器支持03號功能碼),對於表1這樣的協議說明方式,我們可以選擇十進製的Modbus驅動,用4x10這個寄存器連接環境溫度這個參數;而對於表2這樣的協議說明方式,我們可以選擇十六進製的Modbus驅動,用4 x 000A這個寄存器連接環境溫度參數。
 表一
 表二
2.寄存器連接 要正確連接一個寄存器,有三個關鍵信息要從協議說明文檔中獲得:第一是該寄存器支持的功能碼,第二是該寄存器的地址,第三是該寄存器的數據類型。 1)功能碼 世紀星是根據Modbus協議中的功能碼來區別寄存器名稱,具體信息如表3所述:

表三
在廠商所提供的協議說明文檔中,都會注明寄存器所支持的功能碼,用戶可以根據上述表格對世紀星裏的寄存器進行選擇。例如:支持03H功能碼的就選擇4x,支持01H功能碼的就選擇0x。 2)寄存器地址 寄存器地址在協議說明文檔中都會比較直觀的列出,參看表1、表2,每個具體的參數都會對應一個寄存器地址,連接寄存器時隻要將地址號連接在相應的寄存器名後麵即可。 3)數據類型 位寄存器的連接方式比較單一,如圖1所示。變量類型為I/O離散,數據類型為BIT,根據功能碼選擇寄存器名,並加上寄存器地址就可以正確連接該位寄存器。

圖一
模擬量寄存器的連接方式就比較多樣化,如表4所示(下麵對於寄存器名和寄存器地址暫不進行說明)。

表四

表五
主電機電壓:變量類型選擇I/O整數,數據類型選擇LONG(有符號32位整數); 主電機電流:變量類型選擇I/O實數,數據類型選擇FLOAT(我們的浮點數格式符合IEEE754標準); 環境溫度:變量類型選擇I/O整數,數據類型選擇UINT(無符號16位整數); T1:變量類型選擇I/O整數,數據類型選擇INT(有符號16為整數); T2:變量類型選擇I/O整數,數據類型選擇BCD(16位BCD碼); T3:變量類型選擇I/O實數,數據類型為UINT或者INT,由於傳送數據是實際值的100倍,所以在定義變量時需要做一個線性變換,如圖2所示,使最大值[IO]為最大值的100倍,最小值[IO]是最小值的100倍,並在轉換選項中選擇線性轉換就可以在工程中直接顯示實際值;

圖二
STATUS:變量類型選擇I/O整數,數據類型選擇UINT,需要在工程中對STATUS中的某個位進行顯示和設置時,要使用世紀星中的Bit(Tagname,BitNo)和BitSet(“Tagname”,BitNo,Discrete_Value)這兩個函數,具體的使用方式可以參考世紀星中的函數說明。
今天給大家介紹了如何選擇Modbus設備以及如何連接寄存器,對於標準的Modbus協議來說,掌握這些已經可以從設備中讀出一個正確的數據,但有些廠家的Modbus協議在字節順序以及功能碼的使用方麵和標準Modbus協議,是有一些小的出入,針對這種情況,我們的Modbus驅動也做了相應的調整,通過設置初始化字解決這個問題,其具體的設置方式我將會在下一篇介紹給大家,感謝您的關注!■
|