999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于研華PCI_1680 的裁床專用通訊協議的實現

2015-08-26 06:39:30波,
電子設計工程 2015年24期
關鍵詞:信息系統

陳 波, 熊 金

(綿陽市維博電子有限責任公司 四川 綿陽 621000)

數控大型服裝裁剪機(以下簡稱裁床系統)是服裝CAM設備中的高端產品,此設備的主要優點是:服裝生產自動化程度高,裁剪速度快,生產周期縮短,布料利用率高,節約成本,裁剪衣片質量好,不會受人為因素影響。 盡管我國服裝產業憑借產量和規模創造出驕人的業績,但產業發展面臨的問題也不容忽視。 與發達國家相比,我國服裝生產信息化、自動化水平非常低。 以計算機、網絡、先進制造等為代表的先進技術,在發達國家服裝業已廣泛用于生產自動化、信息采集傳遞、產品設計、生產管理、電子商務等環節。 目前,在工業控制系統中,CAN 總線在完成現場的控制器、 執行器等底層設備間的數據通信方面正發揮著巨大的作用。

CAN 作為現場設備級的通信總線, 和其他總線相比,具有很高的可靠性和性價比。 CAN 接口芯片的生產廠家眾多,協議開放,并且使用方便,由此看出CAN 總線將成為今后眾多領域的發展方向。 由于裁床系統在運行過程中需要通信的數據通訊量大、通訊速度要求快,與一般的通訊總線相比,采用CAN 總線的進行數據通訊具有更突出的優點[1]。 基于上述原因本文主要應用VC 開發出供用戶調用的動態鏈接庫文件,以驅動研華CAN 卡PCI_1680,從而實現了工控機與CAN總線之間的數據傳輸, 然后通過CAN 總線連接上位機和下位機從站。

1 總體設計PCI_1680CAN 通訊卡簡介

通信卡插在工控機的PCI 總線槽中,其整體結構可以分為3 個部分, 即CAN 總線接口部分、PCI 總線接口部分和通信控制部分。研華公司生產的PCI_1680 為CAN_PCI 轉換卡,該卡支持CAN2. 0A 和CAN2. 0B 協議, 主要應用于微機與CAN 總線的數據交換。 其附帶的動態鏈接庫(DLL)封裝了共享資源和代碼,是一種基于Windows 的應用程序模塊,它可以在程序運行時被裝入和鏈接,使用DLL 封裝技術大大節約了內存,提高了開發的效率[2-3]。研華PCI_1680 CAN 通信卡如圖1 所示。

軟件工具包中的CANbus2.0.h 已經聲明了控制該卡進行CAN 數據收發的一些API 函數,用戶只需調用函數即可實現對CAN 總 線 的 數 據 讀 寫 操 作。 將m_Port、m_DeviceNum、m_nBTR0、m_nBTR1 做為輸入參數,其中,m_Port 是所打開CAN卡的端口號,m_DeviceNum 是所選設備編號,PCI- 1680 的波特率是由m_nBTR0 和m_nBTR1 兩個參數確定的。PCI_1680通信卡軟件包中的API 函數及其功能主要有以下一些:

圖1 研華PCI_1680 CAN 通信卡Fig. 1 Yanhua PCI_680 communication card

打開CAN 通信端口

CANPortOpen(m_DeviceNum, m_ Port,hostID, Baudrate)

初始化CAN 端口

CANInit(m_ Port, m_nBTR0, m_nBTR1, IntMask)

設置輸出控制寄存器

CANSetOutCtrl(m_ Port, m_nOutCtrlCode)

設置掩碼寄存器

CANSetAcp(m_ Port, m_nAcpCode, m_nAcpMask)

設置CAN 通信協議類型

CANSetProtocolType(m_ Port, m_wProtocolType)

設置波特率大小

CANSetBaud(m_ Port, m_nBTR0, m_nBTR1)

設置端口為正常模式

CANSetNormal(m_ Port)

允許事件觸發機制

CANEnableEvent(m_ Port, TRUE)

允許接收中斷

CANEnableRxInt(m_ Port)

設置接收緩沖區

CANSetBufferPtr(m_ Port, TRUE)

等待CAN 總線上數據

CANWaitForFIFOEvent(m_ Port)

關閉CAN 通信端口

CANPortClose(m_ Port)

下面以CAN2.0A 為例介紹一下調用API 函數的流程。其中圖2(a)為發送數據流程,圖2(b)為接收數據流程。

