vb.netfcs校驗(yàn) vbnet wcf

vb.net 窗體的validate方法

Validate是焦點(diǎn)轉(zhuǎn)移觸發(fā),這里用Validate是保證你的BindingSource如datagridview數(shù)據(jù)改據(jù)后及時(shí)提交更新,包括后面的BindingSource.EndEdit(),這個(gè)Validate很有用,不要?jiǎng)h除

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、重慶小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了潼關(guān)免費(fèi)建站歡迎大家使用!

vb和西門子s7-200 plc的通訊 監(jiān)控

1、可以寫入、讀出寄存器的數(shù)值(字節(jié)、字、雙字);

2、可以進(jìn)行元件(V、M、S、Q、I)的置、復(fù)位操作;

3、可以讀取元件(V、M、S、Q、I)的ON/OFF狀態(tài)。

4、可以控制PLC的運(yùn)行、停止。

公布現(xiàn)在網(wǎng)上流行的PPI協(xié)議,此協(xié)議雖然有些錯(cuò)誤,但是思路沒問題。

西門子S7-200 PLC之間或者PLC與PC之間通信有很多種方式:自由口,PPI方式,MPI方式,Profibus方式。使用自由口方式進(jìn)行編程時(shí),在上位機(jī)和PLC中都要編寫數(shù)據(jù)通信程序。使用PPI協(xié)議進(jìn)行通信時(shí),PLC可以不用編程,而且可讀寫所有數(shù)據(jù)區(qū),快捷方便。但是西門子公司沒有公布PPI協(xié)議的格式。用戶如果想使用PPI協(xié)議監(jiān)控,必須購買其監(jiān)控產(chǎn)品或第三方廠家的組態(tài)軟件。這樣給用戶自主開發(fā)帶來一定困難,特別是自行開發(fā)的現(xiàn)場(chǎng)設(shè)備就不能通過PPI協(xié)議接入PLC。其它通訊方式編程也存在編程復(fù)雜,需要購買軟件和授權(quán)等局限性(1)。通過數(shù)據(jù)監(jiān)視、分析的方法,我們找出了PPI協(xié)議的關(guān)鍵報(bào)文格式,可用于上位機(jī)、現(xiàn)場(chǎng)設(shè)備與S7-200 CPU之間通訊。

分析方法

西門子的Step 7 Micro/Win32 是用于S7-200系列PLC的開發(fā)工具,它使用PC機(jī)上的COM口通過一條PC/PPI編程電纜連到PLC的編程口上。這說明,PC實(shí)際上是可以通過串口同S7-200 CPU通訊。只是我們不知道通訊協(xié)議而已。通過截獲PC機(jī)串口上的收發(fā)數(shù)據(jù),對(duì)照Step 7軟件發(fā)出的指令,我們就有可能分析出有關(guān)指令的報(bào)文和通訊方式;然后,直接通過串口向PLC發(fā)送報(bào)文,以驗(yàn)證這些指令報(bào)文是否正確。本著這一思想,我們采用以下步驟獲得這些報(bào)文。

首先制作一個(gè)串口的分支器,COM1的RX、TX分別接到COM2的TX、RX,即交叉接線,使得COM1發(fā)的數(shù)據(jù)COM2能收到。PC/PPI編程電纜接在COM1上,這樣,Step7 Micro/Win32發(fā)給PLC的報(bào)文就可以在COM2上接收了。我們按S7-200系統(tǒng)手冊(cè)設(shè)置好兩個(gè)串口,參數(shù)要一樣,均為9600,8,偶校驗(yàn),1位停止位。然后設(shè)置好Step7軟件,使之能與S7-200 CPU正常通訊。從Step7軟件中發(fā)出一個(gè)明確指令,COM2上的監(jiān)視軟件就能顯示這條報(bào)文了(用16進(jìn)制顯示)。通過與Profibus標(biāo)準(zhǔn)的類比(2)我們就可以得到一些關(guān)鍵的報(bào)文了。這種方法比分析PLC中NETR,NETW指令要直接、全面(3)。

3 PPI協(xié)議分析

PC與PLC采用主從方式通訊,PC按如下的格式發(fā)讀寫指令,PLC作出接收正確的響應(yīng)(返回應(yīng)答數(shù)據(jù)E5H或F9H見下文分析),上位機(jī)接到此響應(yīng)則發(fā)出確認(rèn)命令(10 02 5C 5E 16),PLC再返回給上位機(jī)相應(yīng)數(shù)據(jù)。

SD LE LEr SD DA SA FC DSAP SSAP DU FCS ED

SD:開始符(68H) LE、Ler:長(zhǎng)度(從DA到DU)

DA:目的地址 SA:源地址

FC:功能碼 (6CH) DSAP:目的服務(wù)存取點(diǎn)

SSAP:源服務(wù)存取點(diǎn) DU:數(shù)據(jù)單元

FCS:校驗(yàn)和 ED:結(jié)束符(16H)

