技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 工控干貨|SMC304運動控制器之間的CAN總線級聯(lián)方法

工控干貨|SMC304運動控制器之間的CAN總線級聯(lián)方法

時間:2019-04-23 11:04:08來源:深圳市雷賽智能控制股份有限公司

導(dǎo)語:?工控干貨|SMC304運動控制器之間的CAN總線級聯(lián)方法

一. CAN總線實時令牌網(wǎng)

1. CAN 總線的特點

CAN總線(Controller Area Net)是一種有效支持分布式控制的串行通信網(wǎng)絡(luò)。它是由德國Bosch公司為汽車的監(jiān)測、控制系統(tǒng)而設(shè)計,由于其具有卓越的特性及極高的可靠性,后來廣泛應(yīng)用于工業(yè)過程監(jiān)控設(shè)備的互連。

CAN總線只定義了ISO/OSI模型中的第一層(物理層)和第二層(數(shù)據(jù)鏈路層),其物理拓?fù)淙鐖D1所示。CAN總線主要特點有:

(1) 采用差分傳輸,抗干擾性強;

(2) 采用短幀結(jié)構(gòu)和CRC校驗等檢錯措施,出錯概率低;

(3) 采用基于優(yōu)先權(quán)的非破壞性總線仲裁技術(shù),可工作于多主、一對一、一對多及全局廣播方式傳送接收數(shù)據(jù);

(4) 通信距離隨波特率而變,典型值為10 km(5 kb/s)、40 m(1 Mb/s)。

2. 令牌總線簡介

令牌總線網(wǎng)絡(luò)的邏輯拓?fù)淙鐖D2所示。所有連接在令牌總線上的站點在邏輯上構(gòu)成一個首尾相連的環(huán),每個站點都知道自己的前導(dǎo)站(PS)和后繼站(NS)。

令牌實際上是一個采用特殊編碼的控制幀。網(wǎng)絡(luò)上只有一個令牌沿邏輯環(huán)傳遞,得到令牌的站才能發(fā)送數(shù)據(jù),然后把令牌向下傳。在正常運行時,令牌按照站點地址的序列號從一個站點傳送到另外一個站點。這樣,這個令牌實際上是按照邏輯環(huán)而不是物理環(huán)進(jìn)行傳遞。在數(shù)字序列的最后一個站點將令牌返回到第一個站點。

令牌通訊機制的優(yōu)點是任何時刻網(wǎng)絡(luò)中只有一對節(jié)點在進(jìn)行通訊,完全杜絕多節(jié)點通訊沖突的情況。

二. SMC304運動控制器CAN總線令牌網(wǎng)及指令

1. 雷賽CAN總線令牌網(wǎng)的通訊機制

SMC304運動控制器可以通過CAN總線和另外的SMC304運動控制器或雷賽其他型號的運動控制器連接,形成一個多站點的CAN總線運動控制系統(tǒng),采用令牌通訊機制實現(xiàn)各站點之間的數(shù)據(jù)交換。與一般令牌網(wǎng)不同,雷賽CAN總線令牌網(wǎng)中有一個主站,負(fù)責(zé)令牌傳遞的管理,防止令牌丟失,以提高通訊的可靠性。

在雷賽CAN總線實時令牌網(wǎng)上可以發(fā)送4類數(shù)據(jù):位、字、雙字、浮點類數(shù)據(jù)。通訊流程如下:

第一步,主站按周期將本站的寄存器數(shù)據(jù)表中的數(shù)據(jù)發(fā)送給其它各站點;之后往一個從站發(fā)送令牌消息;第二步,從站接收到令牌后,將本站寄存器數(shù)據(jù)表中的數(shù)據(jù)發(fā)送給其它各站點;之后往主站發(fā)送釋放令牌的消息;第三步,主站接收到一個從站令牌釋放消息后,往下一個從站發(fā)送令牌消息;然后回到第二步,直到所有站點數(shù)據(jù)都已經(jīng)發(fā)送完成;第四步,主站周期時間到達(dá)后重復(fù)以上流程。

