国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      基于RS485總線的智能柜通信方法以及系統(tǒng)與流程

      文檔序號:11263577閱讀:335來源:國知局
      本發(fā)明涉及智能柜通信領域,尤其涉及一種基于rs485總線的智能柜通信方法以及系統(tǒng)。
      背景技術
      :隨著智能設備的廣泛普及和使用,單片機系統(tǒng)中需要越來越多的各種不同類型的智能設備與主機通訊,由于主機的物理端口數量的限制,同時也為了便于上層軟件的設計,通常具有同一類或相似功能的多個設備會通過某種方式連接到主機的同一個端口,從而方便主機對它們的統(tǒng)一訪問和控制。智能儀表是隨著單片機技術的成熟而發(fā)展起來的,企業(yè)在儀表選型時其中的一個必要條件就是要具有聯(lián)網通信接口。rs232接口可以實現全雙工點對點的通信方式,但這種方式不能實現聯(lián)網功能且受限于主機物理端口數量。隨后出現的rs485解決了這個問題。rs485接口組成的半雙工網絡,這種接線方式為總線式拓撲結構,在同一總線上最多可以掛接32個結點。在rs485通信網絡中一般采用的是主從通信方式,即一個主機帶多個從機。rs485網的設備間要想相互通信息只有通過主設備(master)中轉才能實現,這個主設備通常是pc,而這種設備網中只允許存在一個主設備,其余全部是從設備(slave)。智能柜系統(tǒng)中通常包含普通快遞柜子系統(tǒng)、冷鮮柜子系統(tǒng)和其它柜子系統(tǒng),其中各子系統(tǒng)中都有各自的控制板、硬件電路、開鎖模塊、傳感器數據采集模 塊,各子系統(tǒng)還有一個公共的用于遠程控制的無線傳輸模塊。由于各子系統(tǒng)的硬件電路、開鎖功能邏輯、傳感器類型等各不相同,因此,需要解決如何在主機的統(tǒng)一控制下實現對各子系統(tǒng)的功能操作和訪問,獲取或設置子系統(tǒng)的配置和工作方式,有效區(qū)分子系統(tǒng)返回的數據和狀態(tài),同時又能避免總線沖突的問題。采用經典的modbus總線技術似乎可以解決這些問題。首先智能柜系統(tǒng)符合主從設備的模型,因而查詢、應答的通訊方式是適合當前系統(tǒng)的;其次它提供了準確而緊湊的幀格式可以用于控制各子系統(tǒng);最后它還提供了比較完備的錯誤檢測功能。然而因為緊湊的幀格式而無法區(qū)分特定狀態(tài)下的數據,這種技術不能自動獲得從設備的地址,另外,也無法分辨同一從設備返回的先后數據。技術實現要素:本發(fā)明要解決的技術問題在于,針對現有技術的上述缺陷,提供一種基于rs485總線的智能柜通信方法以及系統(tǒng)。本發(fā)明解決其技術問題所采用的技術方案是:構造一種基于rs485總線的智能柜通信方法,用于主設備和從設備之間的通信,所述主設備通過rs485總線連接至少一個從設備,各個從設備具有不同的地址編號且所有的地址編號是連續(xù)的,所述方法包括:s1、自定義通信協(xié)議格式和通信協(xié)議中的命令格式,命令格式的預設字段表示時間戳/用戶數據;s2、主設備通過以下步驟獲取所有從設備的身份信息:主設備給所有的從設備發(fā)送廣播命令,且此時的廣播命令中的時間戳/用戶數據的數值用于標識單位延時時間,從設備根據自身的地址編號以及所述單位延時時間確定該從設 備的本次延時時間,并在接收到廣播命令后等待一個本次延時時間后發(fā)送包含該從設備的身份信息的返回命令。在本發(fā)明所述的基于rs485總線的智能柜通信方法中,步驟s2中所述的確定該從設備的本次延時時間基于以下公式:t=addrn*t0其中,t代表本次延時時間,單位為毫秒;addrn代表地址編號,t0代表單位延時時間,單位為毫秒。在本發(fā)明所述的基于rs485總線的智能柜通信方法中,所述方法還包括:s3、主設備通過以下步驟與某類從設備進行通訊:主設備基于步驟s2中各個從設備的返回命令建立在線設備信息列表,并根據所述在線設備信息列表給某類從設備發(fā)送廣播命令,且此時的廣播命令中的時間戳/用戶數據的數值用于標識用戶數據,從設備根據所述用戶數據以及步驟s2中獲取的單位延時時間確定該從設備的本次延時時間,并在接收到廣播命令后等待一個本次延時時間后發(fā)送返回命令。在本發(fā)明所述的基于rs485總線的智能柜通信方法中,所述步驟s3中的用戶數據為字節(jié)數據,且該字節(jié)數據轉換為二進制數據后,所述二進制數據中的數值為1的位基于在線設備信息列表的從設備的地址編號確定;步驟s3中所述的確定該從設備的本次延時時間包括:從設備根據該二進制數據中的所有數值為1的位的信息以及自身的地址編號,確定該從設備在在線的同類從設備中的排序,并根據該排序基于以下公式確定該從設備的本次延時時間:t=seqn*t0其中,t代表本次延時時間,單位為毫秒;seqn代表從設備在在線的同類 從設備中的排序;t0代表單位延時時間,單位為毫秒。在本發(fā)明所述的基于rs485總線的智能柜通信方法中,所述方法還包括:s4、主設備通過以下步驟與某個從設備進行通訊:主設備給某個從設備發(fā)送命令,且此時命令中的時間戳/用戶數據的數值用于標識命令發(fā)出時間,從設備將所述命令發(fā)出時間填寫到返回命令的時間戳/用戶數據字段后再將返回命令發(fā)送給主設備。在本發(fā)明所述的基于rs485總線的智能柜通信方法中,步驟s1中的命令格式包括以下字段:命令類型、命令數據、時間戳/用戶數據,在所述步驟s2中,主設備通過設定命令類型的數值設定發(fā)出的命令是發(fā)往所有從設備的廣播命令且該廣播命令是要求從設備返回身份信息;在所述步驟s3中,主設備通過設定命令類型的數值設定發(fā)出的命令是發(fā)往某類從設備的廣播命令,以及通過設定命令數據中的數值設定該廣播命令要求從設備所要執(zhí)行的操作;在所述步驟s4中,主設備通過設定通信協(xié)議中的板地址字段的數值設定發(fā)出的命令是發(fā)往某個從設備的命令,以及通過設定命令類型中的數值設定該命令要求從設備所要執(zhí)行的操作。在本發(fā)明所述的基于rs485總線的智能柜通信方法中,步驟s1中的通信協(xié)議格式包括以下字段:包頭,標識一個協(xié)議包的開始;數據長度,標識此協(xié)議包所含數據的字節(jié)數;板地址,標識此協(xié)議包所要發(fā)往的從設備的地址;命令,標識此協(xié)議包所含的命令;校驗和,標識對前面字段的內容進行的crc16校驗和。在本發(fā)明所述的基于rs485總線的智能柜通信方法中,所述身份信息包括從設備的地址編號、版本號和可以提供的命令類型。本發(fā)明還公開了一種基于rs485總線的智能柜通信系統(tǒng),包括:主設備和至少一個從設備,所述主設備通過rs485總線連接所有的從設備,各個從設備具有不同的地址編號且所有的地址編號是連續(xù)的,所述系統(tǒng)通過如上所述的方法進行通信。實施本發(fā)明的基于rs485總線的智能柜通信方法以及系統(tǒng),具有以下有益效果:本發(fā)明自定義通信協(xié)議格式和通信協(xié)議中的命令格式,特別是設定了時間戳/用戶數據字段,在需要獲取所有從設備的身份信息的時候,可以通過廣播命令將單位延時時間填寫到該時間戳/用戶數據字段以告知各個從設備,各從設備根據自身的地址編號以及所述單位延時時間確定該從設備的本次延時時間,由于各從設備的地址編號是不同的,所以各從設備返回命令的時間也就不同,這就避免了沖突問題,主設備不需指定就可以自動得到所有從設備的地址,設備斷線或未連接從設備也能預先獲知,避免了每次從設備地址變更都需要更改上位機程序或配置文件的麻煩;進一步的,針對某類從設備的廣播時,基于建立在線設備信息列表確定用戶數據,從設備再基于用戶數據按照順序返回命令,只有具有對應功能的從設備才予以響應,而且響應是分時的且沒有等待不會導致數據失效,485總線一直處于有效利用狀態(tài);更進一步的,向同一從設備短時間內發(fā)送相同的命令時,每次通信下發(fā)的命令和返回命令都在時間戳/用戶數據字段中設置了相同的命令發(fā)出時間,因此便于區(qū)分命令是何時所發(fā),上位機程序可以根據該時間戳來區(qū)分作何種處理。附圖說明下面將結合附圖及實施例對本發(fā)明作進一步說明,附圖中:圖1是本發(fā)明的基于rs485總線的智能柜通信系統(tǒng)的結構示意圖。具體實施方式為了對本發(fā)明的技術特征、目的和效果有更加清楚的理解,現對照附圖詳細說明本發(fā)明的具體實施方式。參考圖1,是本發(fā)明的基于rs485總線的智能柜通信系統(tǒng)的結構示意圖。系統(tǒng)包括主設備和至少一個從設備,所述主設備通過rs485總線連接所有的從設備,各個從設備具有不同的地址編號且所有的地址編號是連續(xù)的,地址編號可以用addr0~addrn表示,例如假如有24臺從設備,則可以依次用0-23表示各個從設備的地址編號,當然實際通過協(xié)議包發(fā)送時,其是用二進制或者十六進制表示,例如0x00~0x17。所述系統(tǒng)通過以下方法進行通信:s1、自定義通信協(xié)議格式和通信協(xié)議中的命令格式,命令格式的預設字段表示時間戳/用戶數據;其中,從設備返回的協(xié)議格式和命令格式與主設備發(fā)出的協(xié)議格式和命令格式一致。s2、主設備通過以下步驟獲取所有從設備的身份信息:主設備給所有的從設備發(fā)送廣播命令,且此時的廣播命令中的時間戳/用戶數據的數值用于標識單位延時時間,從設備根據自身的地址編號以及所述單位延時時間確定該從設備的本次延時時間,并在接收到廣播命令后等待一個本次延時時間后發(fā)送包含該從設備的身份信息的返回命令。s3、主設備通過以下步驟與某類從設備進行通訊:主設備基于步驟s2中各個從設備的返回命令建立在線設備信息列表,并根據所述在線設備信息列表給某類從設備發(fā)送廣播命令,且此時的廣播命令中的時間戳/用戶數據的數值用于標識用戶數據,從設備根據所述用戶數據以及步驟s2中獲取的單位延時時間確定該從設備的本次延時時間,并在接收到廣播命令后等待一個本次延時時間后發(fā)送返回命令。s4、主設備通過以下步驟與某個從設備進行通訊:主設備給某個從設備發(fā)送命令,且此時命令中的時間戳/用戶數據的數值用于標識命令發(fā)出時間,從設備將所述命令發(fā)出時間填寫到返回命令的時間戳/用戶數據字段后再將返回命令發(fā)送給主設備。關于步驟s1:參考下面的表1所示,自定義的通信協(xié)議格式主要包括以下字段:包頭,標識一個協(xié)議包的開始。例如,在本實施例中,固定為0xaa,0x55,也就是說一旦從設備解析出協(xié)議包的開頭是0xaa,0x55,就可以判斷是基于本發(fā)明所設定的通信協(xié)議進行通信的。數據長度,標識此協(xié)議包所含數據的字節(jié)數;板地址,標識此協(xié)議包所要發(fā)往的從設備的地址;命令,標識此協(xié)議包所含的命令,對于該字段,本發(fā)明同樣進行了自定義,在后文將會重點介紹;校驗和,標識對前面字段的內容進行的crc16校驗和,大端(big-endian)字節(jié)序,即按先高字節(jié),后低字節(jié)的順序。表1參考表2,對于上述表1中的命令進行了自定義,本發(fā)明規(guī)定命令格式包括以下字段:命令類型、命令數據、時間戳/用戶數據。表2其中,命令類型包括三大類:第一類是針對所有從設備的廣播命令,且該廣播命令的功能是獲取所有從設備的身份信息,例如從設備的地址編號、版本號和可以提供的命令類型。例如,可以用0xff表示這種命令類型,則其既表示該命令是針對所有從設備的廣播命令,又表示其功能僅僅是獲取所有從設備的身份信息。當然0xff只是一個示例,可以根據需要自行確定具體數值。第二類是針對某類從設備的廣播命令,例如,可以用0x0f~0x(m-1)f表示這種命令類型,m表示從設備的類別數。比如,若系統(tǒng)有4種類別的從設備,分別為:普通鎖控板、冷鮮柜控制板、溫控器、wifi模塊,那么可以用0x0f~0x3f表示這4種類別的從設備的廣播命令的命令類型。這類廣播命令與第一類廣播命令的不同,不僅僅在于廣播的范圍不同,更在于第一類廣播命令的命令類型兼具表示獲取所有從設備的身份信息的操作指示,而第二類廣播命令的命令類型僅僅能表示其所要發(fā)往的目的從設備,具體的從設備所要執(zhí)行的操作需要結合命令數據(也可以稱之為子命令)這個字段。例如,本發(fā)明針對上述的4種類別的廣播命令0x0f~0x3,例舉了部分子 命令,如表2-1、2-2、2-3、2-4所示。表2-1.0x0f命令的命令數據中包含的子命令(普通鎖控板)子命令表示含義子命令數據字節(jié)數描述0x00查詢鎖n-1查詢所有普通鎖控板的鎖狀態(tài)0x01開鎖n-1設置所有普通鎖控板的鎖狀態(tài)0x0f查詢版本n-1查詢所有普通鎖控板的版本號表2-2.0x1f命令的命令數據中包含的子命令(冷鮮柜控制板)子命令表示含義子命令數據字節(jié)數描述0x00查詢門n-1查詢所有冷鮮柜的門狀態(tài)0x01查詢鎖n-1查詢所有冷鮮柜的鎖狀態(tài)0x02開鎖n-1打開所有冷鮮柜的鎖0x0f查詢版本n-1查詢所有冷鮮柜控制板的版本號表2-3.0x2f命令的命令數據中包含的子命令(溫控器)子命令表示含義子命令數據字節(jié)數描述0x00查詢溫度n-1查詢所有溫控器的當前溫度值0x01設置閾值n-1設置所有溫控器的上下閾值表2-4.0x3f命令的命令數據中包含的子命令(wifi模塊)子命令表示含義子命令數據字節(jié)數描述0x00配置wifin-1配置wifi模塊的工作模式第三類就是針對某個從設備的普通命令,例如可以用0xxy(x=0,1,…m,y≠f)表示這種命令類型,xy的具體取值可以根據需要設置。下面的表3中即是以4種類別的從設備為例,歸納的所有命令類型。表3其中,命令數據表示命令相關的數據,一些命令可能沒有命令數據。其中,時間戳/用戶數據根據命令類型的不同,表示3種不同的意義。第一種是用于標識單位延時時間(例如3字節(jié)的毫秒數),第二種是用于標識用戶數據,第三種是用于標識命令發(fā)出時間(min-1b,sec-6b,millisecond-10b)。關于步驟s2:在所述步驟s2中,主設備通過設定命令類型的數值設定發(fā)出的命令是發(fā)往所有從設備的廣播命令且該廣播命令是要求從設備返回身份信息。且步驟s2中所述的確定該從設備的本次延時時間基于以下公式:t=addrn*t0其中,t代表本次延時時間,單位為毫秒;addrn代表地址編號,t0代表單位延時時間,單位為毫秒。例如,根據表3的定義,則步驟s2中應該設定命令類型的數值為0xff,另外還需要設定時間戳/用戶數據的數值作為單位延時時間t0。還可以在命令數據中設定從地址編號addrn的范圍,例如0-23則可以在命令數據這個字段中填入0x00,0x17,當然命令數據的數值也可以缺省。板地址可以隨意。因此,主設備發(fā)送的協(xié)議包如表4所示:表4那么從設備首先根據包頭即可確定該協(xié)議包采用的是本發(fā)明的自定義協(xié)議;再根據命令類型0xff即可知道此屬于一條針對所有設備的廣播命令,且從設備需要返回地址編號、版本號和可以提供的命令類型等身份信息;然后再根據時間戳/用戶數據的0x00,0x01,0xf4的數值可以確定t0=500ms。于是,24臺設備分別在等待(0~23)*t0的時間后發(fā)送包含身份信息的返回命令??梢?,自定義協(xié)議格式和命令格式后,各個從設備的返回命令的發(fā)送時間是完全錯開的,因此可以避免總線沖突,而且從設備根據命令類型的數值就可以判斷出該類廣播命令兼具的功能是要求從設備發(fā)送身份信息,這樣就實現了自動獲取從設備身份信息,避免了每次從設備地址變更都需要更改上位機程序或配置文件的麻煩。關于步驟s3:首先,主設備通過設定命令類型的數值設定發(fā)出的命令是發(fā)往某類從設備的廣播命令,以及通過設定命令數據中的數值設定該廣播命令要求從設備所要執(zhí)行的操作。然后,確定用戶數據,用戶數據為字節(jié)數據,且該字節(jié)數據轉換為二進制數據后,所述二進制數據中的數值為1的位基于在線設備信息列表的從設備的地址編號確定。最后,從設備根據該二進制數據中的所有數值為1的位的信息以及自身的地址編號,確定該從設備在所有的在線的同類從設備中的排序,并根據該排序基于以下公式確定該從設備的本次延時時間:t=seqn*t0其中,t代表本次延時時間,單位為毫秒;seqn代表從設備在所有的在線的同類從設備中的排序,其數值范圍為0~n-1;n為整數,表示從設備的總數量;t0代表單位延時時間,單位為毫秒。例如,假如主設備可以連接24臺從設備,在經過步驟s2后,建立了如下表5所示的在線設備信息列表。那么根據該表可以看出:在線的設備總共有6臺,其中第0、2、8號屬于同一類:普通鎖控板。表5假如現在要“查詢所有普通鎖控板的鎖狀態(tài)”,那么需要給“普通鎖控板”這類設備發(fā)送廣播。首先根據表3確定普通鎖控板所對應的廣播命令的命令類型應該是:0x0f,將其填入命令類型所對應的字段。因為所要執(zhí)行的操作是查詢鎖狀態(tài),根據表2-1可知其對應的子命令是0x00,將其填入命令數據(子命令)所對應的字段。然后,確定用戶數據。24臺設備對應24位二進制(也就是3個字節(jié)),那么二進制數據的第0、2、8位應該為1,即時間戳/用戶數據的數值是:00000000,00000001,00000101,寫入協(xié)議包中用16進制表示也即0x00,0x01,0x05。同樣的,該類廣播命令中板地址可以隨意。根據上述步驟,于是可以得到主設備發(fā)送的協(xié)議包如表6所示:表6最后,從設備根據用戶數據“0x00,0x01,0x05”對應的二進制數據“00000000,00000001,00000101”確定總共有3臺普通鎖控板,且分別為0、2、8 號,0、2、8號板的排序依次為0、1、2,那么其應該分別等待0*t0、1*t0、2*t0。于是,地址編號為0x00的0號普通鎖控板將會在收到命令后處理后立即響應,而地址編號為0x02的2號普通鎖控板和地址編號為0x08的8號普通鎖控板將在收到命令后分別等待t0和2*t0的時間后響應主設備。由于基于建立在線設備信息列表確定用戶數據,從設備再基于用戶數據按照順序返回命令,只有具有對應功能的從設備才予以響應,而且響應是分時的且沒有等待不會導致數據失效,485總線一直處于有效利用狀態(tài)。關于步驟s4:該步驟中,主設備通過設定通信協(xié)議中的板地址字段的數值設定發(fā)出的命令是發(fā)往某個從設備的命令,以及通過設定命令類型中的數值設定該命令要求從設備所要執(zhí)行的操作。此是直接通過設定表1中的“板地址”確定目的設備,通過設定表2中的“命令類型”設定所要執(zhí)行的操作,與平常的通信協(xié)議差不多,此處不再贅述。值得注意的是,在該步驟中,時間戳/用戶數據的數值用于標識命令發(fā)出時間,從設備將所述命令發(fā)出時間填寫到返回命令的時間戳/用戶數據字段后再將返回命令發(fā)送給主設備。例如,主設備在第0秒、第1秒、第2秒內分別給地址為0x05(表5)的冷鮮柜鎖控板發(fā)送了3條查詢門的狀態(tài)命令,但在表2中分別寫入了3字節(jié)的時間戳“0x00,0x00,0x00”,“0x00,0x03,0xe8”,“0x00,0x03,0xe8”,設備0x05在響應主設備的查詢命令時就將當前的門狀態(tài)與對應的時間戳寫入返回命令,主設備可以根據時間戳來區(qū)別返回的命令是否對應它所發(fā)出的命令,避免了命令混淆。參考表7-1以及7-2,示意出了主設備在第1秒發(fā)送給地址為0x05的從設備的協(xié)議包,以及0x05的從設備返回給主設備的協(xié)議包(對應 第1秒發(fā)送的狀態(tài))。表7-1主設備在第1秒發(fā)送給地址為0x05的從設備的協(xié)議包表7-2從設備返回給主設備的協(xié)議包(對應第1秒發(fā)送的狀態(tài))表7-1和表7-2中的“0x00,0x03,0xe8”表示1秒,數據長度5個字節(jié);表7-2中的命令數據字段中的“0xff,0xfe,0xff”表示了0x05號板對應的生鮮柜的門狀態(tài),數據長度8個字節(jié)。由于向同一從設備短時間內發(fā)送相同的命令時,每次通信下發(fā)的命令和返回命令都在時間戳/用戶數據字段中設置了相同的命令發(fā)出時間,因此便于區(qū)分命令是何時所發(fā),上位機程序可以根據該時間戳來區(qū)分作何種處理。綜上所述,實施本發(fā)明的基于rs485總線的智能柜通信方法以及系統(tǒng),具有以下有益效果:本發(fā)明自定義通信協(xié)議格式和通信協(xié)議中的命令格式,特別是設定了時間戳/用戶數據字段,在需要獲取所有從設備的身份信息的時候,可以通過廣播命令將單位延時時間告知各個從設備,各從設備根據自身的地址編號以及所述單位延時時間確定該從設備的本次延時時間,由于各從設備的地址編號是不同的,所以各從設備返回命令的時間也就不同,這就避免了沖突問題,主設備不需指定就可以自動得到所有從設備的地址,設備斷線或未連接從設備也能預先獲知,避免了每次從設備地址變更都需要更改上位機程序或配置文件的麻煩;進一步的,針對某類從設備的廣播時,基于建立在線設備信息列表確定用戶數據,從設備再基于用戶數據按照順序返回命令,只有具有對應功 能的從設備才予以響應,而且響應是分時的且沒有等待不會導致數據失效,485總線一直處于有效利用狀態(tài);更進一步的,向同一從設備短時間內發(fā)送相同的命令時,每次通信下發(fā)的命令和返回命令都在時間戳/用戶數據字段中設置了相同的命令發(fā)出時間,因此便于區(qū)分命令是何時所發(fā),上位機程序可以根據該時間戳來區(qū)分作何種處理。上面結合附圖對本發(fā)明的實施例進行了描述,但是本發(fā)明并不局限于上述的具體實施方式,上述的具體實施方式僅僅是示意性的,而不是限制性的,本領域的普通技術人員在本發(fā)明的啟示下,在不脫離本發(fā)明宗旨和權利要求所保護的范圍情況下,還可做出很多形式,這些均屬于本發(fā)明的保護之內。當前第1頁12
      當前第1頁1 2 
      網友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1