freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

自動(dòng)堆垛機(jī)人機(jī)界面設(shè)計(jì)-資料下載頁(yè)

2025-07-29 12:14本頁(yè)面
  

【正文】 IBUS.DP分發(fā)到從站,從站將執(zhí)行相應(yīng)的操作,將貨物存放到指定的貨位上;如果執(zhí)行成功,從站將返回一個(gè)成功指令給主站,主站將執(zhí)行成功的指令返回給PC機(jī),這樣就完成了一次的貨位指派;數(shù)據(jù)庫(kù)立即修改,刪掉已發(fā)送的這條指令。循環(huán)往復(fù),我們就把利用PSO獲取的貨位指派情況,通過(guò)上述的流程完成貨物的存放。該系統(tǒng)的數(shù)據(jù)傳輸方式,充分利用PC機(jī)數(shù)據(jù)處理能力強(qiáng)的特點(diǎn),由上位機(jī)優(yōu)先發(fā)送數(shù)據(jù)通信的開(kāi)始信號(hào)。具體過(guò)程如下,首先由計(jì)算機(jī)發(fā)送信號(hào),控制器收到信號(hào)后,發(fā)送返回信號(hào);計(jì)算機(jī)收到返回信號(hào)后,進(jìn)行下一步的數(shù)據(jù)交換。讀數(shù)據(jù)時(shí),上位計(jì)算機(jī)通過(guò)串行口向控制器發(fā)出數(shù)據(jù)命令,控制器響應(yīng)并將數(shù)據(jù)準(zhǔn)備好,這時(shí)上位計(jì)算機(jī)再次讀串行口就可讀到需要的數(shù)據(jù)。寫數(shù)據(jù)時(shí),上位計(jì)算機(jī)通過(guò)串行口向控制器發(fā)出寫命令及數(shù)據(jù),控制器接收。計(jì)算機(jī)在與控制器通信時(shí),首先必須對(duì)通信端口進(jìn)行初始化,其初始化參數(shù)必須與控制器通信參數(shù)相同。在對(duì)象之間進(jìn)行通信時(shí),采用類方法調(diào)用的方式對(duì)需要通訊的數(shù)據(jù)進(jìn)行讀取。類的標(biāo)志特性是繼承,封裝,多態(tài),對(duì)象化提供了模型化和信息隱藏的好處,類化提供了可重用性的好處。通過(guò)面向?qū)ο笫沟贸绦蛟O(shè)計(jì)模塊化了,便于編程人員拆分合作。類首先是基類,派生和繼承得到新的類即有基類的公共屬性,又可以定義新的功能屬性,便有了多元化實(shí)用價(jià)值。封裝便于保護(hù)代碼不被任意篡改和便于維護(hù),可移植性和重用性高。 (1)類抽象:根據(jù)具體設(shè)備控制的要求,把系統(tǒng)中控制方法、信號(hào)反饋、故障檢測(cè)等操作相同或相似的設(shè)備作為同類;對(duì)于其中功能和操作不同的地方,采用輸入?yún)?shù)差別的方法加以區(qū)分,即在輸入?yún)?shù)中設(shè)計(jì)一個(gè)類型差別參數(shù),當(dāng)控制存在差別時(shí),用來(lái)在模塊內(nèi)選擇不同的實(shí)現(xiàn)方法,功能相同的部分則共用相同的代碼,這樣,實(shí)現(xiàn)的模塊就是這類設(shè)備的實(shí)現(xiàn)代碼,功能上的差別通過(guò)在流程中調(diào)用模塊時(shí)附上不同的判別參數(shù)來(lái)實(shí)現(xiàn);對(duì)于包含其它設(shè)備的組合設(shè)備,可以設(shè)計(jì)一個(gè)類,在流程的設(shè)計(jì)中,只需在流程的模塊程序中調(diào)用它所包含的所有設(shè)備的對(duì)象即可,設(shè)備之間的互鎖關(guān)系由各個(gè)類輸入輸出參數(shù)之間的通信實(shí)現(xiàn)。 (2)封裝的實(shí)現(xiàn)由于在設(shè)計(jì)模塊時(shí)可以指定相關(guān)參數(shù),而模塊的程序通過(guò)對(duì)參數(shù)的使用來(lái)實(shí)現(xiàn)其控制功能,所以可以用指定參數(shù)的方式建立起類的數(shù)據(jù)結(jié)構(gòu),這個(gè)數(shù)據(jù)結(jié)構(gòu)與抽象成類的模塊相對(duì)應(yīng),應(yīng)該把這個(gè)數(shù)據(jù)結(jié)構(gòu)看成是類中的內(nèi)部數(shù)據(jù)。它另外的好處是:由于相互通信的數(shù)據(jù)大都是標(biāo)志位、狀態(tài)位或反映設(shè)備狀態(tài)的典型變量,這些數(shù)據(jù)的集中存放會(huì)給上位機(jī)組態(tài)和監(jiān)控程序的編寫帶來(lái)極大的方便。數(shù)據(jù)封裝后的結(jié)果如下:輸入?yún)?shù)和輸出參數(shù)對(duì)應(yīng)于程序設(shè)計(jì)的全局通訊區(qū)域,當(dāng)一個(gè)設(shè)備與另一個(gè)設(shè)備通信時(shí),它只能讀取那個(gè)設(shè)備輸出到全局通信區(qū)域中的數(shù)據(jù),這就限制了它對(duì)另外設(shè)備的干涉。需要對(duì)輸入數(shù)據(jù)進(jìn)行處理的程序封裝在模塊內(nèi)部,這樣可以使設(shè)備使用安全的數(shù)據(jù),防止由于干擾或數(shù)據(jù)的嚴(yán)重錯(cuò)誤對(duì)設(shè)備產(chǎn)生破壞性的影響。C++類成員提供了3種級(jí)別的可見(jiàn)度,包括public(公共部分)、protected(保護(hù)部分)和private(私有部分)。其中public(公共部分)是只有類的成員函數(shù)、對(duì)象、子類的成員函數(shù)及其對(duì)象可見(jiàn)。而protected(保護(hù)部分)只有類及其子類的成員函數(shù)峰訪問(wèn)保護(hù)的成員。Private(私有部分)只有類的成員函數(shù)能夠訪問(wèn)私有成員。如下是為通訊所編的類程序,其中有私有部分以及公有部分。class CGTProfibusSlave{public: //公有數(shù)據(jù)和函數(shù) CGTProfibusSlave(byte stationAddress,void *pDevAddress=NULL)。 virtual ~CGTProfibusSlave()。 int Slave_Get_Profibus_Command(byte amp。motionCommand,byte motionPara[])。 int Slave_Send_Profibus_ACK(byte ackPara[])。 int Slave_Get_Command_Then_Send_ACK(byte amp。motionCommand,byte motionPara[],byte ackPara[])。 void ResetAckCounter()。private: void InitIOPortMem()。 //私有數(shù)據(jù)和函數(shù)public: struct _profibusComandType_ //公有數(shù)據(jù)和函數(shù) { byte mandCounter。 byte beginer。 ///must be 39。@39。 byte address。 byte mand。 byte para[24]。 byte ender。 ///must be 0x0D }m_profibusCommand。 struct _profibusACKType_ { byte ACKCounter。 byte beginer。 //must be 39。@39。 byte address。 byte ACKCommand。 byte ACKPara[24]。 byte ender。 }m_profibusACK。 short m_profibusStatus。 byte m_slaveOnline。 byte m_slaveAckCounter。private: //私有數(shù)據(jù)和函數(shù) byte m_stationAddress。}。信息交換對(duì)控制系統(tǒng)至關(guān)重要,所以本次設(shè)計(jì)的重點(diǎn)就是如何通訊,通訊就要進(jìn)行數(shù)據(jù)交換,堆垛機(jī)通訊設(shè)計(jì)的思路是當(dāng)附件獲得命令則先進(jìn)行判斷是否查詢命令,如果是的話則進(jìn)行查詢,不是則判斷是否是返回指令,還不是進(jìn)行判斷是否從傳送帶拿貨,再進(jìn)行判斷是否放貨到傳送帶,再判斷是否是從倉(cāng)庫(kù)內(nèi)拿貨,最后判斷是否放貨入庫(kù),假如都不是則結(jié)束。下圖3.7是profibus信息交換的流程圖。圖3.7 profibus信息交換流程圖 以下程序是通信的程序包括開(kāi)啟/關(guān)閉通信、信息交換等。include include include include include include include include ///Profiubs類指針CGTProfibusSlave *gpProfibusSlave=NULL。clock_t lastmunicationtime。define MAX_WAIT_TIME ///Warehouse的Profibus地址///new a profibus object and open the connectionunsigned long gbTotalGetCommand=0。int init_profibus() //開(kāi)啟現(xiàn)在總線profibus{ ///New a profiubs slave object and connected to slave gpProfibusSlave=new CGTProfibusSlave(ProfibusAddress)。 lastmunicationtime=clock()。 //DRV_NO_ERROR||DRV_DEV_NO_COM_FLAG if(gpProfibusSlavem_profibusStatus==0|| gpProfibusSlavem_profibusStatus==21) return TRUE。 else return FALSE。}///delete profibus object and close connectionvoid close_profibus() //關(guān)閉現(xiàn)在總線profibus{ delete gpProfibusSlave。}///process profibus information exchanging,///read a valid profibus mmand and immidiately send back a ACK including the warehouse status informations void profibus_information_processing() //profibus信息交換{ byte mand,para[24],ackpara[24]。 _ByteToLong_ MasterCommandInfo。 clock_t nowtime。 ackpara[0]=(byte)SlaveStatus。 ackpara[1]=(byte)SystemErrorCode。 ackpara[2]=(byte)SystemWarningCode。ackpara[3]=(byte)ForkmanPosStatus。 ///Set the mand finished tag if(gpProfibusSlaveSlave_Get_Profibus_Command(mand,para)!=1) //獲得命令 { ////return the valid mand and para to use in module MasterMotionCommand=mand。 memcpy(MasterMotionPara,para,sizeof(para))。 lastmunicationtime=clock()。 gpProfibusSlavem_slaveOnline=1。 //// gpProfibusSlaveSlave_Send_Profibus_ACK(ackpara)。 gbTotalGetCommand++。 if(MasterMotionCommand==COMMAND_WAREHOUSE_QUERY_STATUS)//查詢命令 { cprintf(%010ld:Master Command: Query,gbTotalGetCommand)。 cprintf(\r\n)。 } else if(MasterMotionCommand==COMMAND_WAREHOUSE_GO_HOME) //返回首頁(yè)命令 { cprintf(%010ld:Master Command: Go Home,gbTotalGetCommand)。 cprintf(\r\n)。 } else if(MasterMotionCommand==COMMAND_WAREHOUSE_GOODS_GET_FROM_ACCESS) //從傳送帶拿貨命令 { cprintf(%010ld:Master Command: Get From [Access] %3d,gbTotalGetCommand,MasterMotionPara[0])。 cprintf(\r\n)。 } else if(MasterMotionCommand==COMMAND_WAREHOUSE_GOODS_PUT_TO_ACCESS) //放貨都傳送帶 { cprintf(%010ld:Master Command: Put To [Access] %3d,gbTotalGetCommand,MasterMotionPara[0])。 cprintf(\r\n)。 } else if(MasterMotionCommand==COMMAND_WAREHOUSE_GET_GOODS)(從倉(cāng)庫(kù)內(nèi)拿貨) { [0]=MasterMotionPara[1]。[1]=MasterMotionPara[2]。[2]=MasterMotionPara[3]。 [3]=MasterMotionPara[4]。 cprintf(%010ld:Master Command: Get From [Shelf] %d [Pos] %ld,gbTotalGetCommand,MasterMotionPara[0],)。cprintf(\r\n)。 }else if(MasterMotionCommand==COMMAND_WAREHOUSE_PUT_GOODS) //放貨入庫(kù)內(nèi)指令 { [0]=MasterMotionPara[1]。 [1]=MasterMotionPara[2]。 [2]=MasterMotionPara[3]。 [3]=MasterMotionPara[4]。 cprintf(%010ld:Master Command: Put To [Shelf] %d [Pos] %ld,gbTotalGetCommand,MasterMotionPara[0],)。 cprintf(\r\n)。 } else { cprintf(%010ld:Master Command: %3d,gbTotalGetCommand,MasterMotionCommand)。 cprintf(\r\
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1