熟女人妻水多爽中文字幕,国产精品鲁鲁鲁,隔壁的少妇2做爰韩国电影,亚洲最大中文字幕无码网站

技術頻道

娓娓工業
您現在的位置: 中國傳動網 > 技術頻道 > 技術百科 > 快速入門 | 篇二十:正運動技術運動控制器MODBUS通訊

快速入門 | 篇二十:正運動技術運動控制器MODBUS通訊

時間:2020-12-25 10:37:27來源:正運動技術

導語:?

  視頻教材:《視頻教材:正運動技術運動控制器MODBUS通訊


               材料準備    

  1.電腦1臺

  2.控制器2個

  3.+24V直流電源1個

  4.驅動器+電機若干

  5.交換機1個

  6.控制器接線端子若干

  7.網線若干

  8.連接線若干

  另:IO設備、擴展模板等根據需求選用。

  

  運動控制

  

  控制器接線配置

               MODBUS                  通訊協議簡介    


  MODBUS協議是一個通用的標準協議,幾乎所有的控制設備和智能化儀表都支持MODBUS協議,這樣不同廠家的設備之間就可以互相通訊,連接到同一個控制網絡。

  MODBUS的串行傳輸模式分為:RTU模式和ASCII模式,RTU模式通訊傳輸的數據為二進制數據,ASCII模式通訊傳輸的數據為ASCII碼,RTU模式的通訊速率比ASCII模式快。

  MODBUS發展至今包含好幾種協議模式:控制器的串口和網口的默認協議均為MODBUS協議,其中串口為MODBUS_RTU協議,網口為MODBUS_TCP協議。

  控制器支持MODBUS_RTU模式的串口:RS232、RS485、RS422,當從串口接收到數據時,會直接根據報文中的數據進行控制。

  控制器支持的網口協議MODBUS_TCP接口:EtherNET網口。

  網口主要用于與PC與人機界面通訊。

  控制器的串口和網口在 MODBUS協議下讀寫數據,使用MODBUS相關指令讀寫,數據保存在MODBUS寄存器中傳遞。也可以通過指令將串口或網口配置為無協議模式,采用自定義通訊指令讀寫數據。

  ZMC316 系列脈沖型控制器各接口配置如下:

  通訊接口包含RS232,RS485,RS422,以太網,U盤,CAN接口。

  

  運動控制

  

  自帶16個脈沖軸,面板上包含15個脈沖接口和3個編碼器接口,第16個脈沖軸由OUT輸出口控制。

  支持使用擴展模塊擴展至24個脈沖軸,支持多達24軸直線插補、任意圓弧插補、空間圓弧、螺旋插補、電子凸輪、電子齒輪、同步跟隨、虛擬軸設置等;采用優化的網絡通訊協議可以實現實時的運動控制。

  應用程序可以使用ZDevelop軟件或VC、VB、VS、C++、LabVIEW、C#等軟件來開發。

               01                   三類串口說明    

  RS232串口常用于連接PC或人機界面

  RS485串口常用于與控制裝置和智能儀表的通訊控制

  RS422串口只有個別型號控制器才有此接口

               RS232    

  控制器的RS232接口可以做MODBUS主站或從站,支持1個主站發送數據,1個從站接收數據。做主站時,可連接驅動器、變頻器、溫控儀等,進行數據讀出與寫入的控制。做從站時,可連接人機界面,用來監控運行狀態,常用于連接PC或人機界面。

  控制器的RS232接口采用DB9公頭,使用相應的連接線連接兩個設備。

  

  運動控制

  運動控制

  

  RS232的標準接線只需要三根線即可,2根數據信號TXD和RXD,1根地線EGND,數據信號TXD與RXD交叉連接,再將EGND連到一起。

  接線參考如下:

  

  運動控制

  

          RS485    

  主要提供主/從站的多臺通訊設備聯機,理論上支持128個節點。做主站時,可連接驅動器、變頻器、溫控儀等,進行數據讀出與寫入的控制;做從站時,能與PLC通訊,可連接人機界面,用來監控運行狀態。

  

  運動控制

  

  RS485接口采用差分傳輸方式,通過判斷A與B之間的電壓差來確定是高電平或低電平。

  

  運動控制

  

  控制器的RS485接口采用了簡易接線方式,如下圖所示,控制器的485A、485B、EGND地線, 分別接第一個從站的A、B、地線, 然后再接第二個從站的A、B、地線(A 接 A, B 接 B,信號共地),并且控制器和最后一個從站的485A 和485B 要并聯120 歐電阻防止信號反射,線纜需要使用屏蔽雙絞線,避免信號干擾,每個節點支線的距離要小于3m。

  

  運動控制

  

          RS422    

  控制器的RS422接口可以做MODBUS 主站或從站,支持1發10收。

  控制器的RS422接口采用了簡易接線方式,為四線制,接線時需要接5根線,RX+/RX-(接收信號)、TX+/TX- (發送信號)、一根信號地線。

  控制器的RS422接口相比RS485和RS232,布線成本高,接線容易弄錯,包含422接口的控制器型號很少。

  

  運動控制

  運動控制

  

               02                  串口參數    

  連接串口使用:串口通常可選RS232串口或RS485串口,不管哪種串口,除了端口號和接線方法有所不同,默認參數與操作指令都是相同的。

  串口默認參數為:波特率38400,數據位8,停止位1,校驗位無,采用SETCOM指令配置串口參數。控制器重新上電后,SETCOM參數會還原成默認值,所以請在程序開頭寫SETCOM設置。

  控制器所有串口的MODBUS協議站號ADDRESS為1-127,缺省=1。

  在一個MODBUS網絡上的所有設備都必須選擇相同的傳輸模式和串口參數,否則無法通訊。

  控制器默認PORT0(COM0)為RS232串口,PORT1(COM1)為RS485串口,PORT2(COM2)為RS422串口,支持在線命令窗口發送?*setcom打印查看,或在“控制器狀態”窗口查看。

  SETCOM指令除了可以配置串口的通訊基本參數外,還可以選擇參數配置通訊協議,設置控制器為主端設備還是從端設備,默認為從端,還可以開啟自定義通訊模式(即mode=0無協議模式)。

  語法:SETCOM (baudrate,databits,stopbits,parity,port[,mode] [,variable] [,timeout])

  

  運動控制

  

  mode參數選擇協議:

  1.與觸摸屏通訊時,mode參數選擇協議:4

  Port0:setcom(9600,8,1,0,0,4,2,1000)

  Port1:setcom(9600,8,1,0,1,4,2,1000)

  2.控制器通過RS485做主站時,mode參數選擇協議:14

  Port1:setcom(38400,8,1,0,1,14,2,1000)

               03                  網口參數    

  控制器網口支持MODBUS-TCP協議,出廠默認IP地址為192.168.0.11,可使用IP_ADDRESS指令修改IP地址或在修改IP地址窗口修改,修改一次永久生效。

  控制器至少包含2個網口通道,可在在線命令發送?*port打印查看,如下圖,網口的端口號為502。

  

  運動控制

  

  ZMC432通道

  

  運動控制

  

  ZMC316通道

  不同的控制器可通過網口互聯,EtherNET網線接口只有一個,可使用交換機,網口互聯的前提是兩個控制器均有CONNECT通道,用MODBUSM_DES2指令開啟連接。

               04                  串口/網口讀寫    

  MODBUS通訊通過功能碼告訴被尋址到的終端執行何種功能,如運行命令、讀取監控狀態、修改參數、讀取參數等,MODBUS協議制定了相關的功能碼。

  

  運動控制

  

  控制器也可直接使用MODBUS通訊功能碼,為方便使用,將一些常用的功能碼直接封裝為Basic指令,如下表Basic指令對應功能碼。

  

  運動控制

  

  串口和網口通訊的連接方法不同,讀寫都是使用同一套指令,數據由MODBUS寄存器存儲。

  1.MODBUS寄存器

  MODBUS通訊的數據使用MODBUS寄存器存儲,控制器的MODBUS寄存器符合MODBUS標準通訊協議,分為位寄存器和字寄存器兩類。

  位寄存器:MODBUS_BIT(布爾型)。

  字寄存器:包含MODBUS_REG(16位整型)、MODBUS_LONG(32位整型)、MODBUS_IEEE(32位浮點型)、MODBUS_STRING(8位字節型)。

  控制器中MODBUS字寄存器占用同一片系統變量空間,其中一個LONG占用兩個REG地址,一個IEEE也占用兩個REG地址,使用時要注意錯開字寄存器編號地址。

  所以要注意MODBUS_REG、MODBUS_LONG、MODBUS_IEEE地址在用戶應用程序中不能重疊。

  

  運動控制

  

  控制器的MODBUS存儲空間安排如下:

  

  運動控制

  運動控制

  

  2.MODBUS讀寫相關指令

  

  運動控制

  

  3.MODBUS讀/寫語法格式相同,如下所示:

  MODBUSM_REGGET (startreg, num, local_reg)

          startreg:對端的寄存器起始編號,從0開始

          num:寄存器個數

          local_reg:從本地系統MODBUS寄存器中取值,起始編號

  MODBUSM_REGSET (startreg, num, local_reg)

          startreg:對端的寄存器起始編號,從0開始

          num:寄存器個數

          local_reg:從本地系統MODBUS寄存器中取值,起始編號

  使用示例:

  MODBUSM_REGGET(0,10,100)                  '把對端位寄存器0~9復制到通訊本地的寄存器100~109    

  MODBUSM_REGSET(0,10,100)     '把本地位寄存器100~109設置到通訊對端的寄存器0~9

  4.建立MODBUS通訊

  (1)串口

  MODBUSM_DES (address[,port],[timer],[resendset])

  ADDRESS1 = MODBUSM_DES([port])

          address:對端的modbus協議站號

          port:當前modbus主通訊的port號

          timer:消息超時時間設置,缺省1000ms。

          resendset:超時消息重發設置,0-不重發,1-SEND指令重發,2-SEND與MODBUSM指令都重發。

  (2)網口

  MODBUSM_DES2 (id,port,"desipaddress",[timer],[resendset])

          id:對方控制器的MODBUS從端ID,缺省1

          port:支持兩種模式,?*PORT確認通道號及模式

                  ETH時,作為MODBUS_TCP主端通道

                  CONNECT時,做為控制器互聯通道

          desipaddress:字符串, 對方控制器的IP地址

          timer:消息超時時間設置,缺省1000ms

          resendset:超時消息重發設置,0-不重發,1-SEND指令超時重發,2-SEND與MODBUSM指令都超時重發。

               05                  串口通訊例程    

  控制器RS485做主站與從站的通訊。

  工程項目下包含三個文件:

  ModbusRead.bas :建立通訊連接,主站讀取從站數據。在線命令RUN開啟任務,開啟前先停止寫入任務,開啟語法:RUN "ModbusRead", 1。

  ModbusSet.bas :建立通訊連接,主站數據復制到從站。在線命令RUN開啟任務,開啟前先停止讀取任務,開啟語法:RUN "ModbusSet", 2。

  ModbusIni.bas :參數初始化,設置RS485的主從端,從站節點個數等信息。設為上電自動運行任務。

  

  運動控制

  

  例程設置了一個從站,支持設置多個從站,從站數量修改slaveCount參數。

  為了方便觀察數據,主站和從站均使用的控制器,將兩個控制器通過RS485連接。

  注意主站控制器的RS485需要處于ModbusMaster模式,如下圖。從站控制器的RS485需要處于ModbusSlave模式。

  

  運動控制

  

  ModbusIni.bas文件程序

  '************************變量定義*********************

  Global slaveCount

  slaveCount = 1         '從站的數量

  '因為從站地址ADDRESS不能為0, 0為廣播地址,所以后面的slaveID是從1開始, 所以數組大小+1

  Global slaveID(slaveCount+1)

  For i = 1 to slaveCount                 '索引從1開始

         slaveID(i)=i                             '從站ID從1開始, 一般由撥碼或者從站設置軟件設置

  Next

  Global keepReading, modbusErrorStatus, writeSlaveID

  writeSlaveID = 1         '用戶可通過PC程序選擇要寫入哪個從站數據

  keepReading = 1         '持續讀取的判斷標志變量, 用戶不需要修改,用做while循環條件

  modbusErrorStatus = 0         '判斷是否通信正常的標志變量

  '************************串口參數設置*********************

  'SETCOM (baudrate,databits,stopbits,parity,port [,mode] [,variable] [,timeout])

  '參數依此為:波特率,數據位,停止位,校驗位,串口端口號(默認232端口號0,485端口號為1)

  '后三個缺省參數:MODBUS模式(14代表控制器做主站,默認4為從站),MODBUS寄存器設置(2為缺省, MODBUS寄存器獨立, 不和VR或TABLE映射),通信超時閾值

  SETCOM(38400,8,1,0,1,14,2,1000)

  ModbusRead.bas文件程序

  '互斥操作,防止讀寫同時操作,多個modbus指令同時運行, 會造成通信出錯

  '             STOP                 "modbusSet.bas"    

               '用做modbus通信的成功標志變量    

  modbusErrorStatus = 0 '通訊正常值為             0    ,通訊異常值為             1

   

  while keepReading

      For i = 1 to slaveCount

          MODBUSM_DES(slaveID(i),1)                      '和從站1通訊    

          'MODBUSM_REGGET (0, 8, 10),從站1寄存器0-7的數據復制到主站10-17

          MODBUSM_REGGET(0,8,slaveID(i)*10)                     '獲取對端寄存器值    

          WAIT UNTIL MODBUSM_STATE <> 1         '等待消息結束

          IF MODBUSM_STATE=0 THEN

              ?slaveID(i),             "號節點通訊正常"    

          Else

              ?slaveID(i),             "號節點通訊出錯!!!"    

              modbusErrorStatus = 1

                           '可以在此處加入用戶的錯誤處理程序    

          Endif

          Delay(100) '兩個節點之間的通信延時

      Next

  Wend

  ModbusSet.bas文件程序

               '互斥操作,防止讀寫同時操作    

  keepReading = 0

  STOP "ModbusRead.bas"

  modbusErrorStatus = 0

  '如果取消對從站ID的判斷(If), 則需要提前寫好所有從站對應的主站寄存器數據

  FOR i = 1 To slaveCount

      IF slaveID(i) = writeSlaveID THEN             '遍歷從站節點,writeSlaveID參數選擇將主站數據寫到哪個從站節點    

          MODBUSM_DES(slaveID(i),controllerPort) '建立主從站連接

                           'MODBUSM_REGSET(10, 2, 110),主站寄存器110-111的數據傳遞給從站1的10-11    

              MODBUSM_REGSET(10,2,100 + slaveID(i)*10)

          WAIT UNTIL MODBUSM_STATE <> 1 '等待消息結束

          IF MODBUSM_STATE=0 THEN

              ?slaveID(i),             "號節點通訊正常"    

          ELSE

              modbusErrorStatus = 1

              ?slaveID(i),             "號節點通訊出錯!!!"    

                           '可以在此處加入用戶的錯誤處理程序    

          ENDIF

          DELAY(100) '兩個節點之間的通信延時

      ENDIF

  NEXT

               '*****重新恢復循環讀取任務,是否需要取決于應用*****    

  DELAY(3000)

  'RUN             "ModbusRead.bas"    

  運行效果

  1.MODBUSM_REGGET讀取:讀取從站MODBUSM_REG寄存器0-7共8個數據到主站的 MODBUSM_REG寄存器10-17。

  從站數據:

  

  運動控制

  

  主站初始數據均為0,讀取完成主站數據:讀取了從站的8個數據。

  

  運動控制

  

  2.MODBUSM_REGSET寫入:將主站MODBUSM_REG寄存器110-111共2個數據寫入從站的 MODBUSM_REG寄存器10-11。

  主站數據:

  

  運動控制

  

  讀取完成從站的數據如下:讀取了主站的2個數據。

  

  運動控制

  

               06                  網口通訊例程    

  采用兩個控制器通過交換機網口互聯。

  主端控制器IP:192.168.0.11

  從端控制器IP:192.168.0.36

  分別使用ZDevelop軟件連接這兩個控制器,接線參考如下,采用ETH網口通道5,下載程序后查看運行效果。

  

  運動控制

  

  主端程序

  MODBUS_REG(0)=0

  MODBUSM_des2($1 , 5,             "192.168.0.36"    )             '主端與從端建立連接,控制器IP不能相同    

  WHILE 1

          FOR i =0 TO 10

              MODBUS_REG(0) = i

              MODBUSM_REGSET(0,1,0) '主端數據寫入從端

              MODBUS_REG(0) = 99

              MODBUSM_REGGET(0,1,0)             '主端從從端讀取數據    

              IF MODBUS_REG(0) <> i THEN '判斷MODBUSM_REGGET(0,1,0)是否讀取成功

              PRINT             "modbus_reg(0)="     MODBUS_REG(0),             "modbusm_state="     MODBUSM_STATE

              ENDIF

          NEXT

  WEND

  END

  從端程序

  ADDRESS=             1                      '從端站號    

  MODBUS_REG(0)=             0    

  WHILE             1    

      IF             MODBUS_REG(0) <> 0 THEN    

          PRINT             MODBUS_REG(0)    

      ENDIF

  WEND

  END

  運行效果:

  主端先將數據傳給從端,修改主站數據后,再從從端獲取數據,獲取數據成功,IF條件不滿足,打印不執行。

  從端接受來自主端的數據,改變了MODBUS_REG(0)的值,并循環打印。

               07                  網口互聯例程    

  采用兩個控制器通過交換機網口互聯。

  主端控制器IP:192.168.0.11

  從端控制器IP:192.168.0.36

  分別使用ZDevelop軟件連接這兩個控制器,采用CONNECT互聯通道20,必須兩個控制器都包含CONNECT通道才可以正常通訊,下載程序后查看運行效果。

  主端程序

  MODBUS_REG(0)=0

  MODBUSM_des2($1 , 20,             "192.168.0.36"    )             '主端與從端建立連接,控制器IP不能相同    

  WHILE 1

          FOR i =0 TO 10

              MODBUS_REG(0) = i

              MODBUSM_REGSET(0,1,0) '主端數據寫入從端

              MODBUS_REG(0) = 99

              MODBUSM_REGGET(0,1,0)             '主端從從端讀取數據    

              IF MODBUS_REG(0) <> i THEN '判斷MODBUSM_REGGET(0,1,0)是否讀取成功

              PRINT             "modbus_reg(0)="     MODBUS_REG(0),             "modbusm_state="     MODBUSM_STATE

              ENDIF

          NEXT

  WEND

  END

  從端程序

  ADDRESS=             1     '從端站號    

  MODBUS_REG(0)=             0    

  WHILE             1    

      IF             MODBUS_REG(0) <> 0 THEN    

          PRINT             MODBUS_REG(0)    

      ENDIF

  WEND

  END

  運行效果:

  與網口通訊例程相同,主端先將數據傳給從端,修改主站數據后,再從從端獲取數據,獲取數據成功,IF條件不滿足,打印不執行。

  從端接受來自主端的數據,改變了MODBUS_REG(0)的值,并循環打印。

  正運動技術運動控制器MODBUS通訊就講到這里,更多學習視頻及圖文詳解請關注我們的公眾號“             正運動小助手    ”。

  本文由正運動技術原創,歡迎大家轉載,共同學習,一起提高中國智能制造水平。文章版權歸正運動技術所有,如有轉載請注明文章來源。

  運動控制

  

標簽:

點贊

分享到:

上一篇:圖爾克堅固型LTE直線位移傳感器

下一篇:方案分享|禾川裝袋機整機解決...

中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.hysjfh.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。

本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。

網站簡介|會員服務|聯系方式|幫助信息|版權信息|網站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網-工業自動化與智能制造的全媒體“互聯網+”創新服務平臺

網站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權所有
粵ICP備 14004826號 | 營業執照證書 | 不良信息舉報中心 | 粵公網安備 44030402000946號

主站蜘蛛池模板: 大兴区| 噶尔县| 盐津县| 荔浦县| 白沙| 兰溪市| 怀仁县| 沈阳市| 长垣县| 蕲春县| 寻乌县| 平顺县| 齐齐哈尔市| 康平县| 花垣县| 哈巴河县| 周宁县| 克什克腾旗| 杭锦旗| 巴东县| 黔江区| 溧水县| 凤阳县| 缙云县| 佳木斯市| 黄冈市| 靖远县| 马尔康县| 彝良县| 任丘市| 左贡县| 镇宁| 平陆县| 鄂伦春自治旗| 米林县| 甘孜县| 万全县| 巴塘县| 响水县| 滨海县| 华阴市|