設為主頁(yè)  加入收藏
 
·I2S數字功放IC/內置DSP音頻算法功放芯片  ·馬達驅動(dòng)IC  ·2.1聲道單芯片D類(lèi)功放IC  ·內置DC/DC升壓模塊的D類(lèi)功放IC  ·鋰電充電管理IC/快充IC  ·無(wú)線(xiàn)遙控方案  ·直流無(wú)刷電機驅動(dòng)芯片
當前位置:首頁(yè)->方案設計
基于VB的伺服驅動(dòng)器串口通信的實(shí)現
文章來(lái)源: 更新時(shí)間:2015/7/29 9:13:00
在線(xiàn)咨詢(xún):
給我發(fā)消息
張代明 3003290139
給我發(fā)消息
小鄢 2850985542
給我發(fā)消息
李湘寧 2850985550
13713728695
 

伺服驅動(dòng)器是構成伺服系統的基本部件,廣泛應用于各種電力傳動(dòng)自動(dòng)控制系統中,如:數控機床、柔性制造系統、機器人驅動(dòng)、火炮隨動(dòng)系統、雷達控制、艦船推進(jìn)、車(chē)輛驅動(dòng)、印刷設備、紡織設備、縫紉設備等。在應用伺服驅動(dòng)器的過(guò)程中,實(shí)時(shí)讀取和修改各個(gè)控制參數來(lái)達到實(shí)時(shí)控制,是對伺服系統的基本要求。
  本文即針對德國博世力士樂(lè )的伺服驅動(dòng)器indradrive,采用靈活易用的VB6.0編程語(yǔ)言,通過(guò)indradrive本身所帶的rs232串行通信接口,實(shí)現了上位pc機與伺服驅動(dòng)器的串行通信,完成了對伺服驅動(dòng)器內部各控制參數的實(shí)時(shí)控制。
indradrive的通信協(xié)議
  indradrive采用sis通信協(xié)議,它是一種二進(jìn)制通信協(xié)議,含有完整的報文格式和返回校驗格式。針對博世力士樂(lè )的各種產(chǎn)品(plc、伺服驅動(dòng)器等),sis協(xié)議的通信格式是統一的。
  sis協(xié)議采用的數據格式為:1位起始位,8位數據,1位或2位停止位,無(wú)校驗位;通信傳輸數據的波特率為115200bps。sis協(xié)議采用十六進(jìn)制數據格式來(lái)表示各種指令代碼及數據,其軟件通信指令經(jīng)過(guò)優(yōu)化設計后,只有兩條,一條為讀指令,一條為寫(xiě)指令,兩條指令使得上位機軟件編寫(xiě)非常方便。
  sis協(xié)議的報文格式如附表所示。

  附表 sis協(xié)議的報文格式

 

  其中報頭由8個(gè)字節組成,它們的意義如下:
  第一個(gè)字節stz:起始位,默認為0x02;
  第二個(gè)字節cs:用于校驗數據,它的值是除此字節外,所有的數相加后的低8位值異或ff,再加1后的值;
  第三個(gè)字節datl:除去報頭后所有數據的長(cháng)度(字節的個(gè)數);
  第四個(gè)字節datlw:重復第三個(gè)字節的內容;
  第五個(gè)字節cntrl:決定錯誤返回類(lèi)型,默認為0x00;
  第六個(gè)字節service:服務(wù)類(lèi)型(讀參數寫(xiě)0x80,寫(xiě)參數寫(xiě)0x8f);
  第七個(gè)字節adrs:驅動(dòng)器地址;
  第八個(gè)字節adre:驅動(dòng)器地址。
  用戶(hù)數據頭包含5個(gè)字節,意義如下:
  第一個(gè)字節control byte:操作參數值,默認為0x3c;
  第二個(gè)字節device address(unit address):驅動(dòng)器地址;
  第三個(gè)字節parameter type:參數類(lèi)型,對于驅動(dòng)器其值為0x00;
  第四、五字節parameter number:參數號,對于驅動(dòng)器的s參數,直接寫(xiě)參數號的十六進(jìn)制值;對于p參數,寫(xiě)“215+參數號”的十六進(jìn)制值。
  用戶(hù)數據的數據長(cháng)度取決于操作參數的數據類(lèi)型,如操作參數為int型,寫(xiě)2個(gè)字節;為dword型,寫(xiě)4個(gè)字節。寫(xiě)的時(shí)候注意低位字節在前,高位字節在后。
