閱讀 | 訂閱
閱讀 | 訂閱
控制系統(tǒng)

基于VB的伺服驅(qū)動器串口通信的實現(xiàn)(二)

星之球激光 來源:工控網(wǎng)2012-10-29 我要評論(0 )   

vb實現(xiàn)pc機與indradrive的串行通信 pc機與indradrive的通信常采用主從問答方式,pc機始終具有初始傳送優(yōu)先權(quán),所有的通信均由pc機來啟動。每次通信都是由pc機通過發(fā)送(...

vb實現(xiàn)pc機與indradrive的串行通信

  pc機與indradrive的通信常采用主從問答方式,pc機始終具有初始傳送優(yōu)先權(quán),所有的通信均由pc機來啟動。每次通信都是由pc機通過發(fā)送(讀/寫參數(shù))命令啟動通信,indradrive在接到pc機發(fā)送的命令后,首先檢查命令中的起始標(biāo)志,然后檢查命令中的驅(qū)動器地址是否與自己的驅(qū)動器地址相符,如果不一致,說明計算機是與其它的驅(qū)動器進(jìn)行通信,從而忽略該命令;如果一致,就響應(yīng)該命令,并將執(zhí)行結(jié)果回送到pc機,一次通信過程結(jié)束。

  在vb的控件工具箱中提供了一個使用非常方便的串行通信控件mscomm,它全面地提供了使用串行通信上層開發(fā)的所有細(xì)則,串行通信的實現(xiàn)既可以采用中斷方式,又可以采用查詢方式。mscomm控件提供了實現(xiàn)串行端口中斷功能的oncomm事件,該事件是唯一的,可以截取串口的任何消息,當(dāng)有串口事件或錯誤發(fā)生時,vb程序就會自動轉(zhuǎn)入oncomm事件處理程序中。commevent屬性存有串口最近的事件或錯誤的數(shù)值代碼,可以在程序中隨時讀取commevent屬性值來了解通信情況,oncomm事件是和commevent屬性密切相關(guān)、一起使用,當(dāng)任何一個oncomm事件或錯誤發(fā)生時,都會使得commevent屬性值改變。在oncomm事件處理過程中,可以通過判斷commevent屬性值,對于不同的屬性值轉(zhuǎn)入不同的事件處理過程。

  根據(jù)sis通信協(xié)議的規(guī)定,vb程序中主要是針對mscomm控件的操作,主要有mscomm控件的初始化和oncomm事件的處理。

  mscomm控件的主要初始化代碼如下:

  mscomm_com1.commport = 1

  ‘設(shè)定需要使用的串口

  mscomm_com1.settings = “115200,n,8,1”

  ‘設(shè)定傳輸?shù)牟ㄌ芈屎托r灧绞?/p>

  mscomm_com1.portopen = true ‘打開通信串口

  mscomm_com1.rthreshold = 1

  ‘設(shè)置輸入緩沖區(qū)字符輸入門限

  oncomm事件的處理程序主要代碼如下:

  private sub mscomm_com1_oncomm()

  dim input_buffer as variant dim upper_limit as integer dim

  input_to_hex as string

  dim i as integer

  input_buffer = mscomm_com1.input

  ‘從接收緩沖區(qū)copy字符

  upper_limit = ubound(input_buffer)

  ‘收到數(shù)據(jù)的個數(shù)

  for i = 0 to upper_limit

  input_to_hex = hex(input_buffer(i))

  ‘將接收到的數(shù)據(jù)轉(zhuǎn)化為十六進(jìn)制

  if len(input_to_hex) 《 2 then

  ‘將不滿兩位的十六進(jìn)制值前補0

  input_to_hex = “0” & input_to_hex

  end if

  if i = 0 then

  ‘每開始新的一次接收,清空顯示文本框

  txtreceivedata.text = “”

  end if

  txtreceivedata.text = txtreceivedata.text & input_to_hex & “ ”

  ‘顯示接收的內(nèi)容

  next

  end sub