以上通訊過程都是在BASIC程序后臺進(jìn)行,不需要用戶編程管理。

用戶需要在程序中首先初始化用于數(shù)據(jù)通訊的寄存器數(shù)據(jù)表,設(shè)置通訊周期、參與通訊的節(jié)點數(shù)和節(jié)點號;定義要通訊的數(shù)據(jù)類型、對端節(jié)點號;添加通訊數(shù)據(jù)結(jié)束標(biāo)志。

然后,根據(jù)需要在程序中定時查詢本地寄存器,即可得到其他節(jié)點的數(shù)據(jù);定時更新寄存器數(shù)據(jù)表,將新數(shù)據(jù)自動發(fā)送給其他節(jié)點。

2. 雷賽CAN總線令牌網(wǎng)的通訊指令

1)初始化CAN通訊數(shù)據(jù)表參數(shù)SMCCanRegTableInit  short SMCCanRegTableInit(short Enable[,short SendMode[,short CycleTime[,short CanIdNum,short* pCanIdList]]);

參數(shù):

Enable  是否啟用寄存器表通訊:0-禁用,1-啟用 SendMode  發(fā)送方式:0-收到令牌后發(fā)送(從站),1-周期性發(fā)送(主站)

CycleTime  周期性發(fā)送時間,單位:毫秒 CanIdNum  對端節(jié)點號個數(shù) pCanIdList 對端節(jié)點號列表

2)添加位類數(shù)據(jù)到寄存器表SMCCanRegTableAddBit short SMCCanRegTableAddBit(short CanId,short RegAddr,short RegNum,Dshort RegValue);

參數(shù):

CanId  對端節(jié)點號 

RegAddr  對端寄存器地址

 RegNum 對端寄存器個數(shù),范圍[1,32]

RegValue 默認(rèn)值

3)添加字類數(shù)據(jù)到寄存器表SMCCanRegTableAddReg short SMCCanRegTableAddReg(short CanId,short RegAddr,short RegValue);

參數(shù):

CanId  對端節(jié)點號

RegAddr  對端寄存器地址

RegValue 默認(rèn)值

4)添加雙字類數(shù)據(jù)到寄存器表SMCCanRegTableAddLong

short SMCCanRegTableAddLong(short CanId,short RegAddr,long RegValue);

參數(shù):

CanId  對端節(jié)點號 

RegAddr  對端寄存器地址

RegValue  默認(rèn)值

5)添加浮點類數(shù)據(jù)到寄存器表SMCCanRegTableAddFloat

short SMCCanRegTableAddFloat(short CanId,short RegAddr,float RegValue);

參數(shù):

CanId  對端節(jié)點號 

RegAddr  對端寄存器地址 

RegValue  默認(rèn)值

6)添加結(jié)束標(biāo)志到寄存器表SMCCanRegTableAddEnd short SMCCanRegTableAddEnd(short CanId);

參數(shù):

CanId  對端節(jié)點號

7)更新寄存器表中的位類數(shù)據(jù)SMCCanRegTableSetBit short SMCCanRegTableSetBit(short CanId,short RegAddr,short RegNum,long RegValue);

參數(shù):

 CanId  對端節(jié)點號

 RegAddr  對端寄存器地址

 RegNum  對端寄存器個數(shù),范圍[1,32] 

RegValue  設(shè)置值,每一個Bit位代表一個位寄存器的值

8)更新寄存器表中的字類數(shù)據(jù)SMCCanRegTableSetReg

short SMCCanRegTableSetReg(short CanId,short RegAddr,short RegValue);

參數(shù):

CanId  對端節(jié)點號 

RegAddr  對端寄存器地址 

RegValue  設(shè)置值

9)更新寄存器表中的雙字類數(shù)據(jù)SMCCanRegTableSetLong short SMCCanRegTableSetLong(short CanId,short RegAddr,long RegValue);

參數(shù):

CanId  對端節(jié)點號 

RegAddr 對端寄存器地址 

RegValue 設(shè)置值