3.1 讀命令分析

一次讀一條數(shù)據(jù)

對(duì)于一次讀取一個(gè)數(shù)據(jù),讀命令都是33個(gè)字節(jié)。前面的0—21字節(jié)是相同的,為 :

68 1B 1B 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10

因?yàn)槭荘C上發(fā)的讀PLC數(shù)據(jù)的命令,SA=00,DA=02,如果有多個(gè)站,DA要改成相應(yīng)的站號(hào)。讀命令中從DA到DU的長(zhǎng)度為1B即27個(gè)字節(jié)。從22字節(jié)開始根據(jù)讀取數(shù)據(jù)的類型、位置不同而不同。表一是讀不同存儲(chǔ)器命令的Byte22—32。

字節(jié) 22 23 24 25 26 27 28 29 30 31 32

功能 讀取長(zhǎng)度 數(shù)據(jù)個(gè)數(shù)* 存儲(chǔ)器類型 偏移量 校驗(yàn) 結(jié)束

讀q0.0 01 00 01 00 00 82 00 00 00 64 16

讀m0.0 01 00 01 00 00 83 00 00 00 65 16

讀M0.1 01 00 01 00 00 83 00 00 01 66 16

讀SMB34 02 00 01 00 00 05 00 01 10 F9 16

讀VB100 02 00 01 00 01 84 00 03 20 8B 16

讀VW100 04 00 01 00 01 84 00 03 20 8D 16

讀vd100 06 00 01 00 01 84 00 03 20 8F 16

讀i0.5 01 00 01 00 00 81 00 00 05 68 16"

讀i0.7 01 00 01 00 00 81 00 00 07 6A 16"

表 一 讀命令的Byte22-32

從表中我們可以得出以下結(jié)果:

Byte 22 讀取數(shù)據(jù)的長(zhǎng)度

01:1 Bit 02:1 Byte

04:1 Word 06:Double Word

Byte 24數(shù)據(jù)個(gè)數(shù),這里是01 ,一次讀多個(gè)數(shù)據(jù)時(shí)見下面的說明。

Byte 26 存儲(chǔ)器類型,01:V存儲(chǔ)器 00:其它

Byte 27 存儲(chǔ)器類型

04:S 05:SM 06:AI 07:AQ 1E: C

81:I 82:Q 83:M 84:V 1F: T

Byte 28,29,30存儲(chǔ)器偏移量指針(存儲(chǔ)器地址*8),如:VB100,存儲(chǔ)器地址為100,偏移量指針為800,轉(zhuǎn)換成16進(jìn)制就是320H,則Byte 28—29這三個(gè)字節(jié)就是:00 03 20。

Byte 31 校驗(yàn)和,前面已說到這是從(DA+SA+DSAP+SSAP+DU) Mod 256 。

一次讀多條數(shù)據(jù)

對(duì)于一次讀多個(gè)數(shù)據(jù)的情況,前21Byte與上面相似只是長(zhǎng)度LD,LDr及Byte 14不同:

Byte 14 數(shù)據(jù)塊占位字節(jié),它指明數(shù)據(jù)塊占用的字節(jié)數(shù)。與數(shù)據(jù)塊數(shù)量有關(guān),長(zhǎng)度=4+數(shù)據(jù)塊數(shù)*10,如:一條數(shù)據(jù)時(shí)為4+10=0E(H);同時(shí)讀M,V,Q三個(gè)不同的數(shù)據(jù)塊時(shí)為4+3*10=22(H)。

Byte 22 總是02 即以Byte為單位。

Byte 24 以字節(jié)為單位,連續(xù)讀取的字節(jié)數(shù)。如讀2個(gè)VD則Byte24=8

Byte 19---30 按上述一次讀一個(gè)數(shù)據(jù)的格式依次列出,

Byte 31---42 另一類型的數(shù)據(jù),也是按上述格式給出。

以此類推,一次最多讀取222個(gè)字節(jié)的數(shù)據(jù)。

3.2 寫命令分析

一次寫一個(gè)Double Word類型的數(shù)據(jù),寫命令是40個(gè)字節(jié),其余為38個(gè)字節(jié)。

寫一個(gè)Double Word類型的數(shù)據(jù),前面的0—21字節(jié)為 :

68 23 23 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10

寫一個(gè)其它類型的數(shù)據(jù),前面的0—21字節(jié)為 :(與上面比較,只是長(zhǎng)度字節(jié)發(fā)生變化)

68 21 21 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10

從22字節(jié)開始根據(jù)寫入數(shù)據(jù)的值和位置不同而變化。表二是幾個(gè)寫命令的Byte22—40。

字 節(jié) 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

寫入位置及值 長(zhǎng)度 個(gè)數(shù) 類型 偏移量 位數(shù) 值、校驗(yàn)碼、結(jié)束符

M0.0=1 01 00 01 00 00 83 00 00 00 00 03 00 01 01 00 71 16