VB實(shí)現pc機與indradrive的串行通信
  pc機與indradrive的通信常采用主從問(wèn)答方式,pc機始終具有初始傳送優(yōu)先權,所有的通信均由pc機來(lái)啟動(dòng)。每次通信都是由pc機通過(guò)發(fā)送(讀/寫(xiě)參數)命令啟動(dòng)通信,indradrive在接到pc機發(fā)送的命令后,首先檢查命令中的起始標志,然后檢查命令中的驅動(dòng)器地址是否與自己的驅動(dòng)器地址相符,如果不一致,說(shuō)明計算機是與其它的驅動(dòng)器進(jìn)行通信,從而忽略該命令;如果一致,就響應該命令,并將執行結果回送到pc機,一次通信過(guò)程結束。
  在VB的控件工具箱中提供了一個(gè)使用非常方便的串行通信控件mscomm,它全面地提供了使用串行通信上層開(kāi)發(fā)的所有細則,串行通信的實(shí)現既可以采用中斷方式,又可以采用查詢(xún)方式。mscomm控件提供了實(shí)現串行端口中斷功能的oncomm事件,該事件是唯一的,可以截取串口的任何消息,當有串口事件或錯誤發(fā)生時(shí),VB程序就會(huì )自動(dòng)轉入oncomm事件處理程序中。commevent屬性存有串口最近的事件或錯誤的數值代碼,可以在程序中隨時(shí)讀取commevent屬性值來(lái)了解通信情況,oncomm事件是和commevent屬性密切相關(guān)、一起使用,當任何一個(gè)oncomm事件或錯誤發(fā)生時(shí),都會(huì )使得commevent屬性值改變。在oncomm事件處理過(guò)程中,可以通過(guò)判斷commevent屬性值,對于不同的屬性值轉入不同的事件處理過(guò)程。
  根據sis通信協(xié)議的規定,VB程序中主要是針對mscomm控件的操作,主要有mscomm控件的初始化和oncomm事件的處理。
  mscomm控件的主要初始化代碼如下:
  mscomm_com1.commport = 1
  ‘設定需要使用的串口
  mscomm_com1.settings = “115200,n,8,1”
  ‘設定傳輸的波特率和校驗方式
  mscomm_com1.portopen = true ‘打開(kāi)通信串口
  mscomm_com1.rthreshold = 1
  ‘設置輸入緩沖區字符輸入門(mén)限
  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
  ‘從接收緩沖區copy字符
  upper_limit = ubound(input_buffer)
  ‘收到數據的個(gè)數
  for i = 0 to upper_limit
  input_to_hex = hex(input_buffer(i))
  ‘將接收到的數據轉化為十六進(jìn)制
  if len(input_to_hex) 《 2 then
  ‘將不滿(mǎn)兩位的十六進(jìn)制值前補0
  input_to_hex = “0” & input_to_hex
  end if
  if i = 0 then
  ‘每開(kāi)始新的一次接收,清空顯示文本框
  txtreceivedata.text = “”
  end if
  txtreceivedata.text = txtreceivedata.text & input_to_hex & “ ”
  ‘顯示接收的內容
  next
  end sub