10)更新寄存器表中的浮點類數(shù)據(jù)SMCCanRegTableSetFloat short SMCCanRegTableSetFloat(short CanId,short RegAddr,float RegValue); 

參數(shù):

CanId  對端節(jié)點號 

RegAddr  對端寄存器地址 

RegValue 設(shè)置值

三. CAN總線級聯(lián)三臺SMC304運動控制器的例程

1. 例程的硬件設(shè)置

如圖3.1所示,3臺SMC304運動控制器通過CAN總線級聯(lián)。且節(jié)點號為ID1的運動控制器的CAN1口連接了6個CANopen總線電機和模塊。(詳見本文上篇:SMC304控制器及CANopen總線產(chǎn)品的應(yīng)用)

3臺SMC304運動控制器的CAN總線撥碼開關(guān)設(shè)置如下:

ID1的撥碼開關(guān)為:Off,Off,On,Off,Off,On。即:CAN1終端電阻使用、CAN0和CAN1獨立使用、CAN0終端電阻使用。

ID2的撥碼開關(guān)為:Off,Off,Off,On,On,Off。即:CAN1終端電阻禁用、CAN0和CAN1短接為一個接口、CAN0終端電阻禁用。

ID3的撥碼開關(guān)為:Off,Off,Off,Off,Off,On。即:CAN1終端電阻禁用、CAN0和CAN1獨立使用、CAN0終端電阻使用。

2. 例程的通訊數(shù)據(jù)

將ID2運動控制器作為主站,ID1、ID3號控制器作為從站。

D2每80毫秒向ID1發(fā)送一個字類數(shù)據(jù);向ID3發(fā)送1個一個字類數(shù)據(jù),一個浮點類數(shù)據(jù)。

ID1拿到令牌后,向ID2和ID3各發(fā)送一個字類數(shù)據(jù)。

ID3拿到令牌后,向ID1發(fā)送一個字類數(shù)據(jù);向ID2發(fā)送1個一個字類數(shù)據(jù),一個位類數(shù)據(jù)(4位)、一個浮點類數(shù)據(jù)。

3. 例程的功能

本實驗軟件功能有:

ID1、ID2、ID3號控制器分別向ID2、ID3、ID1號控制器發(fā)送一個從0~11循環(huán)變化的整數(shù),使其輸出口OUT1~OUT11的指示燈以跑馬燈方式從左到右、每0.2秒閃爍一次;

ID1、ID2、ID3號控制器分別向ID3、ID1、ID2號控制器發(fā)送一個從11~0循環(huán)變化的整數(shù),使其輸出口OUT10~OUT0的指示燈以跑馬燈方式從右到左、每0.2秒閃爍一次。以此檢測CAN總線令牌網(wǎng)的傳送字類數(shù)據(jù)的通訊速度和可靠性。

2)ID2號控制器每0.2秒將1個整數(shù)和一個浮點數(shù)合并為1個浮點數(shù),并發(fā)送給ID3號控制器,控制其電機做點位運動。以此檢測CAN總線令牌網(wǎng)的傳送浮點類數(shù)據(jù)的可靠性。

3)ID3號控制器每0.2秒向ID2號控制器發(fā)送一個在0~15之間由小到大變化的、長度為4位的位類數(shù)據(jù),一個在1111.5678~8888.5678之間由小到大變化的浮點類數(shù)據(jù)。ID1、ID2號控制器在接收字類數(shù)據(jù)、位類數(shù)據(jù)、浮點類數(shù)據(jù)的同時,檢查其正確性。

4)ID1號控制器通過CAN1口控制2個CANopen型步進(jìn)電機、1個CANopen型混合伺服電機、2個CANopen型IO擴展模塊、1個CANopen型AD/DA模塊。

4. 例程的程序清單

程序清單1:ID2的程序

auto:  ' 本機為ID2,為master。

undim *

dim Cerr1,Cerr2,Ccheck

dim state1,state2

dim state3,state4,state

dim data0,data1,data2,data3

dim data0old,data1old

