版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、北京昆侖通態(tài)自動化軟件科技有限公司腳本驅動V2.0使用指導手冊版本號:0.1目 錄第一章 新腳本驅動說明一 腳本驅動適用范圍1. 腳本驅動適用的版本A. MCGS嵌入式組態(tài)軟件;版本號:6.5(01.0010)注:此版本以上為新版本,以下為舊版本B. MCGS通用版的定制版組態(tài)軟件C. MCGS網絡版的定制版組態(tài)軟件2. 腳本驅動適用的設備A. 獨立板卡設備B. 串口通信設備3. 腳本驅動適用的協(xié)議二 腳本驅動兼容性1. 舊版本腳本驅動兼容新版本組態(tài)軟件2. 新版本腳本驅動不兼容舊版本的組態(tài)軟件,舊版本組態(tài)軟件無法識別新版本腳本驅動三 腳本驅動新增內容1. 腳本驅動新增功能新增加生成向導功能,
2、具體參照第三章內容。2. 腳本驅動新增函數(1) 數據解析函數1.!SvrGetByteFromByteArr(ByRef ByteArr, start, ByRef n, Flag)2.!SvrGetShortFromByteArr(ByRef ByteArr, start, ByRef n, Flag)3.!SvrGetIntFromByteArr(ByRef ByteArr, start, ByRef n, Flag)4.!SvrGetSingleFromByteArr(ByRef ByteArr, start, ByRef x, Flag)5.!SvrGetByteFromHexStr
3、(str, ByRef n, Flag)6.!SvrGetShortFormHexStr(str, ByRef n, Flag)7.!SvrGetIntFromHexStr(str, ByRef n, Flag)8.!SvrGetSingleFromHexStr(str, ByRef x, Flag)(2) 數據校驗函數1.!SvrByteArraySum(ByRef ByteArr, start, length)2.!SvrStrSum(str, Flag)3.!SvrByteArrayXOR(ByRef ByteArr, start, length)4.!SvrStrXOR(str, Fl
4、ag)5.!SvrStrModbusCRC(ByRef ByteArr, start, length)6.!SvrStrModbusLRC(str, start, length)7.!OpenLog()8.!CloseLog()(3) 字節(jié)數組操作函數1.!HStr2HByre(str, arByte)2.!HByte2HStr(arByte, str)第二章 基礎概念講解一 通訊協(xié)議1. ACSII碼通訊協(xié)議(字符型協(xié)議)通訊信息按照ASCII碼方式解析得到的參數信息稱為ASCII碼通訊。比如:主站接收到從站發(fā)送的4個字符:0x31 0x34 0x2E 0x36,用ASCII碼表示為14.6
5、。2. HEX通訊協(xié)議(字節(jié)數組協(xié)議)通訊信息按照十六進制方式解析得到的參數信息稱為十六進制通訊。比如:主站接收到從站發(fā)送的4個字符:0x31 0x34 0x2E 0x36,用HEX表示為0x31342E363. ASCII碼通訊與HEX通訊的區(qū)別1) ASCII碼通訊傳送的字符能清楚的了解發(fā)送命令和接收信息,但是傳送的信息速度量少;十六進制通訊發(fā)送的字符信息速度量大,但是發(fā)送命令和接收信息不明了。2) ASCII碼的通訊幀1個字占4個字符,而HEX的通訊幀1個字占2個字符。如:發(fā)送0x1427信息,ASCII碼發(fā)送4個字符:0x31 0x34 0x32 0x37,而HEX只需要發(fā)送2個字符:
6、0x14 0x27。二第三章 向導使用說明一 完全適用向導的協(xié)議1. ASCII碼協(xié)議,多條命令通訊示例1.1 步驟1:協(xié)議分析通訊命令1:模仿ADAM4018協(xié)議,協(xié)議格式如下:發(fā)送命令:#xxr幀頭:長1個字符,固定為#地址:固定長2個字符幀尾:長1個字符,為回車接收命令:#+xxx.xx+xxx.xx+xxx.xx+xxx.xx+xxx.xx+xxx.xx+xxx.xx+xxx.xxr幀頭:長1個字符,固定為#數據體:共8個數據體,每個數據體固定長7個字符,按ASCII碼方式解析幀尾:長1個字符,為回車模擬數據:發(fā)送命令1:#01r接收命令1:#+11.111+22.222+33.333
7、+44.444+55.555+66.666+77.777+88.888r通訊命令2:自己定義,解析數據非等長通訊協(xié)議,分兩種情況:數據長度已知;數據長度未知。下面以數據長度未知,數據之間用分隔符分離的協(xié)議,協(xié)議格式如下:發(fā)送命令:#xxxxxxr幀頭:長1個字符,固定為#,參與校驗地址:固定長2個字符,參與校驗校驗:長2個字符,累加和校驗結束符號:長1個字符,固定為回車接收命令:#xxAA,BBB,CCCC,DDDDD,EEEE,FFF,GG,HHHHxxr幀頭:長1個字符,固定為#數據體:8個數據體,以“,”分隔校驗:長2個字符,累加和校驗結束符號:長1個字符,固定為回車模擬數據:發(fā)送命令:
8、#0184r接收命令:#11,222,3333,44444,5555,666,77,8888E3r1.2 步驟2:新建工程進入向導新建工程后進入新建工程模式,如圖3-1-1-1所示。圖3-1-1-11. 選擇“使用向導新建工程”,則進入向導界面,如圖3-1-1-2所示。2. 選擇“不使用向導新建工程”,流程和原來一樣,直接生成示例腳本。整個腳本配置分為4個步驟,前一個步驟不執(zhí)行,不允執(zhí)行下個步驟設置腳本驅動的名稱和注釋內容圖3-1-1-21.3 步驟3:配置驅動屬性圖3-1-1-31. 添加屬性,添加除“設備地址”和“通訊延時”以外的屬性,當所添加屬性的數據類型選擇枚舉型時,屬性范圍處填寫枚舉
9、量,并用“;”隔開,如圖3-1-1-4所示。2. 刪除屬性,對多余的屬性進行刪除,其中“設備地址”和“通訊延時”為默認屬性,不允許刪除。3. 設置屬性,修改設置已添加的屬性。圖3-1-1-41.4 步驟4:配置通道圖3-1-1-51. 添加通道,可進行批量添加操作。2. 刪除通道,對多余的通道進行刪除,可批量刪除(按住Ctrl鍵,選擇要刪除的通道,點擊“刪除通道”按鈕即可),其中“通訊狀態(tài)”為默認通道,不允許刪除。3. 設置通道,修改設置已添加的通道,設置通道中不能修改通道個數。1.5 步驟5:配置通訊幀圖3-1-1-65.1 添加收發(fā)通訊幀根據協(xié)議分析知,2組通訊幀結構信息配置分別如圖3-1
10、-1-7,圖3-1-1-8所示。圖3-1-1-7圖3-1-1-85.2 設置收發(fā)通訊幀1. 進入設置數據屬性畫面,設置每個數值的屬性2. 設置過的選項,將顯示設置內容和相應的屬性3. 命令預瀏功能,直觀的查看收發(fā)命令的格式圖3-1-1-9對于ASCII碼通訊幀的數據體設置主要有以下幾種情況:1. 無特別屬性,數據內容為可見ASCII字符,如圖圖3-1-1-10所示。數據類型:ASCII字符數據數據長度:1字符數據內容:#數據屬性:無當此數據體參與校驗時,需要選擇。圖3-1-1-102. 無特別屬性,數據內容為不可見ASCII字符,如圖圖3-1-1-11所示。對于相同的數據體,設置好一個后,其他
11、可選擇默認設置,設置與前一個相同的參數數據類型:字節(jié)數據HEX格式數據長度:1字節(jié),用2個字符表示數據內容:0D,注意一定以HEX格式填寫,無空格數據屬性:無注釋:提供ASCII表,可以方便的直接選擇不可見的ASCII字符圖3-1-1-113.數值不確定的數據體,配置“設備屬性”中的某個屬性獲得其值,如圖圖3-1-1-12所示。數據類型:ASCII字符數據數據長度:2字符數據內容:無數據屬性:設備屬性中的設備地址圖3-1-1-124. 數據解析1)可知長度的解析,如圖3-1-1-13所示。數據類型:ASCII字符數據數據長度:7字符數據內容:無數據屬性:解析數據中的ASCII碼數據可知長度圖3
12、-1-1-132)未知長度的解析,如圖3-1-1-14所示。數據類型:ASCII字符數據數據長度:1字符,此處數據長度為“解析數據間分隔符號”的長度數據內容:無數據屬性:解析數據中的ASCII碼數據未知長度,解析數據間分隔符號是“,”。圖3-1-1-145. 校驗,如果命令中的數據都是確定的,那么可以直接計算出校驗值,如圖3-1-1-15所示。1. 此處需校驗的數據是選擇了“是否參與校驗”的數據體。2. 可選框無效,如:即使不選擇“幀頭”,它也參與校驗。圖3-1-1-156. 預覽功能,命令信息設置完之后,可點擊“命令預覽”查看命令格式,如圖3-1-1-16所示。圖3-1-1-167. 對于各
13、屬性同前一個的數據體,點擊“默認設置”即可。1.6 步驟6:配置預覽在此預覽通道和解析數據的匹配關系,并檢查配置是否正確,如果正確就可以,完成配置生成驅動,否則不完成配置生成代碼。圖3-1-1-171.7 步驟7:完成配置,進行調試1.代碼的生成與編譯。(1)配置都正確后,可以“完成配置”直接生成腳本代碼,如圖3-1-1-18所示。組建命令幀發(fā)送命令幀并接收數據,對接收數據進行校驗對接收的數據進行解析,并設置通道值圖3-1-1-18(2)編譯生成的代碼。選擇“調試” “檢查整個驅動”,若沒有問題輸出窗口會提示“設備編輯檢查通過”,如圖3-1-1-19所示。 圖3-1-1-192. 配置“串口參
14、數”。(1)創(chuàng)建虛擬串口,如圖3-1-1-20所示,串口COM2和COM3虛擬串口。圖3-1-1-20(2)配置腳本驅動中的串口參數選擇“設置” “串口父設備配置”,配置串口參數,如圖3-1-1-21所示。 圖3-1-1-21(3)設置串口轉發(fā)工具SmartCom.exe。首先,設置串口,如圖3-1-1-22所示。1. 除串口號外,其他需要與腳本驅動中串口參數一致2. 數據格式選擇ASCII圖3-1-1-22其次,設置模擬設備,串口設置完后,打開串口,選擇“使能”,添加收發(fā)幀,如圖3-1-1-23所示。圖3-1-1-23然后,將2組命令幀的模擬數據分別添加進去,選擇啟動,如圖3-1-1-24所
15、示。圖3-1-1-253. 進行調試。在腳本驅動中,選擇“調試” “定時通道采集”進行調試,如圖3-1-1-26所示。圖3-1-1-262. HEX碼協(xié)議,單條命令通訊示例2.1 步驟1:協(xié)議分析通訊命令:模仿ModbusRTU協(xié)議,協(xié)議格式如下:發(fā)送命令: 從4區(qū)寄存器地址0開始,連續(xù)讀8個16位無符號二進制地址:長1BYTE,內容從屬性“設備地址”中獲得命令碼:長1BYTE,固定為0x03起始地址:長2BYTE,固定為0x0000連續(xù)元件個數:長2BYTE,固定為0x0008校驗:長2BYTE,CRC校驗接收命令:地址:長1BYTE,內容不重要命令碼長1BYTE,內容預計為0x03回收字節(jié)
16、長度:長1BYTE,內容預計為0x10數據體00:長2BYTE,內容由回收數據解析獲得,解析方式為 16位無符號二進制數據數據體01:長2BYTE,內容由回收數據解析獲得,解析方式為16位無符號二進制數據數據體02:長2BYTE,內容由回收數據解析獲得,解析方式為16位無符號二進制數據數據體03:長2BYTE,內容由回收數據解析獲得,解析方式為16位無符號二進制數據數據體03:長2BYTE,內容由回收數據解析獲得,解析方式為16位無符號二進制數據數據體05:長2BYTE,內容由回收數據解析獲得,解析方式為16位無符號二進制數據數據體06:長2BYTE,內容由回收數據解析獲得,解析方式為16位無
17、符號二進制數據數據體07:長2BYTE,內容由回收數據解析獲得,解析方式為16位無符號二進制數據校驗:長2BYTE,內容不重要2.2 步驟2:新建工程進入向導新建工程后進入新建工程模式,如圖3-1-2-1所示。圖3-1-2-11. 選擇“使用向導新建工程”,則進入向導界面,如圖圖3-1-2-2所示。2. 選擇“不使用向導新建工程,流程和原來一樣,直接生成示例腳本。 圖3-1-2-22.3 步驟3:配置驅動屬性圖3-1-2-31. 添加屬性,添加除“設備地址”和“通訊延時”以外的屬性,當所添加屬性的數據類型選擇枚舉型時,屬性范圍處填寫枚舉量,并用“;”隔開,如圖3-1-2-4所示。2. 刪除屬性
18、,對多余的屬性進行刪除,其中“設備地址”和“通訊延時”為默認屬性,不允許刪除。3. 設置屬性,修改設置已添加的屬性。圖3-1-2-42.4 步驟4:配置通道圖3-1-2-51. 添加通道,可進行批量添加。2. 刪除通道,對多余通道進行刪除,可批量刪除,其中“通訊狀態(tài)”為默認通道,不允許刪除。3. 設置通道,修改設置已添加的通道,設置通道中不能修改通道個數。2.5 步驟5:配置通訊幀圖3-1-2-65.1 添加收發(fā)通訊幀根據協(xié)議分析知,通訊幀結構信息配置分別如圖3-1-2-7所示。圖3-1-2-75.2 設置收發(fā)通訊幀圖3-1-2-8對于HEX格式命令幀的數據體設置主要有以下幾種情況:(注釋:對
19、于HEX格式的命令幀,其各幀數據體的數據類型均為字節(jié)數據HEX格式)1. 無特別屬性,如圖3-1-2-9所示。圖3-1-2-92.數值不確定的數據體,配置“設備屬性”中的某個屬性獲得其值,如圖3-1-2-10所示。圖3-1-2-103. 解析屬性數據,數據內容為不需要填寫,由回收數據解析獲得,如圖3-1-2-11所示。圖3-1-2-114. 校驗,如果命令中的數據都是確定的,那么可以直接計算出校驗值,如圖3-1-2-12所示。圖3-1-2-125. 預覽功能,命令信息設置完之后,可點擊“命令預覽”查看命令格式,如圖3-1-2-13所示。圖3-1-2-132.6 步驟6:配置預覽在此預覽通道和解
20、析數據的匹配關系,并檢查配置是否正確,如果正確就可以,完成配置生成驅動,否則不完成配置生成代碼。圖3-1-2-142.7 步驟7:完成配置1.代碼的生成與編譯。(1)配置都正確后,可以“完成配置”直接生成腳本代碼,如圖3-1-2-15所示。組建命令幀發(fā)送命令幀并接收數據,對接收數據進行校驗對接收的數據進行解析,并設置通道值圖3-1-2-15(2)編譯生成的代碼。選擇“調試” “檢查整個驅動”,若沒有問題輸出窗口會提示“設備編輯檢查通過”,如圖3-1-2-16所示。 圖3-1-2-162. 配置“串口參數”。(1)創(chuàng)建虛擬串口,如圖3-1-2-17所示,串口COM2和COM3虛擬串口。圖3-1-
21、2-17(2)配置腳本驅動中的串口參數選擇“設置” “串口父設備配置”,配置串口參數,如圖3-1-2-18所示。 圖3-1-2-18(3)設置Modbus串口轉發(fā)工具mbslave.exeA. 打開mbslave.exe,選擇“Connection” “Connect”進行設置,如圖3-1-2-19所示。圖3-1-2-19B. 選擇“Setup” “Slave Definition”進行設置,如圖3-1-2-20所示。圖3-1-2-20C. 選擇“Connection” “Quick connect”運行,并設置各地址數據。3. 進行調試。在腳本驅動中,選擇“調試” “定時通道采集”進行調試,
22、如圖3-1-2-22所示。圖3-1-2-22二 不完全適用向導1. 步驟1:協(xié)議分析設備命令:模仿三菱Q系列串口協(xié)議,協(xié)議格式如下:發(fā)送命令:從D寄存器地址0開始,連續(xù)讀8個16位無符號二進制幀頭:長1個字符,固定為ENQ即0x05幀識別號:長2個字符,固定為FB本地站號:長2個字符,內容從設備屬性中獲得上位站號(即設備地址):長2個字符,內容從設備屬性中獲得命令碼:長1個字符,固定為2寄存器地址:長2個字符,固定為D*起始地址:長6個字符,固定為000000軟元件個數:長4個字符,固定為0008累加和校驗:長2個字符,通過自動計算獲得接收命令:幀頭:長1個字符,內容不重要幀識別號:長2個字符
23、,內容不重要本地站號:長2個字符,內容不重要上位站號:長2個字符,內容不重要數據體0007:長4個字符,內容由回收數據解析獲得,解析方式為 16位無符號二進制數據幀尾:長1個字符,內容不重要校驗:長2個字符,內容不重要分析:由協(xié)議格式所知,腳本驅動向導無法生成此協(xié)議格式,但是此協(xié)議可以由腳本驅動實現(xiàn),因此,我們先通過腳本驅動向導生成框架,然后在生成的代碼中修改即可。2. 步驟2:根據向導生成模板向導使用步驟在此不在介紹,主要說明需注意的幾部分:1. 配置屬性由協(xié)議知,本地站號也需要通過設備屬性獲得,因此設備屬性添加“本地站號”,如圖3-2-1所示。圖3-2-12. 配置通訊幀A. 配置通訊幀結
24、構信息,如圖3-2-2所示。圖3-2-2B. 設置收發(fā)通訊幀,如圖3-2-3所示。圖3-2-3注釋:1. 由于“本地站號”用向導無法生成,因此需要在代碼中修改;幀識別號是固定值,可在向導中添加(合在幀頭中),也可在代碼中修改。2. 由于接收命令只需要各部分的數據長度,因此:幀頭為幀頭+幀識別號;地址為本地站號+設備地址3. 步驟3:修改向導生成的代碼1. 根據向導生成的代碼如下所示。2. 根據步驟2所知,組幀部分代碼需要修改,添加“本地站號”和“幀識別號”,修改完代碼如下所示。4. 步驟4:進行調試調試過程與ASCII碼協(xié)議的調試相同,此處不再介紹。第四章 新增函數使用說明一 數據解析函數1.
25、!SvrGetByteFromByteArr(ByRef ByteArr, start, ByRef n, Flag)函數意義:將字節(jié)數組ByteArr中從start位置開始的內容輸出到變量n中,輸出格式為1個字節(jié)整數,字節(jié)數組位置計數從1開始。返 回 值:整型,判斷輸出是否正常。0:正常小于0:錯誤,具體意義如下:-1:起始索引start小于1;-2:起始索引start大于數組上限;-3:字節(jié)數組長度不足;-4:n不是整型變量;-5:其他錯誤。參數:ByteArr:傳址型,字節(jié)型數組。start:整型,輸出的首位置,從1開始。n:傳址型,長整型。Flag:長整型,解析方式0:8位無符號;1:
26、8位有符號;2:8位BCD碼。實例: !SvrGetByteFromByteArr(BA, 2, A, 1),字節(jié)數組為:00 01 02 03 04 05 06 07 08 09 00,則A=1。2.!SvrGetShortFromByteArr(ByRef ByteArr, start, ByRef n, Flag)函數意義:將字節(jié)數組ByteArr中從start位置開始的內容輸出到變量n中,輸出的格式為2字節(jié)整型,字節(jié)數組位置計數從1開始。返 回 值:整型,判斷是輸出是否正常:0:正常;小于0:錯誤,具體意義如下:-1:啟始索引start小于1;-2:啟始索引start大于數組上限;-3
27、:字節(jié)數組長度不足;-4:n 不是整型變量;-5:其他錯誤。參數:ByteArr:傳址型,字節(jié)型數組。start:整型,輸出的首位置,從1開始。n:傳址型,長整型。Flag:長整型,解析方式0:16位無符號;1:16位有符號;2:16位BCD碼。實例:!SvrGetByteFromByteArr (BA, 2, A, 1),字節(jié)數組為:00 01 02 03 04 05 06 07 08 09 00 00,則A=513。3.!SvrGetIntFromByteArr(ByRef ByteArr, start, ByRef n, Flag)函數意義:將字節(jié)數組ByteArr中從start位置開始
28、的內容輸出到變量n中,輸出的格式為4字節(jié)整型,字節(jié)數組位置計數從1開始。返 回 值:整型,判斷是輸出是否正常:0:正常;小于0:錯誤,具體意義如下:-1:啟始索引start小于1;-2:啟始索引start大于數組上限;-3:字節(jié)數組長度不足;-4:n 不是整型變量;-5:其他錯誤。參 數:ByteArr:傳址型,字節(jié)型數組。start:整型,輸出的首位置,從1開始。n:傳址型,長整型。Flag:長整型,解析方式0:32位無符號;1:32位有符號;2:32位BCD碼。實 例:!SvrGetByteFromByteArr (BA, 2, A, 1),字節(jié)數組為:00 01 02 03 04 05
29、06 07 08 09 00 00,則A=513。4.!SvrGetSingleFromByteArr(ByRef ByteArr, start, ByRef x, Flag)函數意義:將字節(jié)數組ByteArr中從start位置開始的內容輸出到變量x中,輸出的格式為4字節(jié)數值型,字節(jié)數組位置計數從1開始。返 回 值:整型,判斷是輸出是否正常:0:正常;小于0:錯誤,具體意義如下:-1:啟始索引start小于1;-2:啟始索引start大于數組上限;-3:字節(jié)數組長度不足;-4:n 不是浮點型變量;-5:其他錯誤。參 數:ByteArr:傳址型,字節(jié)型數組。start:整型,輸出的首位置,從1開
30、始。n:傳址型,長整型。Flag:長整型,對應4種解碼次序0:“”;1:“”;2:“”;3:“”。實 例:!SvrGetByteFromByteArr (BA, 1, x, 3),字節(jié)數組為:00 00 08 40 04 05 06 07 08 09 00 00,則A=4.05.!SvrGetByteFromHexStr(str, ByRef n, Flag)函數意義:獲得將HEX表示的字符數據的內容輸出到變量x中,輸出的格式為1字節(jié)數值型,從頭取2個字符轉換成一個字節(jié)HEX值返 回 值:整型,判斷是輸出是否正常:0:正常;小于0:錯誤,具體意義如下:-1:解析字符長度不足,至少長度為2字符-
31、2:解析字符長度一定為偶數個-3:解析字符長度大于2個,只取左邊2字符解析-4:變量類型,不是整形-5:其他錯誤參 數:str,字符數據。n,傳址型,長整型;Flag, 長整型,解析方式0:8位無符號;1:8位有符號;2:8位BCD碼實 例:! SvrGetByteFromHexStr (str,n,0),str為:“0102030405060708” 則n = 16.!SvrGetShortFormHexStr(str, ByRef n, Flag)函數意義:獲得將HEX表示的字符數據的內容輸出到變量x中,輸出的格式為2字節(jié)數值型,從頭取4個字符轉換成2個字節(jié)短整型值返 回 值:整型,判斷是
32、輸出是否正常:0:正常;小于0:錯誤,具體意義如下:-1:解析字符長度不足,至少長度為2字符-2:解析字符長度一定為偶數個-3:解析字符長度大于2個,只取左邊2字符解析-4:變量類型,不是整形-5:其他錯誤參 數:str,字符數據。n,傳址型,長整型;Flag, 長整型,解析方式0:16位無符號;1:16位有符號;2:16位BCD碼實 例:!SvrGetShortFromHexStr (str,n,0),str為:“0102030405060708” 則n = 5137.!SvrGetIntFromHexStr(str, ByRef n, Flag)函數意義:獲得將HEX表示的字符數據的內容輸
33、出到變量x中,輸出的格式為4字節(jié)數值型,從頭取8個字符轉換成4個字節(jié)整型值返 回 值:整型,判斷是輸出是否正常:0:正常;小于0:錯誤,具體意義如下:-1:解析字符長度不足,至少長度為2字符-2:解析字符長度一定為偶數個-3:解析字符長度大于2個,只取左邊2字符解析-4:變量類型,不是整形-5:其他錯誤參 數:str,字符數據。n,傳址型,長整型;Flag, 長整型,解析方式0:32位無符號;1:32位有符號;2:32位BCD碼實 例:! SvrGetIntFromHexStr (str,n,0),str為:“10200000030405060708” 則n = 5138.!SvrGetSin
34、gleFromHexStr(str, ByRef x, Flag)函數意義:獲得將HEX表示的字符數據的內容輸出到變量x中,輸出的格式為4字節(jié)數值型,從頭取8個字符轉換成4個字節(jié)單精度浮點值返 回 值:整型,判斷是輸出是否正常:0:正常;小于0:錯誤,具體意義如下:-1:解析字符長度不足,至少長度為2字符-2:解析字符長度一定為偶數個-3:解析字符長度大于2個,只取左邊2字符解析-4:變量類型,不是浮點型變量-5:其他錯誤參 數:str,字符數據。x,傳址型,數值型;Flag, 長整型,對應4種解碼次序0:“”;1:“”;2:“”;3:“”實 例:! SvrGetSingleFromHexSt
35、r (str,x,3),str為:“000008400102030405060708” 則x = 4.0二 數據校驗函數1.!SvrByteArraySum(ByRef ByteArr, start, length)函數意義:從數組中start索引開始,連續(xù)length個字節(jié),按求和方式計算返回校驗結果返 回 值:整型,返回正確的校驗值/判斷是輸出是否正常:=0:校驗結果;小于0:錯誤,具體意義如下:-1:啟始索引start小于1-2:啟始索引start大于數組上限-3:校驗數組長度小于等于零-4:字節(jié)數組長度不足-5:其他錯誤參 數:ByteArr,傳址型,字節(jié)型數組。start,長整型,檢
36、驗數據的啟始字節(jié)在數組中l(wèi)ength, 長整型,連續(xù)校驗數據的個數實 例:n = !SvrByteArraySum(ByteArr,1,4) ByteArr為:00 01 02 03 04 05 06 07 則n = 62.!SvrStrSum(str, Flag)函數意義:返 回 值:字符型,返回正確的校驗值/判斷是輸出是否正常:錯誤返回值: -1:校驗字符串長度為0-2:校驗的字符串長度必須為偶數參 數:str,字符型,需要校驗數據Flag,長整型,0:按2個字符形成1BYTE HEX值進行校驗;1:直接按ASCII字符值進行校驗。實 例:strRe = !SvrStrSum(str,0)
37、 str為:“0001020304050607”則strRe = “06”3.!SvrByteArrayXOR(ByRef ByteArr, start, length)函數意義:從數組中start索引開始,連續(xù)length個字節(jié),按異或方式計算返回校驗結果返 回 值:整型,返回正確的校驗值/判斷是輸出是否正常:=0:校驗結果;小于0:錯誤,具體意義如下:-1:啟始索引start小于1-2:啟始索引start大于數組上限-3:校驗數組長度小于等于零-4:字節(jié)數組長度不足-5:其他錯誤參 數:ByteArr,傳址型,字節(jié)型數組。start,長整型,檢驗數據的啟始字節(jié)在數組中l(wèi)ength, 長整型
38、,連續(xù)校驗數據的個數實 例:n = !SvrByteArraySum(ByteArr,1,4) ByteArr為:00 01 02 03 04 05 06 07則n = 04.!SvrStrXOR(str, Flag)函數意義: 返 回 值:字符型,返回正確的校驗值/判斷是輸出是否正常:錯誤返回值:-1:校驗字符串長度為0-2:校驗的字符串長度必須為偶數參 數:str,字符型,需要校驗數據Flag,長整型,0:按2個字符形成1BYTE HEX值進行校驗;1:直接按ASCII字符值進行校驗實 例:strRe = !SvrStrSum(str,0) str為:“0001020304050607”則
39、strRe = “00”5.!SvrStrModbusCRC(ByRef ByteArr, start, length)函數意義: 從數組中start索引開始,連續(xù)length個字節(jié),按異或方式計算返回校驗結果返 回 值:整型,返回正確的校驗值/判斷是輸出是否正常:=0:校驗結果;小于0:錯誤,具體意義如下:-1:啟始索引start小于1-2:啟始索引start大于數組上限-3:校驗數組長度小于等于零-4:字節(jié)數組長度不足-5:其他錯誤參 數:ByteArr,傳址型,字節(jié)型數組。start,長整型,檢驗數據的啟始字節(jié)在數組中l(wèi)ength, 長整型,連續(xù)校驗數據的個數實 例:n = ! SvrStrModbusLRC (ByteArr,1,4) ByteArr為:010300000008則n = 0x0c446.!SvrStrModbusLRC(str, start, length)函數意義: 返 回 值:字符型,返回正確的校驗值/判斷是輸出是否正常: 錯誤返回值:-1:啟始索引start小于1-2:啟始索引start大于數組上限-3:校驗數組長度小于等于零-4:字節(jié)數組長度不足參 數:str,字符型,需要校驗數據start,長整型,檢驗數據的啟始字節(jié)在數組中l(wèi)engt
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年滬科版八年級歷史上冊階段測試試卷含答案
- 2025年北師大版九年級地理下冊月考試卷含答案
- 2025年度特色民宿門面房租賃與民宿經營合同4篇
- 二零二五版旅游特色餐飲服務采購合同4篇
- 2025年牛津譯林版九年級歷史下冊月考試卷含答案
- 2025年蘇教版選擇性必修3歷史下冊月考試卷含答案
- 2025年浙科版九年級物理上冊階段測試試卷含答案
- 二零二五版農機作業(yè)租賃與農業(yè)人才培養(yǎng)合作合同4篇
- 2024 年四川公務員行測(C 類)真題及答 案
- 二零二五年度沐足行業(yè)員工權益保障合同范本4篇
- 2025年度杭州市固廢處理與資源化利用合同3篇
- 部編版二年級下冊《道德與法治》教案及反思(更新)
- 充電樁項目運營方案
- 退休人員出國探親申請書
- 傷殘撫恤管理辦法實施細則
- 高中物理競賽真題分類匯編 4 光學 (學生版+解析版50題)
- 西方經濟學-高鴻業(yè)-筆記
- 幼兒園美術教育研究策略國內外
- 物業(yè)公司介紹
- 2024屆河南省五市高三第一次聯(lián)考英語試題及答案
- 【永輝超市公司員工招聘問題及優(yōu)化(12000字論文)】
評論
0/150
提交評論