讀寫命令實例及注意事項

  有了上面的基礎(chǔ),就可以根據(jù)sis協(xié)議的數(shù)據(jù)格式來實時讀寫indradrive的內(nèi)部參數(shù),如讀取位置反饋值參數(shù)s-0-0051的值,首先將參數(shù)號51轉(zhuǎn)化為十六進(jìn)制數(shù)33,即在用戶數(shù)據(jù)頭的第四、五兩個字節(jié)分別寫入3300(注意:高字節(jié)在后,低字節(jié)在前);其它字節(jié)可以相繼得出,因是讀參數(shù)值,所以不需寫用戶數(shù)據(jù);從而發(fā)送內(nèi)容應(yīng)為:02 02 05 05 00 80 01 01 3c 01 00 33 00。如果通信正常,則會接收到類似的字節(jié)內(nèi)容:02 20 07 07 10 80 01 01 00 3c 01 4e ac 07 00,其中后4個字節(jié)即為位置反饋值(注意:高字節(jié)在后,低字節(jié)在前),十六進(jìn)制表示應(yīng)為7ac4e,將其轉(zhuǎn)化為十進(jìn)制為502862,實際的位置值應(yīng)為50.2862(位置值的分辨率為0.0001)。在寫參數(shù)時,和讀參數(shù)的不同的地方就是用到用戶數(shù)據(jù),也就是將欲寫入的值寫到用戶數(shù)據(jù)的位置。如將100.0000寫入最大行程值參數(shù)s-0-0278,首先將參數(shù)號278轉(zhuǎn)化為十六進(jìn)制數(shù)116,即在用戶數(shù)據(jù)頭的第四、五兩個字節(jié)分別寫入16 11;再將1000000(注意不是100.0000)轉(zhuǎn)化為十六進(jìn)制為f4240,即在用戶數(shù)據(jù)的四個字節(jié)依次寫入40 42 0f 00;其它字節(jié)可以相繼得出;發(fā)送內(nèi)容應(yīng)為:02 76 09 09 00 8f 01 01 3c 01 00 16 01 40 42 0f 00。如通信正常,則會接收到:02 1a 03 03 10 8f 01 01 00 3c 01,表示改寫參數(shù)成功。

  值得注意的是,除了在數(shù)據(jù)格式上遵從sis協(xié)議之外,操作過程中還應(yīng)注意以下幾點:

  通信波特率應(yīng)為115200 bps。

  寫參數(shù)時,應(yīng)先使indradrive處于pm(參數(shù)模式)。通過置位參數(shù)s-0-0420(激活參數(shù)模式)的bit1、bit0,就可以將indradrive切換到pm;而在改寫參數(shù)s-0-0420時,不需在pm;在將s-0-0420的bit1和bit0置位后,不要忘了再將其復(fù)位,這樣便進(jìn)入pm,便可以隨意改寫參數(shù)了。在配置完參數(shù)后,應(yīng)該跳出pm,進(jìn)入om(操作模式),通過參數(shù)s-0-0422(跳出參數(shù)模式)來完成,配置過程與s-0-0420類似。

 ?。?)讀參數(shù)時無論indradrive處于pm和om均可讀取,沒有限制。

 ?。?)讀參數(shù)時,接收到內(nèi)容的第11個字節(jié)以后的內(nèi)容為用戶數(shù)據(jù);而寫參數(shù)時,接收到的內(nèi)容中沒有用戶數(shù)據(jù)部分,只要通信正常,均會收到相同內(nèi)容02

  1a 03 03 10 8f 01 01 00 3c 01。

  (5)如果正在上位機用indraworks調(diào)試indradrive,則讀寫參數(shù)時,應(yīng)使indraworks離線,否則會提示串口被占用。

結(jié)語

  本文所闡述的串口通信方法已成功應(yīng)用于調(diào)試博世力士樂indradrive伺服驅(qū)動器的實驗中,靈活方便,達(dá)到了實時修改驅(qū)動器的參數(shù)的要求;適當(dāng)改進(jìn)即可應(yīng)用于地鐵站臺屏蔽門系統(tǒng)和安全門系統(tǒng)以及自動門系統(tǒng)的上位機監(jiān)控,具有較好的實際價值和可擴展性。

 

轉(zhuǎn)載請注明出處。

暫無關(guān)鍵詞
免責(zé)聲明

① 凡本網(wǎng)未注明其他出處的作品,版權(quán)均屬于激光制造網(wǎng),未經(jīng)本網(wǎng)授權(quán)不得轉(zhuǎn)載、摘編或利用其它方式使用。獲本網(wǎng)授權(quán)使用作品的,應(yīng)在授權(quán)范圍內(nèi)使 用,并注明"來源:激光制造網(wǎng)”。違反上述聲明者,本網(wǎng)將追究其相關(guān)責(zé)任。
② 凡本網(wǎng)注明其他來源的作品及圖片,均轉(zhuǎn)載自其它媒體,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本媒贊同其觀點和對其真實性負(fù)責(zé),版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系我們刪除。
③ 任何單位或個人認(rèn)為本網(wǎng)內(nèi)容可能涉嫌侵犯其合法權(quán)益,請及時向本網(wǎng)提出書面權(quán)利通知,并提供身份證明、權(quán)屬證明、具體鏈接(URL)及詳細(xì)侵權(quán)情況證明。本網(wǎng)在收到上述法律文件后,將會依法盡快移除相關(guān)涉嫌侵權(quán)的內(nèi)容。

網(wǎng)友點評
0相關(guān)評論
精彩導(dǎo)讀