dim d0,d1,d2,d3

dim t1,t2,t

dim f1,f8 

dim flag1,flag2

constCanID1=1  ' ID1的節(jié)點號為1 

const CanID2=3 ' ID2的節(jié)點號為3 

const CanID3=5 ' ID3的節(jié)點號為5

setcan(1000,CanID2)  ' ID2的波特率為1000k

call RegTableInit()  ' 運行子程序RegTableInit

flag1=0 

flag2=0 

state1=20000 

state2=30011

state3=0

state4=-91111.567

data0=1

f1=1234.5678

f8=8888.5678

int_enable(1)  '中斷使能:開

timer_start(0,20)  '打開定時器0

while true

Delay(200)  '延時200毫秒

if state1>=20011 then

state1=20000  '基數(shù)設(shè)為20000,只是為了驗證傳送大數(shù)據(jù)的準(zhǔn)確性

else

state1=state1+1  'state1在20000~20011之間由小到大變化,200毫秒變一次

endif

if state2<=30000 then

state2=30011

else

state2=state2-1  'state2在30011~30000之間由大到小變化,200毫秒變一次

endif

if state4>=8888.0 then

state4=-7777.7777 

state3=1

else

state3=state3+1  'state3在1~16之間由大到小變化,200毫秒變一次

state4=state4+1111.12345  'state4在-7777.777~8889.074之間由小到大變化

endif

if state4>=0 then  '將state3和state4合并為一個浮點數(shù)

state=state4+state3*10000

else

state=state4-state3*10000

endif

SMCCANRegTableSetReg(CanID1,20,state2)  ' 更新發(fā)送的數(shù)據(jù)

SMCCANRegTableSetReg(CanID3,20,state1) SMCCanRegTableSetFloat(CanID3,26,state)

wend

end

ontimer0:  ' 本機為ID2,50毫秒查尋一次ID1、ID3狀態(tài)。

timer_start(0, 50)  ' 打開定時器0,定時時間為50毫秒

d1=modbus_Reg(10)  ' 讀本地的寄存器,查看控制器ID1的指令

d2=d1-20000  ' d2在0~11之間由小到大變化

if d2%2=0 then ' 當(dāng)d2=0、2、4、6、8、10時,

SMCWriteOutBit(d2+1,0)  ' OUT1、OUT3、OUT5、OUT7、OUT9、OUT11的LED亮

else ' 當(dāng)d2=1、3、5、7、9、11時,

SMCWriteOutBit(d2,1)  ' OUT1、OUT3、OUT5、OUT7、OUT9、OUT11的LED滅

endif

d1=modbus_Reg(30)  ' 讀本地的寄存器,查看控制器ID3的指令

d3=d1-30000  ' d3在11~0之間由大到小變化

if d3%2=0 then  ' 當(dāng)d3=10、8、6、4、2、0時,

SMCWriteOutBit(d3,1)  ' OUT10、OUT8、OUT6、OUT4、OUT2、OUT0的LED滅

else  ' 當(dāng)d3=11、9、7、5、3、1時,

SMCWriteOutBit(d3-1,0)  ' OUT10、OUT8、OUT6、OUT4、OUT2、OUT0的LED亮

endif

data0=MODBUS_BIT(30,33)

if flag1=0 then

flag1=1  ' 第一次讀ID3的位類數(shù)據(jù)

data0old=data0

else

if data0<>data0old then  ' 根據(jù)有序數(shù)據(jù)檢查數(shù)據(jù)傳送的準(zhǔn)確性

if data0=data0old+1 or (data0=0 and data0old=15) then

else

Cerr1=Cerr1+1  ' ID3的傳送的位類數(shù)據(jù)有錯,次數(shù)加1

print "error data = ",data0,data0old

endif

data0old=data0

endif

endif

data1=MODBUS_IEEE(36)

if flag2=0 then

flag2=1  ' 第一次讀ID3的浮點類數(shù)據(jù)

data1old=data1

else

if data1<>data1old then  ' 根據(jù)有序數(shù)據(jù)檢查數(shù)據(jù)傳送的準(zhǔn)確性