圖2 調用API 函數順序流程圖Fig. 2 Flow chart of transfer API function

2 裁床系統中PCI_1680CAN 通信模塊的具體實現

一般來說,CAN 通信協議規定了4 種不同的幀格式:數據幀、遠程幀、錯誤幀和超載幀。 其中數據幀用于攜帶數據從發送器至接收器;遠程幀是由總線單元發出的,用于請求發送具有同一識別符的數據幀;任何單元檢測到總線錯誤就發出錯誤幀;超載幀用以在先行的和后續的數據幀(或遠程幀)之間提供附加的延時。 裁床系統的體系結構,決定了系統是以裁剪文件數據收發和工作模式管理為核心來工作的,這也決定了CAN 通信模塊作為信息交換的主導地位, 在系統運行管理中起著非常重要的作用,同時也是提高系統工作安全性與可靠性的關鍵所在[4]。

使用PCI_1680 通信卡之前必須根據所使用的通信協議對CAN 端口進行初始化操作,包括打開CAN 端口、設置波特率大小、允許接收中斷等操作;其次是進行CAN 數據交互操作,包括數據發送和數據接收;最后,在退出通信程序的時候關閉CAN 端口。 參數正確進行初始化操作,這可以通過工具包中的函數調用來實現。 當上述工作完成之后,可以通過下面2 個函數實現對CAN 總線的收發數據操作:

LRESULT FTYPE CANWriteFile(WORD Port,BOOL FAR*Ready, PVOID FAR SendBuf);

LRESULT FTYPE CANWaitForFIFOEvent (WORD Port,ULONG timeout, BOOL * bReady );

在CAN 通信模塊中, 通信模塊在每個通信周期內被調用一次。 因此,在模塊中定義一個初始化標志位Init_sign,初始值為0(False),當初始化后把該位置為1(True),以保證在下一個周期內不會再次初始化變量, 而直接進行CAN 數據交互。 具體流程圖如圖3 所示。

圖3 CAN 通信模塊的具體實現流程圖Fig. 3 Material flow chart of CAN communication module

CAN 參數初始化完畢后啟動通信線程,首先由上位機向下位機發送復位命令,延時10ms 后再發送同步信號,然后根據裁床系統的工作模式及狀態進行數據的交換。 根據初始化配置 CANWriteFile 往 CAN 總線上發送一幀數據,CANWaitForFIFOEvent 等待接收CAN 總線上發來的數據。具體的算法如下:

首先定義存儲CAN 2. 0A 信息幀的數據結構如下:

typedef struct

{

UCHAR ff;

UCHAR rtr;

ULONG id;

UCHAR dlen;

UCHAR data[8];

} CAN_MSG_T_EX, *PCAN_MSG_T_EX;

每一個MSG 變量記錄了CAN 的ID 號及8 字節的數據信息。由于CAN2. 0A 規定ID 為11 位,但是字符串中的每一個字符僅有8 位,因此應該將ID 分為兩個字符來存儲,數據幀信息ID 的長度為11 位,接收緩沖區可以定義成一個包含有1024 個MSG 變量的結構體數組ReceiveMSG [1024],同理, 發送緩沖區可以設計成SendMSG [1024]。 CAN 標識符對應的數據結構定義如下[6]:

typedef union

{

struct

{

//通信命令

unsigned __int16Command :5;

//工作模式切換要求:1--要求切換

unsigned __int16 WorkModeSwitch :1;

//幀標記:0--中間幀,1--結束幀

unsigned __int16 FrameFlag :1;

//目標地址

unsigned __int16 TargetAddr :2; //源地址

unsigned __int16 SourceAddr :2; //郵箱編號

unsigned __int16 MboxIV :5;

}bit;

unsigned __int16 all;

}CANCOMMAND;

當CAN 總線上檢測到一幀新的數據之后, 先判斷它的ID 號,然后把ID 號和數據信息存入到數組相應的位置。當要發送一幀信息時,我們只要將數組中對應的數值發送到總線上即可[7],比如上位機向下位機發送回裁床系統參考點的命令,我們只要從CANCOMMAND 中取出相應數值發到總線上。

//通信命令為回參考點

SendObj.id.bit.Command = CanCmd_Reference;

//數據類型為空

SendObj.id.bit.DataType = CanDataType_Empty;

//幀重復標記位0

SendObj.id.bit.RepeatFlag = 0;

//幀結束標記為1

SendObj.id.bit.FrameFlag = 1;

//數據長度為0

SendObj.dlen = 0;

