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

正文內(nèi)容

基于軟plc的自動售貨機(jī)控制系統(tǒng)設(shè)計(編輯修改稿)

2025-08-10 14:33 本頁面
 

【文章內(nèi)容簡介】 R I:+1 TO 100 BY 2 DOIF ARR[1]=70THEN J:=1。EXIT。END_IF。END_FORWHILEWHILE J=100 AND ARR[J] 70 DOJ:=J+2。END_WHILE。REPEATREPEAT J:=J+2。UNTIL J=101 OR ARR[J]=70END_REPEAT。EXITEXIT??罩噶睢? PLC控制程序設(shè)計 PLC控制要求本自動售貨機(jī)的工作流程圖如圖8所示:圖 8本設(shè)計中的自動售貨機(jī)采用購物車的形式,即:從歡迎界面到商品列表界面后,選擇商品類型,然后進(jìn)入該商品的介紹頁面,選擇購買的數(shù)量,最后點(diǎn)擊確認(rèn),可回到商品列表繼續(xù)選擇其他商品,所有商品都選購?fù)旰?,則可進(jìn)入購物清單界面,投入錢幣后即可付款完成交易和取貨。 主程序主程序是整個PLC控制程序的核心部分,主要完成當(dāng)前狀態(tài)的檢驗、調(diào)用各個子程序、控制ADS通信等。程序如下:PROGRAM MAINVAR CostAll: REAL。(*消費(fèi)總額*) Shortage: REAL。(*差額*) MoneyEnough: BOOL。 canpay : BOOL。 canntpay:BOOL。 DONE: BOOL。 TON1: TON。 tof1: TOF。 a: BOOL。 FB_SlotState1: FB_SlotState。(*ADS讀取功能塊*) FB_SlotCmd1: FB_SlotCmd。(*ADS寫入功能塊*) stcmd1: st_SetCmd。(*結(jié)構(gòu)體定義*) TP1: TP。 b: BOOL。END_VAR(*可視化界面初始化,默認(rèn)為歡迎界面*)IF DONE=FALSE THENCURRENTVISU:=39。TC_VISU39。DONE:=TRUE。END_IF(*合并可視化界面中的兩個退出按鈕*)quit:=quit1 OR quit2。(*子程序調(diào)用*)manage()。(*后臺管理子程序*)key()。(*指示燈輸出及按鍵輸入子程序*)cargoA()。(*商品A子程序*)cargoB()。(*商品B子程序*)cargoC()。(*商品C子程序*)cargoD()。(*商品D子程序*)cargoE()。(*商品E子程序*)change_calculate()。(*找零計算子程序*)paid()。(*付款成功子程序*)CostAll:=Cost_a+Cost_b+Cost_c+Cost_d+Cost_e。 (*消費(fèi)總計*)(*判斷已投入金額是否足夠*)IF CostAll=CashTHENMoneyEnough:=TRUE。Change:=CashCostAll。ELSEMoneyEnough:=FALSE。shortage:=CostALLCash。END_IF。(*根據(jù)庫存零錢是否足夠及已投入金額是否足夠,判斷是否可以付款*)IF AND MoneyEnough = TRUETHEN canpay:=TRUE。ELSE canpay:=FALSE。END_IFpay:=(pay1 OR pay2) AND canpay 。canntpay:=NOT canpay。(*ADS通信部分,與投幣退幣機(jī)構(gòu)通信,詳細(xì)內(nèi)容見相關(guān)章節(jié)*)(*頻率發(fā)生器*)TON1(IN:=NOT , PT:= t15ms, Q= , ET= )。TOF1(IN:= , PT:= t15ms, Q=a , ET= )。FB_SlotState1( NETID:=39。39。, PORT:= 801, UPDATE:= a, stSlot=stslot1 , bBusy= , bError= , nErrId= )。cash:=*5+*10+*20+*+*1。TP1(IN:=pay OR quit, PT:=t20ms , Q=b , ET= )。IF b=TRUE THEN:=TRUE。:=TRUE。:=0。:=0。:=0。:=OutputHalf。:=Output1。ELSE:=FALSE。:=FALSE。END_IFFB_SlotCmd1( NETID:= 39。39。, PORT:= 801, bUpdate:=b , stCmd:=stcmd1 , bBusy= , bError= , nErrId= )。 商品子程序本設(shè)計中,有A、B、C、D、E共5種商品,每個商品均有一個獨(dú)立的子程序,判斷當(dāng)前商品的庫存,并給出相應(yīng)的指示燈信號。當(dāng)畫面切換到該商品的購買界面時,根據(jù)按鍵變更選購的數(shù)量,計算價格。在確認(rèn)購買后,提交到購物清單中。下面以商品A為例,程序段如下:PROGRAM cargoAVAR Availiable: BOOL。(*有貨*)Stockout: BOOL。 (*缺貨*) Cost: REAL。 (*價格*) Number: WORD。 (*購買數(shù)量*) ADD1: BOOL。 (*購買量+1*) sub1: BOOL。 (*購買量1*) CTUD1: CTUD。 (*加減計數(shù)器*) Cart1 : BOOL。 (*加入購物車(HMI)*)cart: BOOL。 (*加入購物車*) CANCEL1: BOOL。 (*取消(HMI)*) Cancel: BOOL。 (*取消*) NotBuying: BOOL。 TP1,tp2: TP。 END_VAR(*判斷庫存*)IF Quantity_a0THEN Stockout:=FALSE。 Availiable:=TRUE。ELSE Stockout:=TRUE。 Availiable:=FALSE。END_IF。(*根據(jù)面板上的按鍵和HMI中的+按鈕來加減購買數(shù)量*)CTUD1( CU:=(add1 OR ) AND NOT , CD:=sub1 , RESET:= Quit OR cancel OR pay , LOAD:= , PV:=Quantity_a, QU=, QD= , CV=Number )。(*計算當(dāng)前價格*)Cost:=Price_a*Number。(*確認(rèn)購買后,當(dāng)前價格才生效,可視化跳轉(zhuǎn)回商品選擇界面*)cart:=cart1 OR 。TP1(IN:=cart , PT:=t300ms , Q= , ET= )。IF Cart=TRUETHEN Cost_a:=Cost。END_IF。IF t250ms THEN currentvisu:=39。SELECTING39。END_IF。(*取消,清零購買數(shù)量和價格,可視化跳轉(zhuǎn)回商品選擇界面*)cancel:=cancel1 OR 。IF Cancel OR Quit=TRUETHEN Cost_a:=0。Number:=0。END_IF。TP2(IN:=cancel , PT:=t300ms , Q= , ET= )。 IF t250ms THEN currentvisu:=39。SELECTING39。 END_IF(*控制選擇界面中元素的顯示,非主要功能*)IF Cost_a0 THENNotBuying:=FALSE。ELSE NotBuying:=TRUE。END_IF。 零錢計算子程序本設(shè)計中的自動售貨機(jī)找零的幣種為1元和5角的兩種硬幣,考慮到若添加紙幣的退幣機(jī)構(gòu)將大大增加硬件投資,故按行業(yè)一般標(biāo)準(zhǔn)設(shè)計,只找零硬幣。但是程序中預(yù)留了多幣種的找零算法,方便日后升級,找零程序如下:PROGRAM change_calculateVAR xx: REAL。 x: REAL。 ChangeEnough: BOOL。END_VARIF change=0 THEN changeEnough:=TRUE。ELSE x:=change。 xx:=x。(*面值為1005的紙幣均屏蔽,只留1元和5角作為找零錢幣*)(* (*100*) WHILE xx=100 DO xx:=xx100。 n100:=n100+1。 END_WHILE IF n100=Change100 THEN n100:=Change100。 xx:=xn100*100。 x:=xx。 ELSE x:=xx。 END_IF (*50*) WHILE xx=50 DO xx:=xx50。 n50:=n50+1。 END_WHILE IF n50=Change50 THEN n50:=Change50。 xx:=xn50*50。 ELSE x:=xx。 END_IF (*20*) WHILE xx=20 DO xx:=xx20。 n20:=n20+1。 END_WHILE IF n20=Change20 THEN n20:=Change20。 xx:=xn20*20。 ELSE x:=xx。 END_IF (*10*) WHILE xx=10 DO xx:=xx10。 n10:=n10+1。 END_WHILE IF n10=Change10 THEN n10:=Change10。 xx:=xn10*10。 ELSE x:=xx。 END_IF (*5*) WHILE xx=5 DO xx:=xx5。 n5:=n5+1。 END_WHILE IF n5=Change5 THEN n5:=Change5。 xx:=xn5*5。 ELSE x:=xx。 END_IF*) (*1*) WHILE xx=1 DO xx:=xx1。 n1:=n1+1。 END_WHILE IF n1=Change1 THEN n1:=Change1。 xx:=xn1*1。 ELSE x:=xx。 END_IF (**) WHILE xx= DO xx:=。 nhalf:=nhalf+1。 END_WHILE IF nhalf=Changehalf THEN nhalf:=Changehalf。 xx:=xnhalf*。 ELSE x:=xx。 END_IF IF x=0 THEN ChangeEnough:=TRUE。 ELSE ChangeEno
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1