if data1-(data1old+1110.997)<0.001 or (data1-f1<0.001 and data1-f8<0.001) then

else

Cerr2=Cerr2+1  ' ID3的傳送的浮點類數(shù)據(jù)有錯,次數(shù)加1

print "error data = ",data1,data1old

endif

data1old=data1

endif

endif

Ccheck=Ccheck+1

end

sub RegTableInit()

dim CanIdList(2)  '定義從站節(jié)點號列表

CanIdList(0) = 1  '第一個從站節(jié)點號為1 

CanIdList(1) = 5  '第二個從站節(jié)點號為5

SMCCANRegTableInit(1,1,80,2,CanIdList)  '初始化寄存器表,周期為80毫秒,從站節(jié)點數(shù)為2

SMCCANRegTableAddReg(CanID1,20,0)  '添加寄存器數(shù)據(jù)

SMCCANRegTableAddReg(CanID3,20,0) SMCCanRegTableAddFloat(CanID3,26,0)

SMCCANRegTableAddEnd(CanID1)  '寄存器數(shù)據(jù)結(jié)束標(biāo)志

end sub

程序清單2:ID3的程序

auto:  ' 本機為ID3,為slave。

undim *

dim Cerr1,Cerr2,Ccheck

dim state1,state2

dim state3,state4

dim data0,data1,data2,data3

dim d0,d1,d2,d3

dim t1,t2,t

dim f1,f8

dim flag1,flag2

dim MaxData,MinData

const CanID1=1 

const CanID2=3 

const CanID3=5

MaxData=-1000

MinData=9999

flag1=0 

flag2=0

state1=20000

state2=30011

state3=0

state4=1111.5678

data0=1

f1=1234.567

f8=8888.567

setcan(1000,CanID3)

call RegTableInit()

int_enable(1)  '中斷使能:開

timer_start(0,20)  '打開定時器

SMCSetProfileUnit(0,900,6000,0.2,0.1,900)  '設(shè)置0號軸速度曲線參數(shù)

SMCSetsprofile(0,0,0.5)  '設(shè)置0號軸S段參數(shù)

while true

Delay(200)

if state1>=20011 then   ' ……

state1=20000

else

state1=state1+1

endif   ' 和ID2程序相同

if state2<=30000 then

state2=30011

else

state2=state2-1

endif   ' ……

if state3>=15 then

state3=0

else

state3=state3+1   'state3在0~15之間由小到大變化,200毫秒變一次

endif

if state4>=8888.5678 then

state4=1111.5678

else

state4=state4+1111   'state4在1111.5678~8888.5678之間由小到大變化

endif

SMCCANRegTableSetReg(CanID1,30,state1)  ' 更新發(fā)送的數(shù)據(jù)

SMCCANRegTableSetReg(CanID2,30,state2) SMCCanRegTableSetBit(CanID2,30,4,state3) SMCCanRegTableSetFloat(CanID2,36,state4)

data1=MODBUS_IEEE(26)

if data1>= 0 then  ' 將data1拆分為2個數(shù)

data0=int(data1/10000)   ' data0是1~16之間的一個整數(shù)

data2=data1-data0*10000   ' data2是-7777.777~8889.074之間的一個浮點數(shù)

else

data0=-1*int(data1/10000)-1

data2=data1+data0*10000

endif

if data0=4 or data0=12 then  ' 根據(jù)data0、data2做點位運動

SMCPMoveUnit(0,data2,0)

endif

wend

end 

ontimer0:  ' 本機為ID3,50毫秒查尋一次ID1、ID2狀態(tài)。

timer_start(0,50)

d1=modbus_Reg(20)  ' 讀本地的寄存器,查看控制器ID2的指令

d2=d1-20000

if d2%2=0 then  ' 和ID2程序相同

SMCWriteOutBit(d2+1,0)

else

SMCWriteOutBit(d2,1)

endif

d1=modbus_Reg(10)  ' 讀本地的寄存器,查看控制器ID1的指令