3 裁床系統數據交換相關命令字及內容

3.1 裁床系統數據交換相關命令字

在本系統中, 考慮到上位機是基于Windows 操作系統,主要是以線程方式來完成數據的循環接收或發送;而下位機是基于DSP 的,可以方便的采用中斷方式完成數據的發送和接收,所以本協議中的信息交換主要以下位機為主,由下位機主動向上位機發送數據信息;而上位機一般不主動發送連續的信息,主要以單個命令的方式主動向下位機發送,以完成簡短的數據交換[4]。命令字(占報文ID 的D4~D0 位)主要包括以下內容:

#define FirstSynchronization 0x0001

#define GetSlaveVersion 0x0002

#define ForbidEchoplexData 0x0003

#define PermitEchoplexData 0x0004

#define ParaTransmit 0x0005

#define ACK 0x0006

#define ResponseCommand 0x0007

#define SlaveSoftwareUpdate 0x0008

#define RequestEchoplexSpecifcData 0x0009

#define SlaveEchoplexData 0x000a

#define AutoDataTransimit 0x000b

#define ExitSys 0x000c

3.2 裁床系統數據交換內容

裁床控制系統中,上下位機交換的內容主要包括以下幾個方面:

1)上位機向下位機傳遞的命令字及命令參數;

2)上位機向下位機傳遞的參數信息;

3)下位機向上位機傳遞的坐標信息;

4)下位機向上位機傳遞的報警信息;

5)下位機向上位機傳遞的當前系統狀態信息。

上、下位機的系統控制程序啟動后,下位機DSP 的程序先于上位機的程序運行,且一直處于接收監聽狀態,在接到上位機允許回送數據的命令之前,禁止主動向上位機發送信息,除非上位機有對下位機回送指定信息的要求。 該命令是由上位機主動向下位機發起的, 只用在系統程序啟動時,且只進行1 次。 通過該命令的執行,上下位機則完成通信鏈路的建立,完成正式通訊的同步[5]。

3.2.1 IPC 方的處理流程

以上位機向下位機傳遞參數為例,該命令屬于上位機主動向下位機傳遞的控制命令。 該命令使用比較廣泛,除了在首次同步完成且獲得下位機版本號以后,首次完成所有參數向下位機的傳遞外,還可在中間完成實時修改的參數向下位機的傳遞。 上位機在發起該命令之前,必須保證下位機已經停止了主動向上位機回傳數據的過程,即是說,上位機已經向下位機成功發送了“ForbidEchoplexData”的命令,獲取了對通訊總線的控制權。

IPC 方按如下約定組織報文ID 和郵箱內容如表1 所示。

表1 IPC 方報文ID 和郵箱內容Tab. 1 IPC message ID and email content

注:

1)郵箱的第0、第1 個字節表示參數傳遞的子命令,與參數項相對應(具體編碼參見前面的“ParaTransmit”子命令的定義部分),郵箱后續字節表示參數內容。

2)如果該項參數的內容超過6 個字節,則上位機需要繼續發送后續幀, 但后續幀的內容則從郵箱的字節0 開始存放。 即后續幀中,不再有表示參數編號的內容;

3)上位機在設置本次幀傳遞長度時需要根據本次理論要傳遞的字節數設置;

4)在準備每一幀,上位機必須根據數據內容長度,正確設置標識符的D6 位;

5)上位機傳遞完一幀后,必須在得到下位機的ACK 回復后,才繼續傳遞下一幀;上位機在超時檢測后或收到下位機的NAK 應答,將自動退出本項參數的傳遞;

6)多項參數,均要求上位機重復上述步驟1)~5),不同參數項的編號需要上下位機事先約定好。

3.2.2 下位機DSP 的處理流程

DSP 在識別到參數傳遞的命令幀后,根據幀內容和幀狀態,立即向IPC 回送ACK 應答幀,其格式如表2 所示。

表2 DSP 回送ACK 應答幀格式Tab. 2 The DSP echo ACK response frame format

而下位機每傳送完一次, 必須在收到上位機的ACK 應答后,方可繼續后續幀的傳送。 如果一個完整的數據信息包傳遞完成,則幀結束標記應置為1。 由于裁料在裁剪過程中,上位機向下傳遞自動加工數據和下位機回送狀態數據是在連續交叉進行的,必須控制好總線的爭用。 一方面上位機可以在向下會機傳遞自動加工數據時,可以先禁止下位機回送狀態信息,在自動加工數據傳送到一定量時,再允許下位機回送狀態數據;而下位機如果要回送狀態,也可根據狀態是否變化了來確定回送與否,且可以回送指定的數據,即下位機掌握回送內容的主動權。

