醉湮邃虞
醉湮邃虞話老黑
級(jí)別: 略有小成
|
自編的MODBUS 子站通訊程序與主設(shè)備通訊 測(cè)試時(shí)使用了觸摸屏做主站 觸摸屏單獨(dú)連接一個(gè)PLC,各種速率通訊正常 但多個(gè)PLC連接后, 9600速率,通訊正常, 38400時(shí),偶爾發(fā)生子站丟失,可以自恢復(fù) 115200 時(shí), 觸摸屏寫(xiě)各個(gè)PLC數(shù)據(jù),通訊正常 觸摸屏讀數(shù)據(jù),個(gè)別PLC有丟失現(xiàn)象,只能發(fā)送寫(xiě)指令后,才能讀,過(guò)幾秒又有子站丟失 懷疑PLC計(jì)算CRC時(shí)間過(guò)長(zhǎng),在高速率下應(yīng)答超時(shí)。試驗(yàn)增加觸摸屏超時(shí)時(shí)間,無(wú)效果 不知是不是我的程序有問(wèn)題 |
|
---|---|---|
|
醉湮邃虞
醉湮邃虞話老黑
級(jí)別: 略有小成
|
其實(shí)這段程序其實(shí)一直使用著,沒(méi)什么問(wèn)題 最近只是想提高速率,才出現(xiàn)了問(wèn)題 有可能是我用的這個(gè)觸摸屏 數(shù)字顯示元件 機(jī)理有問(wèn)題 當(dāng)用三個(gè) 數(shù)字顯示元件 分別顯示三個(gè)PLC的內(nèi)存數(shù)據(jù)時(shí),高速率就有可能出現(xiàn)設(shè)備丟失現(xiàn)象 但同樣的速率下,即使用 六個(gè) 數(shù)據(jù)傳輸元件 ,利用觸摸屏內(nèi)部毫秒計(jì)時(shí)器的第0位作為觸發(fā)傳送條件, 同時(shí)讀六個(gè)PLC 內(nèi)存數(shù)據(jù),每個(gè)每次讀取10字節(jié),通訊、數(shù)據(jù)仍然很正常 |
|
---|---|---|
|
醉湮邃虞
醉湮邃虞話老黑
級(jí)別: 略有小成
|
我還是對(duì)這個(gè)問(wèn)題 糾纏了起來(lái) 我將觸摸屏幕作為從站,兩個(gè)PLC,分別一個(gè)從站,一個(gè)主站,同樣對(duì)100字節(jié)進(jìn)行讀取 經(jīng)測(cè)試,觸摸屏應(yīng)答僅許20毫秒,我的程序超過(guò)200毫秒才應(yīng)答 看來(lái)CRC計(jì)算是主要問(wèn)題 于是又測(cè)試CRC計(jì)算程序,計(jì)算一個(gè)200字節(jié)的CRC高達(dá)165毫秒, 看來(lái)得修改CRC計(jì)算程序了 把CRC計(jì)算改為了查表法后測(cè)試,200字節(jié)需要70毫秒(據(jù)兩種算法的原理,平均運(yùn)算速度應(yīng)提高5倍左右,可能是因S700采用的是解釋運(yùn)行,所以速度才提高了1倍左右) 于是得出了結(jié)論, 當(dāng)PLC作為主站時(shí),因不需要即時(shí)應(yīng)答,對(duì)CRC的計(jì)算時(shí)長(zhǎng)要求不高,其影響的只是數(shù)據(jù)查詢周期、掃描周期 當(dāng)PLC作為從站時(shí),需要及時(shí)應(yīng)答,最好采用硬件驗(yàn)證CRC,但S7200未提供MODBUS 硬件,所以一定要用查表法 犧牲這512字節(jié)的表格內(nèi)存空間是必要的。 這也就是一直未發(fā)現(xiàn)我的程序有問(wèn)題的原因,因?yàn)橐恢庇眠@段程序作為主站。 [ 此帖被醉湮邃虞在2014-03-03 14:58重新編輯 ] |
|
---|---|---|
|