d3=d1-30000

if d3%2=0 then  ' 和ID2程序相同

SMCWriteOutBit(d3,1)

else

SMCWriteOutBit(d3-1,0)

endif

end

sub RegTableInit()

SMCCanRegTableInit(1,0,0)  '初始化寄存器表

SMCCanRegTableAddReg(CanID1,30,0)  '添加寄存器數(shù)據(jù)

SMCCanRegTableAddReg(CanID2,30,0)

SMCCanRegTableAddBit(CanID2,30,4,0)  '長度為4位的位類數(shù)據(jù)

SMCCanRegTableAddFloat(CanID2,36,0)

SMCCanRegTableAddEnd(CanID2)  '寄存器數(shù)據(jù)結(jié)束標(biāo)志

end sub

 

程序清單3:ID1的程序

auto:  ' 本機為ID1,為slave。

undim *

dim a,b,flag1,flag2,Cerr1,Cerr2,Ccheck

dim EMoutV0,EMoutV1,EMinV0

dim state1,state2

dim d1,d2,d3,d2old,d3old

dim t1,t2,t,Tmax

Tmax=0

flag1=0 

flag2=0

const EM1out0=12

const EM1out8=20

const EM1out5=18 

const EM1out13=25 

const EM1in0=16 

const EM1in8=24 

const EM2out1=29 

const EM2out9=37 

const EM2out6=34 

const EM2out14=42 

const EM2in1=33 

const EM2in9=41 

const CanID1=1 

const CanID2=3 

const CanID3=5

setcan(1000,CanID1) 

call RegTableInit()

a=off 

b=off

EMoutV0=0 

EMoutV1=0 

EMinV0=0 

state1=20000 

state2=30011

int_enable(1)  '中斷使能:開

timer_start(0,50)  '打開定時器0

timer_start(1,60)  '打開定時器1,控制IO模塊

run 1,canmotor  '控制CAN總線電機

count=0

while true

Delay(200)

if state1>20011 then

state1=20000

else

state1=state1+1

endif

if state2<30000 then

state2=30011

else

state2=state2-1

endif

SMCCANRegTableSetReg(CanID2,10,state1)  ' 更新發(fā)送的數(shù)據(jù)

SMCCANRegTableSetReg(CanID3,10,state2)

wend

end

canmotor:   ' 控制CANopen電機的子任務(wù)

……  ' 程序略(詳見本文上篇:SMC304控制器及CANopen總線產(chǎn)品的應(yīng)用)

end

ontimer1: ' AD/DA模塊控制 

……  '程序略

end

EM32IOControl:  ' 控制IO模塊的子任務(wù)

……  '程序略

end

ontimer0:  ' 本機為ID1,20+毫秒查尋一次ID2、ID3狀態(tài)。

t1=ticks

d1=modbus_Reg(30)  ' 讀本地的寄存器,查看控制器ID3的指令

d2=d1-20000

if flag1=0 then

flag1=1  ' 第一次

d2old=d2

if d2%2=0 then

SMCWriteOutBit(d2+1,0)

else

SMCWriteOutBit(d2,1)

endif

else

if d2<>d2old then

if d2=d2old+1 or (d2=0 and d2old=11) then

if d2%2=0 then

SMCWriteOutBit(d2+1,0)

else

SMCWriteOutBit(d2,1)

endif

else

Cerr1=Cerr1+1  ' ID3的傳送的數(shù)據(jù)有錯,次數(shù)加1

print "error data = ",d2,d2old

endif

d2old=d2

endif

endif

d1=modbus_Reg(20)   ' 讀本地的寄存器,查看控制器ID2的指令

d3=d1-30000 

if flag2=0 then

flag2=1  ' 第一次

d3old=d3

if d3%2=0 then

SMCWriteOutBit(d3,1)

else

SMCWriteOutBit(d3-1,0)

endif

else

if d3<>d3old then

if d3=d3old-1 or (d3=11 and d3old=0) then

if d3%2=0 then

SMCWriteOutBit(d3,1)