讀寫(xiě)命令實(shí)例及注意事項
  有了上面的基礎,就可以根據sis協(xié)議的數據格式來(lái)實(shí)時(shí)讀寫(xiě)indradrive的內部參數,如讀取位置反饋值參數s-0-0051的值,首先將參數號51轉化為十六進(jìn)制數33,即在用戶(hù)數據頭的第四、五兩個(gè)字節分別寫(xiě)入3300(注意:高字節在后,低字節在前);其它字節可以相繼得出,因是讀參數值,所以不需寫(xiě)用戶(hù)數據;從而發(fā)送內容應為:02 02 05 05 00 80 01 01 3c 01 00 33 00。如果通信正常,則會(huì )接收到類(lèi)似的字節內容:02 20 07 07 10 80 01 01 00 3c 01 4e ac 07 00,其中后4個(gè)字節即為位置反饋值(注意:高字節在后,低字節在前),十六進(jìn)制表示應為7ac4e,將其轉化為十進(jìn)制為502862,實(shí)際的位置值應為50.2862(位置值的分辨率為0.0001)。在寫(xiě)參數時(shí),和讀參數的不同的地方就是用到用戶(hù)數據,也就是將欲寫(xiě)入的值寫(xiě)到用戶(hù)數據的位置。如將100.0000寫(xiě)入最大行程值參數s-0-0278,首先將參數號278轉化為十六進(jìn)制數116,即在用戶(hù)數據頭的第四、五兩個(gè)字節分別寫(xiě)入16 11;再將1000000(注意不是100.0000)轉化為十六進(jìn)制為f4240,即在用戶(hù)數據的四個(gè)字節依次寫(xiě)入40 42 0f 00;其它字節可以相繼得出;發(fā)送內容應為:02 76 09 09 00 8f 01 01 3c 01 00 16 01 40 42 0f 00。如通信正常,則會(huì )接收到:02 1a 03 03 10 8f 01 01 00 3c 01,表示改寫(xiě)參數成功。
  值得注意的是,除了在數據格式上遵從sis協(xié)議之外,操作過(guò)程中還應注意以下幾點(diǎn):
  通信波特率應為115200 bps。
  寫(xiě)參數時(shí),應先使indradrive處于pm(參數模式)。通過(guò)置位參數s-0-0420(激活參數模式)的bit1、bit0,就可以將indradrive切換到pm;而在改寫(xiě)參數s-0-0420時(shí),不需在pm;在將s-0-0420的bit1和bit0置位后,不要忘了再將其復位,這樣便進(jìn)入pm,便可以隨意改寫(xiě)參數了。在配置完參數后,應該跳出pm,進(jìn)入om(操作模式),通過(guò)參數s-0-0422(跳出參數模式)來(lái)完成,配置過(guò)程與s-0-0420類(lèi)似。
 。3)讀參數時(shí)無(wú)論indradrive處于pm和om均可讀取,沒(méi)有限制。
 。4)讀參數時(shí),接收到內容的第11個(gè)字節以后的內容為用戶(hù)數據;而寫(xiě)參數時(shí),接收到的內容中沒(méi)有用戶(hù)數據部分,只要通信正常,均會(huì )收到相同內容02
  1a 03 03 10 8f 01 01 00 3c 01。
 。5)如果正在上位機用indraworks調試indradrive,則讀寫(xiě)參數時(shí),應使indraworks離線(xiàn),否則會(huì )提示串口被占用。
結語(yǔ)
  本文所闡述的串口通信方法已成功應用于調試博世力士樂(lè )indradrive伺服驅動(dòng)器的實(shí)驗中,靈活方便,達到了實(shí)時(shí)修改驅動(dòng)器的參數的要求;適當改進(jìn)即可應用于地鐵站臺屏蔽門(mén)系統和安全門(mén)系統以及自動(dòng)門(mén)系統的上位機監控,具有較好的實(shí)際價(jià)值和可擴展性。

 
 
 
    相關(guān)產(chǎn)品  
 
 
·藍牙音箱的音頻功放/升壓/充電管
·單節鋰電內置升壓音頻功放IC選型
·HT7179 12V升24V內置
·5V USB輸入、三節鋰電升壓型
·網(wǎng)絡(luò )主播聲卡專(zhuān)用耳機放大IC-H
 
M12269 河北發(fā)電機組 HT366 ACM8629 HT338 

業(yè)務(wù)洽談:手機:13713728695(微信同號)   QQ:3003207580  EMAIL:panbo@szczkjgs.com   聯(lián)系人:潘波

地址:深圳市寶安西鄉航城大道航城創(chuàng )新創(chuàng )業(yè)園A5棟307/309

版權所有:深圳市永阜康科技有限公司  備案號:粵ICP備17113496號

高清免费av在线播放不卡_丰满曰韩放荡少妇无码视频_92在线精品视频在线观看_欧美日本高清在线不卡区