M0.0=0 01 00 01 00 00 83 00 00 00 00 03 00 01 00 00 70 16

M0.1=1 01 00 01 00 00 83 00 00 01 00 03 00 01 01 00 72 16

vb100=10 02 00 01 00 01 84 00 03 20 00 04 00 08 10 00 AE 16

vb100=FF 02 00 01 00 01 84 00 03 20 00 04 00

如何利用vb編程判斷二維數(shù)組是否對(duì)稱

您可以遍歷來判斷是否對(duì)稱

語法為vb.net

Sub?checkSym(ByVal?a?As?Array)

Dim?i?As?Integer?=?ubound(a,?1)

Dim?j?As?Integer?=?ubound(a,?2)

If?i??j?Then?GoTo?NotSym

Dim?n?As?Integer?=?0

Dim?k?As?Integer?=?0

While?n?=?i

k?=?0

While?k?=?i

If?a.getValue(n,?k)??a.getValue(i?-?n,?i?-?k)?Then?GoTo?NotSym

k?=?k?+?1

End?While

n?=?n?+?1

End?While

Msgbox("對(duì)稱")

Exit?Sub

NotSym:

Msgbox("不對(duì)稱")

End?Sub

如果您的矩陣過大不可遍歷的時(shí)候可以考慮隨機(jī)數(shù)算法。

Sub?checkSym(ByVal?a?As?Array)

Dim?i?As?Integer?=?ubound(a,?1)

Dim?j?As?Integer?=?ubound(a,?2)

If?i??j?Then?GoTo?NotSym

Dim?n?As?Integer?=?0

Dim?k?As?Integer?=?0

j?=?0

While?j?=?1000?'這里1000表示檢驗(yàn)次數(shù),次數(shù)越多準(zhǔn)確性越高然而耗時(shí)越長(zhǎng)

k?=?Math.Round(VBMath.Rnd?*?i,?0)

n??=??Math.Round(VBMath.Rnd?*?i,?0)

If?a.getValue(n,?k)??a.getValue(i?-?n,?i?-?k)?Then?GoTo?NotSym

j?=?j?+?1

End?While

Msgbox("可能對(duì)稱")

Exit?Sub

NotSym:

Msgbox("不對(duì)稱")

End?Sub

希望有所幫助

VB.NET如何對(duì)輸入的數(shù)據(jù)進(jìn)行合法性檢驗(yàn),過濾不合法的數(shù)據(jù)代碼

合法性校驗(yàn)有很多方法,要視情況而定,比如說可以用正則表達(dá)式,如果是數(shù)字,除了正則表達(dá)式,也可以用諸如TryParse這種方法。

vb與歐姆龍plc通訊問題

太陽雨多年積攢極其珍貴的原創(chuàng)VB串口通信技術(shù)資料V3.0(800M)

VB串口通信編程源碼200個(gè),多種行業(yè)多種應(yīng)用...

VB串口通信技術(shù)文章160篇,詳盡地對(duì)VB串口通信的詮釋...

VB串口通信電子書籍16部,工業(yè)通信名家著作,經(jīng)典細(xì)致...

VB串口通信控件16個(gè),簡(jiǎn)化串口通信編碼,提高開發(fā)效率...

VB串口視頻教程46個(gè),兩套完整視頻教程,講解直觀,更快掌握...

超級(jí)贈(zèng)品一:OSI網(wǎng)絡(luò)模型教程48M

超級(jí)贈(zèng)品二:串口硬件層知識(shí)大全資料包24M

超級(jí)贈(zèng)品三:串口調(diào)試工具80個(gè),應(yīng)用于各種串口調(diào)試與校驗(yàn)計(jì)算...

超級(jí)贈(zèng)品四:程序員發(fā)展類文章和書籍12部,幫助您的成長(zhǎng),健康和發(fā)展....

超級(jí)贈(zèng)品五:更送虛擬串口調(diào)試軟件, 幫助你在沒有串口的電腦上也能正常調(diào)試...

你在淘寶搜索“太陽雨VB串口資料”就可以找到,希望可以幫助到你。

同時(shí),還有"太陽雨VC串口資料"和"太陽雨DELPHI"串口資料...

vb.net數(shù)組是否包含別的數(shù)

是。VB.NET是一種簡(jiǎn)單,現(xiàn)代,面向?qū)ο蟮挠?jì)算機(jī)編程語言,它由微軟開發(fā),將NETFramework和公共語言運(yùn)行庫的強(qiáng)大功能相結(jié)合,其數(shù)組是包含別的數(shù),可以通過Set集合也能判斷數(shù)組中是否包含指定元素,“數(shù)組”是一組邏輯上相互關(guān)聯(lián)的值。

網(wǎng)站名稱:vb.netfcs校驗(yàn) vbnet wcf
分享網(wǎng)址:http://muchs.cn/article48/doschhp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、網(wǎng)站內(nèi)鏈、網(wǎng)站導(dǎo)航搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)