else

SMCWriteOutBit(d3-1,0)

endif

else

Cerr2=Cerr2+1  ' ID2的傳送的數(shù)據(jù)有錯,次數(shù)加1

print "error data = ",d3,d3old

endif 

d3old=d3 

endif 

endif

Ccheck=Ccheck+1

timer_start(0, 20)

t2=ticks

t=t2-t1   ' 測量ontimer0運行時間

if t>Tmax then

Tmax=t

print "max time = ",t   ' 輸出最大運行時間

endif

end

sub RegTableInit()

SMCCanRegTableInit(1,0,0)  '初始化寄存器表SMCCanRegTableAddReg(CanID2,10,0)  '添加寄存器數(shù)

SMCCanRegTableAddReg(CanID3,10,0) SMCCanRegTableAddEnd(CanID2)  '寄存器數(shù)據(jù)結(jié)束標(biāo)志

end sub

5. 例程的實驗結(jié)果

三臺SMC304運動控制器通過CAN總線令牌網(wǎng)級聯(lián),可以實現(xiàn)穩(wěn)定、可靠的數(shù)據(jù)交換。該程序測試幾十小時,未發(fā)現(xiàn)一次通訊錯誤。

傳送一個字類數(shù)據(jù)的平均通訊時間小于5毫秒。由于控制器ID1的工作任務(wù)繁重,其負(fù)責(zé)更新傳送數(shù)據(jù)的timer0的中斷任務(wù)平均完成時間在35毫秒左右,但最長時間近70毫秒,所以,主站ID2將數(shù)據(jù)通訊周期定為80毫秒。

需要注意,有一種情況是可能發(fā)生的:在查詢本地寄存器時,第i個數(shù)據(jù)是上一個周期接收到的,第i+1個數(shù)據(jù)是本次周期接收到的。

如果這2個數(shù)據(jù)是關(guān)聯(lián)數(shù)據(jù),如:第i個數(shù)據(jù)是軸號、第i+1個數(shù)據(jù)是運動距離;第j個周期和第j+1個周期傳送的數(shù)據(jù)不同。這時就會發(fā)生錯誤。因此,為避免這種情況發(fā)生,可以將這2個關(guān)聯(lián)數(shù)據(jù)合并為一個數(shù)據(jù)發(fā)送。

四.結(jié)論

SMC304運動控制器采用CAN總線令牌網(wǎng)級聯(lián),通訊速度快、穩(wěn)定可靠;可以充分發(fā)揮SMC304的軌跡控制的功能,擴大使用交流伺服電機的數(shù)量;控制器控制總線型電機的數(shù)量減少,降低了總線控制系統(tǒng)的編程難度。所以,該組網(wǎng)方式在小型生產(chǎn)線上應(yīng)用非常合適。

總之,使用SMC304運動控制器和CANopen總線步進(jìn)電機、混合伺服電機及擴展模塊,可以充分發(fā)揮雷賽公司的優(yōu)勢,大幅提升運動控制系統(tǒng)的性價比。

五.參考文獻(xiàn)

[1] 趙城,張凱. 基于CAN總線實時令牌網(wǎng)的設(shè)計. 微型機與應(yīng)用,2013年第9期 

[2] 深圳市雷賽控制技術(shù)有限公司. 雷賽SMC304-BAS運動控制器用戶手冊. 2019 

[3] 深圳市雷賽控制技術(shù)有限公司. 雷賽運動控制器SMC Basic Studio使用手冊. 2019

聲明:本文內(nèi)容由企業(yè)提供,如涉及版權(quán)、機密問題,請及時聯(lián)系我們刪除(QQ: 2737591964,不便之處,敬請諒解!

標(biāo)簽:

點贊

分享到:

上一篇:基于機器視覺技術(shù)檢測板材表...

下一篇:當(dāng)PLC出現(xiàn)故障 我們?nèi)绾尾檎遥?/a>

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

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

相關(guān)資訊

網(wǎng)站簡介|會員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網(wǎng)-工業(yè)自動化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

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