4 結束語

CAN 總線是一種具有國際標準且性能價格比比較高的現場總線,在自動控制領域的發展中起著中要作用[7]。 本文首先根據裁床控制系統自身的特點, 采用了研華PCI_1680 CAN 通信卡進行數據的交互。 實踐證明,該通信卡完全能滿足通信要求,其附帶的API 函數設計簡單,且使用方便,實時性強, 具備一定的抗干擾能力, 達到了預定的設計目的。

[1] 趙君,劉衛國,譚博. 基于CAN總線的分布式多電機控制研究[J] .兵工自動化,2010,29(12):73-74.

[2] 魏長軍,吳青,陳興寶,等. 基于工具包的研華PCI_1680通訊卡OPC服務器軟件的實現[J]. 河南理工大學學報,2008,27(4):437-439.

[3] 孟詔,楊建武,孫樹文. 基于VC 供Labview 調用的CAN 卡驅動設計[J]. 微計算機信息,2008,24(9):177-179.

[4] 趙勇,黃大貴,吳獻剛. 開放式數控裁床軟件系統的研發[J].微計算機信息, 2009,25(2):163-165.

[5] 易軍.基于CAN總線技術的一類智能節點開發及應用.監控技術,2003(7):31-35.

[6] 章富元,方江龍,湯季安. 我國數控技術發展的思考[J]. 中國機械工程,1999(10):1100-1103.

[7] 黃河. 高浪琴 基于CAN總線通訊智能節點的設計與實現[J].江西科學,2004:289-292.

猜你喜歡
信息系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
半沸制皂系統(下)
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
信息
建筑創作(2001年3期)2001-08-22 18:48:14
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 3344在线观看无码| 国产91在线免费视频| 九九热这里只有国产精品| 国产精品第页| 一级福利视频| 国产成人AV男人的天堂| 国产福利微拍精品一区二区| 一区二区在线视频免费观看| 潮喷在线无码白浆| 91精品情国产情侣高潮对白蜜| 91精品综合| 日韩中文无码av超清| 中文字幕无码av专区久久| 热热久久狠狠偷偷色男同| 最新加勒比隔壁人妻| 在线观看免费人成视频色快速| 一本综合久久| 欧美人与性动交a欧美精品| 九色在线观看视频| 国产永久无码观看在线| 99资源在线| 亚洲精品国产乱码不卡| 老司机精品一区在线视频| 亚洲三级片在线看| 日韩成人在线视频| 在线观看欧美精品二区| 欧美专区日韩专区| 久久亚洲中文字幕精品一区| 久久久亚洲色| 亚洲午夜久久久精品电影院| 精品国产美女福到在线不卡f| 区国产精品搜索视频| 91国内在线视频| 青青草原国产| 毛片免费网址| 免费视频在线2021入口| 69国产精品视频免费| 欧美亚洲激情| 69国产精品视频免费| 久久久91人妻无码精品蜜桃HD | 欧美日韩北条麻妃一区二区| 无码一区二区波多野结衣播放搜索| 国产一级小视频| 91在线视频福利| 国产精品视频a| 成人午夜视频在线| 国产精品欧美在线观看| 在线播放91| 国产青榴视频在线观看网站| 国产一区二区三区日韩精品| 久久青草免费91线频观看不卡| 91人妻在线视频| 狠狠色噜噜狠狠狠狠色综合久 | 亚洲 欧美 偷自乱 图片| 男人天堂伊人网| 91精品国产一区自在线拍| 国产成人91精品| 欧美日韩国产成人高清视频| 狠狠操夜夜爽| 亚洲欧美日韩中文字幕在线| 色有码无码视频| 粉嫩国产白浆在线观看| 三上悠亚精品二区在线观看| 国产精品香蕉| 亚洲无码电影| 国产精品污污在线观看网站| 99爱视频精品免视看| 亚洲男女天堂| 国产精品尹人在线观看| 久久国语对白| 91久久国产综合精品女同我| 九九线精品视频在线观看| 91外围女在线观看| 久久人搡人人玩人妻精品一| a级毛片一区二区免费视频| 5388国产亚洲欧美在线观看| 国产99欧美精品久久精品久久| 国产精品视频第一专区| 尤物国产在线| 老色鬼欧美精品| 国产性爱网站| 日本精品一在线观看视频|