第一篇:在WinCC中實現(xiàn)串行通訊的兩種方法
在WinCC中實現(xiàn)串行通訊的兩種方法
0 引言
WinCC即Windows Ccontrol Center(視窗控制中心),是一個功能強大的全面開放的上位機監(jiān)控系統(tǒng),既可以用于小規(guī)模簡單的過程監(jiān)控,也可以用于復雜的工控領域[1]。
WinCC提供了較大的用戶編程空間。WinCC提供內置的語言腳本,可以方便地控制每個程序對象。通過OLE,其他應用程序可集成到過程畫面上,并與WinCC交換相關數(shù)據(jù)。采用面向工業(yè)的ActiveX控件,用戶可以使用已完成的控件來實現(xiàn)復雜的管理與控制功能。基于系統(tǒng)穩(wěn)定性的考
慮,WinCC提供的這些功能多數(shù)還是受限的。WinCC提供硬件驅動的形式和硬件打交道,但是在實際的工程應用中,往往會用到許多WinCC沒有 提供驅動的硬件,用戶必須自己寫程序來控制這些硬件,還需要編寫程序控制實時數(shù)據(jù)的歸檔與處理。在WinCC中并沒有集成其他公司的智能 儀表的串行通訊程序,因此需要開發(fā)新的串行通訊程序。本文介紹在WinCC中實現(xiàn)串行通訊的兩種方法。1 間接通訊
自動控制系統(tǒng)中,上位機監(jiān)控部分主要是用于動態(tài)流程畫面監(jiān)視、報警報表輸出、趨勢圖分析等。在這個系統(tǒng)中,利用WinCC對整個上位機系
統(tǒng)進行組態(tài)設計,系統(tǒng)在正常工作時,上位機始終處于WinCC的運行環(huán)境中。WinCC提供了OLE,DDE,ActiveX,OPC服務器和客戶機等接口或 控件,可以很方便地與其他應用程序交換數(shù)據(jù)。由于計算機從串行接口接收的數(shù)據(jù)要與上位機中的WinCC建立連接,因而采用二進制文件形式
作為中間橋梁,即將接收的數(shù)據(jù)按其數(shù)據(jù)格式存入二進制文件,然后在WinCC中從二進制文件中提取數(shù)據(jù)[5]。該方案可分為兩個階段:
首先,使用VB語言編寫從串口中取數(shù)據(jù)的可執(zhí)行程序,采用通訊控件MSComm實現(xiàn)。通訊實現(xiàn)程序如圖1所示。
然后,在WinCC中,調用從串口中取數(shù)據(jù)的可執(zhí)行程序,將采集的數(shù)據(jù)寫入二進制文件;將數(shù)據(jù)從二進制文件中一一取出,賦給WinCC中相應 的內部變量標簽。由于可執(zhí)行程序采集到的數(shù)據(jù)在WinCC中需要使用,數(shù)據(jù)不方便直接傳遞,因而二進制文件是可執(zhí)行程序與WinCC之間數(shù)據(jù)
傳輸?shù)囊环N較為有效的方式。WinCC中讀取數(shù)據(jù)的程序流程如圖2所示。圖1通訊程序實現(xiàn)流程圖
圖2WinCC中讀取數(shù)據(jù)的程序流程圖 2 直接通訊
在WinCC中的圖形編輯器中直接加入ActiveX控件MSComm實現(xiàn)串行通訊。WinCC中帶有一個Global Script(全局腳本編輯器),它為開發(fā)人員提
供一個功能強大的工具,用于生成用戶的C腳本或VB腳本,生成的腳本可應用于任何地方。這里,就依據(jù)Global Script,通過對ActiveX控件
MSComm進行控制,編制一個從串口采集數(shù)據(jù)的通訊程序。上位機工作時,運行這個程序即可實現(xiàn)上位監(jiān)控系統(tǒng)與串口采集數(shù)據(jù)的通訊任務。
MSComm(即Microsoft Communications Control)是Microsoft公司提供的簡化Windows下串行通訊編程的ActiveX控件,它為應用程序提供了
通過串行接口收發(fā)數(shù)據(jù)的簡便方法。MSComm控件在串口編程時非常方便,程序員不必花時間去了解較為復雜的API函數(shù)。它在VC、VB、Delphi 等語言中均可使用[2]。MSComm控件的主要屬性:
a)CommPort 設置并返回通訊端口號。
b)Settings 以字符串的形式設置并返回波特率、奇偶校驗、數(shù)據(jù)位、停止位。c)PortOpen 設置并返回通訊端口的狀態(tài)。也可以打開和關閉端口。d)Input 從接收緩沖區(qū)返回和刪除字符。e)Output 向傳輸緩沖區(qū)寫一個字符串。
在WinCC中,VBScript是基于Visual Basic的運行腳本語言。腳本本身能訪問所有WinCC圖形對象的屬性和方法,也能訪問ActiveX控件和其他 制造商的應用程序對象模型。因而能控制對象的動態(tài)性能,方便地建立與其他制造商應用程序的連接[1]。
由于使用標準的ActiveX技術和Visual Basic,因而能夠進行快速開發(fā)串行通訊。具體實現(xiàn)步驟如下:
1)首先需要將Mscomm32.ocx在WinCC中注冊。
2)運行WinCC控制中心,建立兩個內部變量,一個串口輸出變量COM_OUT;另一個為串口輸入變量:COM1_IN。兩個變量均為16位文本變量。
3)在圖形編輯器中建立相應的操作界面,在界面中加入ActiveX控件,然后選擇Microsoft Communication Control 6.0選項。出現(xiàn)電話式的 圖標,這就是我們需要的串口通訊的控件。
4)可以在畫面中添加一個按鈕,在click事件中編輯VBS動作,對MSComm進行初始化。可在VBS全局腳本編輯器中輸入如下程序: Sub OnLButtonDown(ByVal Item,ByVal Flags,ByVal x,ByVal y)Dim mscomm
Set mscomm=ScreenItems(“mscomm”)mscomm.CommPort =2 mscomm.Settings=“9600,N,8,1” mscomm.InputMode=1 mscomm.portopen=True End Sub 5)在ActiveX控件MSComm屬性中也有OnComm事件。在該事件下輸入VBS動作,對發(fā)送或者接收到的字符進行處理。Sub OnComm(ByVal Item)??
?? //對發(fā)送或者接收到的字符進行處理 End Sub 在將數(shù)據(jù)賦給Internal tag(內部標簽)之后,上位監(jiān)控系統(tǒng)就可在監(jiān)控界面需要時,隨時用于顯示或計算,也可以把這些數(shù)據(jù)作歷史數(shù)據(jù)歸 檔,以用于報表輸出或查看數(shù)據(jù)的變化趨勢圖等。3 結論
串行通訊控件MSComm全面提供用于RS232串行通訊上層開發(fā)的所有細則,使得WinCC與智能儀表間的串行通訊能以較為簡捷的方式實現(xiàn)。上述
方法曾在自動化控制項目中使用,事實證明,這兩種方法不僅是可行的,而且是切實有效的。此外,還能很好地彌補了WinCC沒有提供串口通
訊通道驅動這一缺陷,增加了使用WinCC的靈活性,大大提高了組態(tài)效率。
打開高考作文思路的六把金鑰匙不少同學拿到作文題,常常大腦中一片空白,什么也想不起來.這是沒有打開作文思路 所致.其實, 只要我們講究方法, 審題立意關也就自然容易攻克, 寫作材料也就會紛至沓來, 如此,又怎么會寫不好作文呢? 這里,我送給大家迅速打開作文思路的六把金鑰匙.為說明這些方法的適用性,我結合 過去的高考題作一解說.一,置換法 1.如果所給的作文題目, 話題或材料是借喻性質的, 那么這時就可使用本體去置換喻體.如山東高考作文題: 請以“春來草自青”為話題,寫一篇不少于 800 字的文章.要求:①自擬題目.②自定立意.③除詩歌外,文體不限.④文體特征鮮明.命題人給了我們比喻的喻體,本體呢,思考可知道“春”的本體可以是信心,可以是毅 力,可以是機遇,也可以是改革,是友誼,是愛心,是互助,是合作,是誠信,等等.“草 自青”的本體可以是欣欣向榮的局面,可以是輝煌的成功,也可以是雙贏的結果,等等.我 們展開聯(lián)想,用一個又一個的本體去置換喻體,寫什么的問題也就立馬解決了.2.如果所給的作文題目或話題中的相關詞語具有多義性,那么這時可用具有單一語義的 詞語置換具有多義的詞語.例如重慶高考作文題: 《現(xiàn)代漢語詞典》對“自然”的釋義有:①自然界.②自由發(fā)展;不經(jīng)人力干預.③不 勉強;不局促;不呆板.…… 請以“在自然中生活”為題目,寫一篇文章.要求:①立意自定;②除詩歌外,文體不限;③不少于 800 字;④不要套作,不得抄襲.以“在自然中生活”為題目, “自然”怎么理解?這是立意的關鍵.命題人想我們之所 想,給了我們三個義項進行詮釋.我們只要用其中的一個義項去置換“自然” ,那么也就容 易迅速立意,打開思路.如果“自然”是指自然界,那么“在自然中生活” ,也就是在自然 界中生活,這樣我們可以談環(huán)保等.如果“自然”是指自由發(fā)展,不經(jīng)人力干預,那么“在 自然中生活” ,也就是在自由發(fā)展中生活,這樣我們可以談教育中的張揚,發(fā)展個性等.如 果“自然”是指不勉強,不局促,不呆板,那么該如何理解呢?我們可以通過造句的方式來 看一看:態(tài)度很自然;他是初次演出,但演得挺自然.這么說來, “在自然中生活” ,也就是 大大方方, 也就是凡事能夠深入進去融入其中.明白了這些, 我們談什么, 也就一目了然了.3.如果所給的作文題中含有代詞,那么這時可用代詞所代的事物去置換作文題中的代 詞.例如上海高考作文題:平常大家關注更多的也許是“我們” ,如果把視線轉向“他們” ,你會看到什么,又會想 到什么?請以“他們”為題,寫一篇文章.要求:(1)不少于 800 字.(2)不要寫成詩歌.(3)不得透露個人相關信息.世界就是由“我們”與“他們”組成的,心中如果只有“我們” ,自然世界是不完整的.遺憾的是, 現(xiàn)在只關注自己的人太多了, 無論何時何地, 都是以自我為中心, 哪里還有他人? 這樣的世界,又怎么會是一個和諧的世界.我們把視線轉向“他們” ,會看到什么?會看到 貧窮,會看到富貴,會看到不公,會看到進步,會看到文明,等等.會想到什么?會想到共 同富裕,會想到平等,會想到感恩,會想到正義等.“他們”是誰?可以是農民工,可以是 干部子弟,可以是下崗工人,可以是一擲千金的大款,可以是沿街乞討的老人,等等.這么 一置換,自然也就打開了思路.二,補充法 所謂補充法, 是指通過給標題或話題補出相關的句子成分來打開思路的方法.例如安徽 高考作文題: 請以“帶著感動出發(fā)”為題,寫一篇不少于 800 字的文章.要求:①立意自定.②文體自選.③不得抄襲,不得套作.④不得透露個人相關信息.⑤書寫規(guī)范,正確使用標點符號.打開思路,寫好“帶著感動出發(fā)” ,需要思考三個問題.一是誰帶著感動出發(fā).也就是 補出標題的主語,可以是你(你們),可以是我(我們),可以是他(他們).二是什么樣的感動, 或者說是為什么感動.聯(lián)系實際,汶川大地震中,老師舍生救學生,我們?yōu)橹袆?救援人 員不怕疲勞,日夜奮戰(zhàn),我們?yōu)橹袆?群眾排隊捐款,獻血,我們?yōu)橹袆?具體到個人, 溫總理第一時間在第一線指揮,我們感動;民警蔣小娟為災民的孩子喂奶,我們感動.讓人 感動的原因很多,讓人感動的事例很多.三是帶著感動出發(fā)的結果.帶著感動出發(fā),其結果 將產生更多的感動,從而使更多的人帶著感動出發(fā)!再如廣東高考作文題: 請以“不要輕易說'不' ”為題寫一篇文章.要求:①除詩歌之外,文體不限;②不少于 800 字.可以通過給標題補充狀語的方法來打開思路.不要輕易說“不” ,不是不能說“不” ,而 是不要輕易說.很多時候我們可以策略一些,這并不是要接受,認可,輕易說“不”的結果, 往往使我們受到不必要的傷害.比如面對同事,同學,朋友,家人的正當請求,不假思索脫 口而出的“不” ,往往傷害了他們的自尊心,拉大了與他們的距離,使雙方變得越來越疏遠.不要輕易說“不” ,是智慧的表現(xiàn),是道德的要求.明白了這些,我們的立意,選材也就有 了取舍的空間,寫出與眾不同的好文章,也就成了一件容易的事.再如浙江高考作文題: 閱讀下面的文字,根據(jù)要求作文.都市和鄉(xiāng)村,是我們棲居的空間;都市生活和鄉(xiāng)村生活,是我們平凡的生活.當我們從平凡中回望時,每個人都會有不同的感觸和期待.請以“觸摸都市”或“感受鄉(xiāng)村”為題,寫一篇作文,可講述你自己或身邊的故事,抒 發(fā)你的真情實感,也可闡明你的思想觀點.【注意】①立意自定,角度自選.②除詩歌外,文體不限.③不少于 800 字.④不得抄 襲.無論是“觸摸都市”中的“觸摸” ,還是“感受鄉(xiāng)村”中的“感受” ,都是用心去觸摸, 用心去感受.即給“觸摸”“感受”補充狀語.也就是說,我們所寫的,應該是都市或鄉(xiāng)村 , 中能夠在我們心靈的湖泊上激起波瀾最起碼是漣漪的人,事,物或觀點.這樣,我們所寫才 可能充滿與眾不同的個性,而不是些人云亦云的內容.具有鮮明的個性,能夠給人以陌生的 新意,自然會讓閱卷老師喜歡!三,擴展法 例如湖南高考作文題: 閱讀下面的文字,按要求作文.“天街小雨潤如酥,草色遙看近卻無”是唐代詩人韓愈的名句.詩句的意思是說,在滋 潤如酥的初春細雨中,春草發(fā)芽,遠遠望去,一片淡淡的綠色,可是走近后,卻只見到極為 稀疏的草芽,綠色反而感覺不到了.詩句的意境是美的,隱含的哲理也很豐富.它使我們領 悟到:置身太近,有時反而感受不到實際存在的東西;要把握某一事物,有時需要跳出這一 事物;人對事物的看法與對美的感受同距離是有關系的……其實, 生活中的許多事物和現(xiàn)象 都含有這兩句詩的意境與哲理,關鍵在于你的觀察和體會.請根據(jù)自己閱讀詩句所體會到的意境與哲理, 聯(lián)系現(xiàn)實生活, 寫一篇不少于 800 字的議 論文或記敘文.【注意】①立意自定,題目自擬.②不要照抄或擴寫材料.③所寫文章符合文體要求.如何立意?命題人已經(jīng)給了我們三個角度, 我們可以與現(xiàn)實生活相聯(lián)系, 看哪一個認識 深刻,哪一個手頭有材料,我們就用哪一個.除此之外,還可以談從全局把握問題,才能看 得清,看得準;還可以談在思想上先做一個冷靜的旁觀者,才能搞清事實真相,從而做一個 能夠正確解決問題的參與者,等等.再如福建高考作文題: 閱讀下面的文字,按要求寫一篇不少于 800 字的文章.三個人走進商店.一個人買了一瓶果汁, “我喜歡甜的.說: ”一個人買了一杯咖啡, 說: “我就喜歡這又苦又甜的滋味.還有一個人買了一瓶礦泉水后說: ” “我喜歡淡淡的礦泉水.” 變換角度法 四,變換角度法 一些材料作文, 往往需要從不同角度對所給材料進行審視, 以發(fā)現(xiàn)能夠打開我們思路的 角度.例如全國Ⅱ卷: 南太平洋的小島上,有很多綠海龜孵化小龜?shù)纳逞?一天黃昏,一只幼龜探頭探腦地爬 出來.一只老鷹直沖下來要叼走它.一位好心的游客發(fā)現(xiàn)了,連忙跑過去趕走老鷹,護著小 龜爬進大海.可是,意想不到的事情發(fā)生了,沙穴里成群的幼龜魚貫而出——原來,先出來 的那只幼龜是個“偵查兵” ,一旦遇到危險,它便縮回去,現(xiàn)在它安全到達大海,錯誤的信 息使幼龜們爭先恐后地爬到毫無遮擋的海灘.好心的游客走了, 原先那只在等待時機的老鷹 又飛了回來,其它老鷹也跟過來了.要求:選擇一個角度構思作文,自主確定立意,確定文體,確定標題;不要脫離材料內 容及含意的范圍作文,不要套作,不得抄襲.看了這則材料,誰也知道游客是好心辦壞事.為什么會這樣呢?是因為無知.如果知道 幼龜是“偵察兵”的話,自然也就不會幫倒忙了.現(xiàn)實生活中這樣的事例也不少.文革時期 的圍湖造田,毀林造田,都是典型.拿現(xiàn)在來說,許多家長不懂教育規(guī)律,只抱著為孩子未 來著想的美好心愿,對孩子實行棍棒教育,嚴重違反了《未成年人保護法》 ,使孩子的身心 受到極大傷害.許多地方領導,不懂市場不懂企業(yè),只抱著船大才能抗風浪的觀點,盲目要 求企業(yè)一再擴張,結果使很多企業(yè)破產倒閉.從成群的幼龜這個角度來說,它們沒有對得到的信息進行思考,只是絕對相信,才造成 了被老鷹叼走的悲劇.這提示我們,要善于動腦思考,綜合考慮各種渠道得來的信息,這樣 才能得出正確結論.如果不是這樣,而是聽見風就是風,聽見雨就是雨,又怎么不會吃虧上 當呢? 從老鷹這個角度來說,為了達到目的,即使遇到了挫折,也不放棄,而是在耐心等待時 機.如果被游客趕走就不再前來,那么自然也就不能夠捕捉到幼龜了.它們不僅在游客走后 又來了,而且還耐心等待,結果抓捕幼龜?shù)臋C會就來了.這對于我們人類來說,不也是一種 啟示嗎? 再如北京高考作文題: 課堂上, 老師說: “今天我們來做個小實驗.隨后, ” 他拿出一個裝滿石塊的玻璃廣口瓶, 放在講臺上,問道: “瓶子滿了嗎?”所有學生答: “滿了!”真的?“老師從桌下拿出一小 ” 桶沙子,慢慢倒進去,填滿石塊的間隙, “滿子嗎?”學生們若有所思.老師又拿來一壺水 倒了進去,直到水面與瓶口持平.“這個實驗說明了什么?”老師問道.課堂活躍起來.一個學生說: “很多事情看起來到達了極限,實際上還存在很大空間.” 一個學生說: “順序很重要.先放這桶沙子,有此石塊肯定就放不進去了.” 一個學生說: “對,得先放石塊.有些分量重的東西就得優(yōu)先安排.” 一個學生說: “也不一定,先沙子和水就一定不行么?” …… 請就以上材料,展開聯(lián)想,自定角度,寫一篇文章.題目自擬,文體自選(除詩歌外), 不少于 800 字.自定角度, 其實前三個學生所說的就都是很好的立意角度.我們如果對其中的一個有深 刻的認識,而且手頭還有材料,就不妨直接用一用.這則材料還說明思維方式很重要, 有了獨辟蹊徑的思維方式, 往往看似不能解決的問題 也就迎刃而解了;還說明辦法總比困難多,只要我們想辦法,困難總是能夠解決的.這兩個 立意角度也不錯.再如湖北高考作文題: 閱讀下面的文字,根據(jù)要求作文.你走過一棵樹,樹枝低垂,你是隨手把樹枝折斷丟棄,還是彎身而過?一只長了癬的流 浪狗走近你,你是憐憫地避開,還是一腳踢過去?電梯門打開,你是謙抑地讓人,還是霸道 地推人?一個盲人和你并肩路口,綠燈亮了,你會攙那盲者一把嗎?你與別人如何擦肩而 過?你怎么從小販手中接過找來的零錢?你如何低頭系上自己松了的鞋帶?你, 獨處時如何 與自己相處? 請根據(jù)對這段文字的理解,展開聯(lián)想,思考如何對待自然,如何對待他人,如何對待自 己.自選角度,以《舉手投足之間》為題寫一篇文章.要求:自定立意,自定文體,不少于 800 字.以《舉手投足之間》為題,寫什么?材料中的八個例子,都小得有些微不足道.可正是 這些微不足道,透露了我們思想深處的秘密,這就是我們的修養(yǎng),道德,文明程度.這么說 來, 舉手投足之間, 我們又怎么能不重視?從小處入手, 從細節(jié)入手, 一步一個腳印走下去, 我們才能成為一個有修養(yǎng)有道德的現(xiàn)代高素質的文明人.你說是不是呢? 八個例子,前兩個是讓我們思考如何對待自然,中間四個是讓我們思考如何對待他人, 最后兩個是讓我們思考如何對待自己.三種類型,三個思考角度,從哪一個角度切入,展現(xiàn) 在我們面前的都是一片海闊憑魚躍,天高任鳥飛的廣闊天地.我們去聯(lián)想,去思考,寫出一 篇好文章來也就是水到渠成的事情了.五,關鍵詞句把握法 對材料作文來說,有時抓住了概括性極強的詞語或句子,也就能夠把握命題人的意圖, 從而順利確定作文立意.如全國卷Ⅰ: 閱讀下面的文字,根據(jù)要求寫一篇不少于 800 字的文章.2008 年 5 月 12 日 14 時 28 分,四川省汶川縣發(fā)生里氏 8.0 級特大地震.人民的生命高于一切!胡錦濤,溫家寶等黨政軍領導人迅速趕赴災區(qū)指導抗震救災.十多萬解放軍, 武警和公安民警, 各省市的救援隊, 醫(yī)療隊, 工程搶修隊迅速進入災區(qū).港臺救援隊和國際救援隊飛抵災區(qū).志愿者從四面八方匯聚災區(qū).救援物資從水陸空源源不 斷運進災區(qū).一位中學教師趴在講臺上用生命保護了下面的四個學生.一位失去 15 個親人的縣民政 局長連續(xù)指揮救災五天只睡了七個小時.幸存者的生還奇跡在不斷突破,100 小時,150 小 時,196 小時…… 中央電視臺 24 小時播報.19 日 14 時 28 分舉國哀悼.一樣的愛心,不一樣的表達.捐款,獻血,義演,關注…… 要求:選擇一個角度構思作文,自主確定立意,確定文體,確定標題;不要脫離材料內 容及含意的范圍作文,不要套作,不得抄襲.所給的材料說的是什么呢?有兩個句子值得我們注意,一是“人民的生命高于一切” , 一是“一樣的愛心,不一樣的表達.捐款,獻血,義演,關注……”.我們想一想,圍繞這 兩條,發(fā)生了多少可歌可泣的故事啊!解放軍救援的故事,國際救援隊救援的故事,教師用 生命保護學生的故事,還有我們捐款,獻血的故事等,都值得我們去寫.這些故事,都可以 寫得生動感人,讓人激動的落淚.如果寫成議論文,應該注意選擇那些典型感人的事例,在 敘述的時候要飽蘸濃烈的感情,爭取在以理服人的同時,以情感人.六,換位法 如江西高考作文題: 閱讀下面的文字與漫畫,按要求作文.2007 年,洞庭湖大水導致 20 億只田鼠大遷徙,所過之處農田一片狼藉.專家認為,田 鼠為害之烈,原因之一是人類熱衷于吃野味,導致田鼠的天敵(蛇,貓頭鷹,黃鼠狼等)數(shù)量 急劇下降.根據(jù)上述材料,請你為田鼠或田鼠的天敵代擬一封給人類的信.要求:①必須按書信格式作文.②題目自擬.③所有內容必須與給定的材料相關.④不 少于 800 字.⑤不得抄襲,套作.代擬書信,自然需要換位思考.只有換位思考,才能寫得貼切,寫得逼真.以田鼠的口 吻給人類寫一封信.寫什么呢?寫感謝, 感謝人類吃掉了自己的天敵, 使自己得以迅速繁衍.要注意,寫得越是情真意切,對人類的諷刺意味才愈大愈強.可用正反對比手法來寫.寫人 類沒有吃自己的天敵時自己的悲慘處境, 寫自己的天敵被人類吃光時自己的歡欣鼓舞.不妨 用勾勒法,寫得形象寫得有趣.以田鼠的天敵的口吻給人類寫一封信.寫什么呢?寫人類的不理智.因為自己被吃掉, 才有了今天這種田鼠泛濫橫行的局面.還可以推斷,總有一天,田鼠會代人將所有田里的糧 食全部吃光,那個時候,人類悔悟也已經(jīng)晚了.最后要勸人類深刻反省,認識到保護田鼠的 天敵,就是保護自己.平常寫信,都是寫給親戚朋友,也就是現(xiàn)實生活中的人,現(xiàn)在卻是以田鼠或田鼠的天敵 的口吻來寫,我們想,一定能夠寫得別開生面,讓人喜歡!最后需要指出的是,我們分著介紹這六種打開作文思路的方法,是為了行文的方便.實 際應用時,往往是兩種或多種方法綜合運用.只有如此,我們的思維才會處于活躍狀態(tài),從 而順利通過審題立意關,將作文寫好!
第二篇:串行通訊技術在IC卡售飯系統(tǒng)中的應用
串行通訊技術在IC卡售飯系統(tǒng)中的應用
來源:中國一卡通網(wǎng) 作者:翁康靜,鄔冠華,徐長英 發(fā)布時間:2007-8-10 11:42:03 字體[大、中、小]
關鍵詞:ic卡售飯系統(tǒng) 售飯機 pos機 消費系統(tǒng) 串行通信 售飯系統(tǒng)
摘 要:使用VB的通訊控件和多臺單片機AT89C2051實現(xiàn)了IC卡售飯系統(tǒng)的串口通訊。重點介紹了上位機通訊系統(tǒng)中的發(fā)送接收程序,利用下位機串口工作方式完成多機通訊。IC卡售飯系統(tǒng)
IC卡售飯系統(tǒng)作為電子錢包進行消費(售飯),它代替了傳統(tǒng)的用現(xiàn)金消費的方式,消費者只需預先充錢于消費卡中,買飯時由售飯員在售飯機上輸入消費金額,售飯機認可后便完成消費,就餐者可方便地持IC卡在專用的POS售飯機上進行消費。IC卡的管理及窗口POS機的一切工作,包括控制、數(shù)據(jù)交換、管理和統(tǒng)計報表打印均由上位微機來控制完成。由此可知,上、下位機的高效及時通訊是至關重要的。
一個單位可能有多個食堂,一個食堂可能有多個售飯點,每個售飯點均設一個POS窗口機,再加上發(fā)卡機和增款機,這樣整個IC卡售飯系統(tǒng)就形成了一臺PC機對多臺下位機的串行通訊系統(tǒng),見圖1。系統(tǒng)通訊原理
整個系統(tǒng)中,上位機為PC機,使用Windows98操作系統(tǒng);下位機為AT89C2O51單片機,采用RS一485和RS一232標準接口與PC機的串行口連接。MAX485接口轉換芯片將RS一232轉換成RS一485協(xié)議后可進行遠距離傳送。由于各下位機共享串行總線,為避免沖突,每次通訊都由上位機開始,由上位機分配總線的使用權,同時下位機也可請求通訊以上報數(shù)據(jù),但需等待上位機將總線使用權分配給它才能發(fā)送數(shù)據(jù),因此每臺下位機都需分配一個唯一的機號。
上位機的通訊編程
打開Visual Basic 6.0集成開發(fā)環(huán)境,創(chuàng)建一個標準EXE的工程項目并命名,完成這一步后在主窗體Forml中添加一個Textbox(文本框)和一個CommonButton(按鈕)后,選擇菜單項工程/部件將彈出一個對話框以選擇添加控件(Controls)。選擇項目中的Microsoft Comm Control 6.0項和Microsoft Common Dialog Control 6.0項,并在該選擇框中打勾,將MSComm控件及CommonDialog控件加入到本項目中。這時工具欄將MSCommCommonDialog控件圖標加入到本項目中,這時就可以將它們添加到程序主窗體中去。
由于IC卡售飯系統(tǒng)的上位機管理系統(tǒng)采用VB平臺和數(shù)據(jù)庫技術支持,因此要實現(xiàn)對串口的通訊可采用以下兩種方法:采用Windows的API函數(shù)或利用VB的通訊控件。在這里筆者詳細介紹后一種方法的實現(xiàn)步驟。
(1)通訊參數(shù)設置。下面為實例程序清單:
Private Sub Commandl Click()開始按鈕With MSCom m1
. CommPort:2使用COM2(一般均使用COM2,有些Pc上COM1系統(tǒng)已用). Setting=“9600,N,8,1”設置通訊口參數(shù)
. InBufferSize:40設置MSComml接收緩沖區(qū)為40字節(jié)
. 0utBufferSize:2設置MSComml發(fā)送緩沖區(qū)為2字節(jié)
InputMode=comlnputModeBinary設置接收數(shù)據(jù)模式為二進制形式
. InputLen=1設置Input一次從接收緩沖讀取字節(jié)數(shù)為1 . SThreshold=11設置Output一次從發(fā)送緩沖讀取字節(jié)數(shù)為1 . InBuffer(:0unt:0清除接收緩沖區(qū),outBufferC0unt一0清除發(fā)送緩沖區(qū)
MaxW=一99最大值賦初值
MinW=99最小值賦初值
W =0數(shù)據(jù)個數(shù)計數(shù)器清零(需事先定義)
. RThreshold一1設置接收一個字節(jié)產生OnComm事件
If PortOpen—False Then判斷通訊口是否打開 . PortOpen一=True打開通訊口 If Err Then錯誤處理
MsgBox“串口通訊無效”
Exit Sub End lf End lf End With End Sub
(2)接收過程。數(shù)據(jù)的接收是一個從計算機串口緩存讀取數(shù)據(jù)的過程。在VB6.0語言里,采用MSComm 事件驅動方式—— Mscomml—OnComm 事件處理,利用MSComm控件INPUT函數(shù)實現(xiàn)數(shù)據(jù)的接收。實例程序如下:
(3)發(fā)送過程。利用在VB6.0里的通訊控件MSComm 的OUTPUT 函數(shù)實現(xiàn)數(shù)據(jù)發(fā)送,程序如下:
在通訊過程中,為了使通訊雙方步調協(xié)調一致,需要在程序中增加延時程序。在VB6.0中,一般調用Windows API的時間函數(shù)來實現(xiàn)延時功能。可以采用下述方法實現(xiàn)延時過程: 下位機的通訊
單片機中串行通訊的波特率可以程控設定。單片機的串行端121有2個控制寄存器,可用來設置工作方式、發(fā)送或接收狀態(tài)、特征位、數(shù)據(jù)傳送的波特率以及中斷標志TI和RI。串行端口的數(shù)據(jù)寄存器SBUF為發(fā)送和接收共有,當滿足條件時,向SBUF寫入數(shù)據(jù)就啟動發(fā)送過程;反之讀SBUF就啟動接收過程。下位機通訊程序流程圖見圖2。
參考文獻:
[1] 朝青.單片機原理與接口技術[M].北京:北京航空航天大學出版社.1994.
[2] 范逸之,陳立元.Visual Basic與RS一232串行通信控制最新版[M].北京:中國青年出版社,2000.
[3] 劉瑞新,汪遠征.Visual Basic程序設計教程[M].北京:機械工業(yè)出版社,2000.
第三篇:VB中串口通訊的實現(xiàn)
VB中串口通訊的實現(xiàn).txt VB中串口通訊的實現(xiàn)
------------------
一、概述
串口通訊作為一種古老而又靈活的通訊方式,被廣泛地應用于PC間的通訊以及PC和單片機之間的通訊之中。提到串口通訊的編程,人們往往立刻想到C、匯編等對系統(tǒng)底層操作支持較好的編程語言以及大串繁瑣的代碼。
實際上,只要我們借助相關ActiveX控件的幫助,即使是在底層操作一向不被人看好的VB中,一樣能夠實現(xiàn)串口通 訊,甚至其實現(xiàn)方法和C、匯編相比,要更加快捷方便。下面,筆者就介紹一下在VB中實現(xiàn)串口通訊的方法。
在Visual Basic中有一個名為Microsoft Communication Control(簡稱MSComm)的通訊控件。我們只要通 過對此控件的屬性和事件進行相應編程操作,就可以輕松地實現(xiàn)串口通訊。下面,筆者就簡要地介紹一下
MSComm控件的使用方法。
二、MSComm控件的主要屬性、事件
1、MSComm的屬性
由于MSComm控件屬性很多,在此筆者僅介紹與實現(xiàn)串口通訊密切相關的核心屬性。
Commport:設置通訊所占用的串口號。如設成1(默認值),表示對Com1進行操作。
Setting:對串口通訊的相關參數(shù)。包括串口通訊的比特率,奇偶校驗,數(shù)據(jù)位長度、停止位等。其默認值 是“9600,N,8,1”,表示串口比特率是9600bit/s,不作奇偶校驗,8位數(shù)據(jù)位,1個停止位。
Portopen:設置串口狀態(tài),值為True時打開串口,值為False時關閉串口。
Input:從輸入寄存器讀取數(shù)據(jù),返回值為從串口讀取的數(shù)據(jù)內容,同時輸入寄存器將被清空。
Ouput:發(fā)送數(shù)據(jù)到輸出寄存器。
InBufferCount:設置輸入寄存器所存儲的字符數(shù),當將其值設為0時,則輸入寄存器將被清空。
InputMode:設置從輸入寄存器中讀取數(shù)據(jù)的形式。若值為0,則表示以文本形式讀取;值為1,則表示以 二進制形式讀取。
OutBufferCount:設置輸出寄存器所存儲的字符數(shù),當將其值設為0時,則輸出寄存器將被清空。
RThreshold:設置在MSComm控件設置CommEvent屬性為comEvReceive并產生OnComm事件之前要接受的字符 數(shù)。
CommEvent屬性:返回最近的通訊事件或錯誤。通過對它具體屬性值的查詢,我們就可以獲得通訊事件和通 訊錯誤的完整信息。當其值是comEvReceive時表示接收到數(shù)據(jù)。
2、MSComm的事件
除了公共事件之外,MSComm只有一個OnComm事件。當CommEvent屬性值變化時將發(fā)生OnComm事件,指示發(fā)生 一個通訊事件或錯誤。當我們設置Rtheshold屬性值為0時,將使得捕獲comEvReceive事件無效。
三、串口通訊編程實例
在完成了對MSComm控件的簡要介紹之后,筆者就以實際程序為例,介紹一下串口通訊的具體實現(xiàn)方法。
1、PC機間的串口通訊
(1)、實現(xiàn)方法:
A、新建一個窗體,在上面放兩個Text控件、兩個CommandButton控件和兩個Label控件(如圖1.bmp所示)。
具體見下表:
控件類型 名稱 Caption屬性 作用
-----------------
Text Text1-------輸入所要發(fā)送的信息
Text Text2-------顯示接收到的信息
CommandButton Command1 發(fā) 送---------CommandButton Command2 退 出---------
Label Label1 發(fā)送的數(shù)據(jù) 提示
Label Label2 接收的數(shù)據(jù) 提示
B、在控件工具箱中的空白處點擊鼠標右鍵,在彈出的菜單中選擇“部件”,在彈出的窗口中的控件列表中 找到“Microsoft Comm Control”,將其選中,在點擊“應用”、“關閉”,在控件工具欄中就會出現(xiàn)一個電 話的小圖標。
C、用串口線將兩臺電腦連接起來。您可以使用Com1對Com1的對應連接,也可以使用Com1和Com2的交叉連接。
本程序使用的是Com1對Com1的連接。
D、輸入以下代碼:
Private Sub Command1_Click()
'...發(fā)送數(shù)據(jù)
MSComm1.OutBufferCount = 0 '...清空輸出寄存器
MSComm1.Output = Text1.Text '...發(fā)送數(shù)據(jù)
End Sub
Private Sub Command2_Click()
'...退出
Unload Me
End Sub
Private Sub Form_Load()
'...初始化
MSComm1.CommPort = 1 '...使用Com1口
MSComm1.Settings = “9600,n,8,1” '...設置通訊參數(shù)
MSComm1.PortOpen = True '...打開串口
End Sub
Private Sub Mscomm1_Oncomm()
'...通訊事件發(fā)生
Select Case MSComm1.CommEvent
Case comEvReceive '...有接受事件發(fā)生
Text2.Text = MSComm1.Input '...接受顯示數(shù)據(jù)
MSComm1.InBufferCount = 0 '...清空輸入寄存器
End Select
End Sub
2、PC機與單片機之間的通訊
PC機與單片機之間的通訊被廣泛的用于工業(yè)、醫(yī)療測控等領域之中。在應用中,我們通常將單片機作為“感 受器”和“效應器”,負責數(shù)據(jù)采集、響應計算機發(fā)出的指令對電路進行控制,有時也進行一些簡單的運算,最后再將執(zhí)行數(shù)據(jù)反饋給計算機處理。本程序將實現(xiàn)在PC機上輸入一個0-255之間的整數(shù),將此數(shù)據(jù)發(fā)送到單片 機,單片機接收到數(shù)據(jù)后,將數(shù)據(jù)在顯示管上顯示,再將此數(shù)除以2,將得數(shù)返回給PC機。(運行效果如圖 3.BMP所示)其實現(xiàn)方法如下:
A、同PC機間通訊的實現(xiàn)方法A-B。
B、連接電腦和單片機。注意!由于PC機端的RS232電平與單片機端TTL的并不不匹配,故應注意電平轉換。
C、在VB中輸入以下代碼:
Private Sub Mscomm1_Oncomm()
'...通訊事件發(fā)生
Dim indata As Variant
Dim bte(0)As Byte
Select Case MSComm1.CommEvent
Case comEvReceive '...有接受事件發(fā)生
indata = MSComm1.Input
'...注意!要通過MSComm控件發(fā)送或接收二進制數(shù)據(jù)必須用Variant類型的變量對二進
'...制Byte類型的變量進行轉換!
bte(0)= AscB(indata)
Text2.Text = bte(0)
MSComm1.InBufferCount = 0 '...清空輸入寄存器
End Select
End Sub
Private Sub Command1_Click()
'...發(fā)送數(shù)據(jù)
Dim Num As Integer
Dim outbte(0)As Byte
Num = Val(Text1.Text)
outbte(0)= CByte(Num)
MSComm1.OutBufferCount = 0 '...清空輸出寄存器
MSComm1.Output = outbte(0)'...發(fā)送數(shù)據(jù)
End Sub
Private Sub Command2_Click()
'...退出
Unload Me
End Sub
Private Sub Form_Load()
'...初始化
MSComm1.CommPort = 1 '...使用Com1口
MSComm1.Settings = “9600,n,8,1” '...設置通訊參數(shù)
MSComm1.PortOpen = True '...打開串口
End Sub
D、單片機工作方式置于1,比特率設為9600bit/s。在單片機上,我們只得使用匯編語言編寫,并且調用中 斷實現(xiàn)對串口數(shù)據(jù)的收發(fā)工作。源代碼如下:
PUSH PSW ;將程序狀態(tài)字壓入堆棧
PUSH ACC ;將累加器壓入堆棧
CLR EA ;關閉系統(tǒng)中斷
CLR RI ;清除中斷標志位
MOV A,SBUF ;從接收寄存器中讀取數(shù)據(jù)
MOV 70H,A ;分解數(shù)據(jù)百、十、個位并顯示
MOV B,#100
DIV AB
MOV 52H,A ;分解百位,送入存儲器52H
MOV A,B
MOV B,#10
DIV AB
MOV 51H,A ;分解十位,送入存儲器51H
MOV 50H,B ;分解個位,送入存儲器50H MOV A,70H
MOV B,#2
DIV AB;將接受的數(shù)據(jù)除以2
MOV SBUF,A ;將得數(shù)發(fā)送到輸出寄存器
ACALL DL1 ;延時保證數(shù)據(jù)完整發(fā)送
ACALL DL1
CLR RI ;清除中斷標志位
SETB EA ;打開系統(tǒng)中斷
POP ACC;累加器出棧
POP PSW ;程序狀態(tài)字出棧
RETI ;中斷程序返回
3、編程環(huán)境
以上程序在Windows 2000 Professional,Visual Basic 6.0企業(yè)版,AT89C52型單片機下調試通過。
四、總結
從以上程序可以看出,在VB中利用MSComm控件,可以快速開發(fā)出串口通訊程序,從而大大提高編程效率。
演講稿
尊敬的老師們,同學們下午好:
我是來自10級經(jīng)濟學(2)班的學習委,我叫張盼盼,很榮幸有這次機會和大家一起交流擔任學習委員這一職務的經(jīng)驗。
轉眼間大學生活已經(jīng)過了一年多,在這一年多的時間里,我一直擔任著學習委員這一職務。回望這一年多,自己走過的路,留下的或深或淺的足跡,不僅充滿了歡愉,也充滿了淡淡的苦澀。一年多的工作,讓我學到了很多很多,下面將自己的工作經(jīng)驗和大家一起分享。
學習委員是班上的一個重要職位,在我當初當上它的時候,我就在想一定不要辜負老師及同學們我的信任和支持,一定要把工作做好。要認真負責,態(tài)度踏實,要有一定的組織,領導,執(zhí)行能力,并且做事情要公平,公正,公開,積極落實學校學院的具體工作。作為一名合格的學習委員,要收集學生對老師的意見和老師的教學動態(tài)。在很多情況下,老師無法和那么多學生直接打交道,很多老師也無暇顧及那么多的學生,特別是大家剛進入大學,很多人一時還不適應老師的教學模式。學習委員是老師與學生之間溝通的一個橋梁,學習委員要及時地向老師提出同學們的建議和疑問,熟悉老師對學生的基本要求。再次,學習委員在學習上要做好模范帶頭作用,要有優(yōu)異的成績,當同學們向我提出問題時,基本上給同學一個正確的回復。
總之,在一學年的工作之中,我懂得如何落實各項工作,如何和班委有效地分工合作,如何和同學溝通交流并且提高大家的學習積極性。當然,我的工作還存在著很多不足之處。比日:有的時候得不到同學們的響應,同學們不積極主動支持我的工作;在收集同學們對自己工作意見方面做得不夠,有些事情做錯了,沒有周圍同學的提醒,自己也沒有發(fā)覺等等。最嚴重的一次是,我沒有把英語四六級報名的時間,地點通知到位,導致我們班有4名同學錯過報名的時間。這次事使我懂得了做事要腳踏實地,不能馬虎。
在這次的交流會中,我希望大家可以從中吸取一些好的經(jīng)驗,帶動本班級的學習風氣,同時也相信大家在大學畢業(yè)后找到好的工作。謝謝大家!
第四篇:在DELPHI中實現(xiàn)與AB PLC的通訊
在DELPHI中實現(xiàn)與AB PLC的通訊
【字體:大 中 小】 引言
美國羅克韋爾自動化公司的Allen-Bradley系列PLC是一個著名的可編程控制器產品,其產品體系基本上涵蓋了工業(yè)控制產品的各個領域,并以其先進性、可靠性在各行各業(yè)的自動控制領域中得到了廣泛的應用。在應用AB PLC時,上位計算機監(jiān)控軟件的開發(fā)我們可以使用羅克維爾自動化公司的RSView32或其他公司的組態(tài)軟件,也可以自己用開發(fā)工具來開發(fā)。
作為一個優(yōu)秀的RAD(快速應用開發(fā))開發(fā)工具,Delphi在廣大開發(fā)設計人員中也得到了廣泛的應用。它不僅開創(chuàng)了“構件(Component)”時代,而且還擁有非常出色的編譯器,極大地提高了開發(fā)人員開發(fā)程序的效率。
下面介紹在DELPHI中如何調用RSLinx的C SDK實現(xiàn)與AB PLC的通訊的方法。RSLinx簡介與配置
羅克韋爾自動化公司的RSLinx軟件是A-B PLC通用的通信配置軟件(2.2以上的版本支持對以太網(wǎng)的網(wǎng)關配置),它是一個鏈接Allen-Bradley 網(wǎng)絡和設備到Microsoft Windows應用程序中的完全的32位通訊軟件,應用的范圍包括RSLogix和RSNetWorx的設備編程、網(wǎng)絡組態(tài),RSView32人機界面應用程序,還有用Microsoft Office、Web頁或Visual Basic開發(fā)的數(shù)據(jù)查詢應用程序等。RSLinx也是一個OPC數(shù)據(jù)服務器和DDE服務器。
RSLinx目前主要有以下六個版本:RSLinx Lite、RSLinx Single Node、RSLinx OEM、RSLinx Professional、RSLinx Gateway、RSLinx SDK。在RSLinx OEM以后的4個版本均支持開發(fā)OPC應用程序或C-API客戶程序,并在RSLinx SDK中包括了開發(fā)OPC應用程序或C-API客戶程序的技術資料。
在與A-B PLC進行通訊之前必須連接好正確的物理連接。比如用DH+網(wǎng)絡通訊的話,要在計算機上安裝1784-PKTX通訊網(wǎng)卡,并正確接線。物理連接完成后在RSLinx中選擇相應的通訊驅動進行配置。如果配置成功后,可在RSWho窗口內顯示出配置的網(wǎng)絡和連接的PLC。
通訊驅動配置完成后,再配置客戶應用程序使用的通訊口。在RSLinx的菜單上選擇CommunicationsConfigure Client Applications…,彈出配置窗口如圖1所示。
在這個窗口中選擇相應的通訊驅動,圖1顯示的是1KT:0選擇了AB_DF1-1驅動。2 在DELPHI中編寫通訊程序
由于RSLinx C SDK只提供了基于C/C++語言的API,這些API都儲存在動態(tài)鏈接庫DTL32.DLL中,如果要在DELPHI中調用,這就需要掌握在DELPHI中調用儲存在DLL(動態(tài)鏈接庫)中的函數(shù)的方法。
圖1 如不會使用,可聯(lián)系本人球球:1102956688 2.1 調用方法
(1)靜態(tài)調用
靜態(tài)調用就是使用一個外部聲明子句顯式裝載使用的函數(shù),使DLL在應用程序開始執(zhí)行前即被裝入。例如有一個叫MaxLib.dll的動態(tài)鏈接庫,其中包含一個函數(shù): Function Max(I1,I2:Integer):Integer;靜態(tài)調用的引用如下:
Implementation Function Max(I1,I2:Integer):Integer;far;stdcall;external ?MaxLib?;
這種方法要在單元的interface 部分用external 指示字列出要從DLL中調用的例程。Far指令表明可以被其他段,例如其他單元調用的子例程。所有在單元接口中聲明的子例程在缺省情況下都是Far類型的,其相反的指令是near。
如果external后什么也不跟,必須用{$L}編譯指令預先指定一個DLL名字,如:{$L MaxLib.dll}。
但是使用靜態(tài)調用方法時,程序無法在運行時間里決定DLL的調用。在DELPHI中使用DLL時,例程的標識符必須與DLL中相應輸出例程的標識符完全一致(盡管DELPHI本身大小寫不敏感)。(2)動態(tài)調用或隱式裝入
使用Windows API函數(shù)Loadlibrary和GetprocAddress可以實現(xiàn)在運行時間時的動態(tài)裝載DLL,并調用其中的過程。
例如: Type
TMyFunc=Function(I1,I2:Integer):Integer;Stdcall;Var MyFunc: TMyFunc;MyHandle:THandle;
MyHandle:=LoadLibrary(?MaxLib?);
If MyHandle<=0 then
Raise Exception.Create(?動態(tài)鏈接庫調用失敗,錯誤代碼是:?+Inttostr(Getlasterror))
else
@MyFunc:=GetProcAddress(MyHandle,?Max?);
if not Assigned(MyFunc)then Raise Exception.Create(?GetProcAddress調用失敗,錯誤代碼是:?+inttostr(getlasterror))
else MaxInt:=MyFunc(200,500);Freelibrary(Myhandle);// 卸載DLL 2.2 類型轉換
由于DELPHI使用的是Object Pascal語言,當轉換C函數(shù)到Pascal語言相等的說明時,把C函數(shù)及其數(shù)據(jù)類型轉換到正確的Pascal類型是非常重要的。
(1)數(shù)據(jù)類型轉換
附表列出了部分數(shù)據(jù)類型的轉換
(2)函數(shù)調用轉換
在Object Pascal中,過程或函數(shù)的參數(shù)在調用時的傳遞順序是自左向右的,而C函數(shù)調用則是自右向左的,因此在靜態(tài)調用時必須指定Stdcall參數(shù),強制使過程或函數(shù)的參數(shù)按自右向左調用。使用Stdcall方式,能保證不同語言寫的DLL的兼容性,同時它也是WINDOWS API的約定方式。
2.3 RsLinx C SDK函數(shù)在DELPHI中的聲明
根據(jù)上面DELPHI調用DLL的原則,下面用靜態(tài)調用列出了部分RsLinx C SDK庫中函數(shù)的調用方法。
implementation
Function DTL_INIT(id:LongInt):SmallInt;stdcall;external?dtl32.dll?;
Function DTL_C_CONNECT(Id:LongInt;Name:PChar;NullP: Pointer):SmallInt;stdcall;external?dtl32.dll?;
Function DTL_DISCONNECT(id:LongInt):SmallInt;stdcall;external?dtl32.dll?;
Function DTL_C_DEFINE(var id:LongInt;DefStr:PChar): SmallInt;stdcall;external?dtl32.dll?;
Function DTL_UNDEF(id:LongInt):SmallInt;stdcall;external?dtl32.dll?;
Function DTL_READ_W(id:LongInt;Buf:Pointer;var stat:LongInt;DelayTime:LongInt):SmallInt;stdcall;external?dtl32.dll?;
Function DTL_WRITE_W(id:LongInt;Buf:Pointer;
var stat:LongInt;DelayTime:LongInt):SmallInt;stdcall;external?dtl32.dll?;
DTL_INIT函數(shù)的功能是初始化DTL通訊庫,id是分配給DTL函數(shù)定義表的數(shù)目,成功返回0。
DTL_C_CONNECT函數(shù)的功能是建立一個通訊連接,成功返回0。
DTL_DISCONNECT函數(shù)的功能是斷開一個通訊連接,成功返回0。
DTL_C_DEFINE函數(shù)比較重要,它定義讀取或寫入的數(shù)據(jù)表,DefStr是定義的數(shù)據(jù)表的字符串,如果成功函數(shù)返回0,并且把賦予此數(shù)據(jù)表的句柄放在id中,供讀取或寫入函數(shù)用。
DTL_UNDEF函數(shù)的功能是刪除一個已定義的數(shù)據(jù)表,成功返回0。
DTL_READ_W函數(shù)的功能是從數(shù)據(jù)表中讀取數(shù)據(jù)。Id是在DTL_C_DEFINE函數(shù)中定義的數(shù)據(jù)表,Buf是存放讀入數(shù)據(jù)的緩沖區(qū),stat是函數(shù)執(zhí)行完寫入的狀態(tài),DelayTime是以毫秒為單位的函數(shù)執(zhí)行完畢的最長等待時間。
DTL_WRITE_W函數(shù)的功能是向數(shù)據(jù)表中寫入數(shù)據(jù)。參數(shù)定義與DTL_READ_W函數(shù)相同,只不過這時的Buf是向定義的數(shù)據(jù)表寫入數(shù)據(jù)的緩沖區(qū)。
2.4 例程
本例在DELPHI中的表單中定義了一個標簽Label1,用來指示與RSLinx的通訊是否成功;定義了兩個按鈕,分別是讀取和寫入數(shù)據(jù),數(shù)據(jù)地址是N7:0,長度是20。當按寫入按鈕時,程序生成20個隨機數(shù)寫入到PLC的N7:0中,當按讀取按鈕時,程序從N7:0開始讀取20個整數(shù),并在表單的列表框中顯示出來。表單如圖2所示。
變量定義、創(chuàng)建窗口、關閉窗口、讀取數(shù)據(jù)、寫入數(shù)據(jù)過程的源程序如下:
var Rst,i: Integer;Data:array [0..20> of SmallInt;Str,DefStr:string;Handle,IOStat:LongInt;Implementation {加入上述DTL函數(shù)} procedure TForm1.FormCreate(Sender: TObject);begin Str:=”;rst:=1;rst:=DTL_INIT(1);
if rst=0 then rst := DTL_C_CONNECT(0,PChar(Str),nil);if rst=0 then Label1.Caption:=?RSLinx連接成功?
else Label1.Caption:=?RSLinx連接失敗?;
end;procedure TForm1.FormDestroy(Sender: TObject);begin DTL_DISCONNECT(0);
end;procedure TForm1.Btn_ReadClick(Sender: TObject);
begin DefStr:=?$N7:0,20,WORD,READ,1KT:0,001,PLC5,0?;
if DTL_C_DEFINE(Handle, PChar(DefStr))=0 then begin rst:=DTL_READ_W(handle, @Data, IOStat, 1000);DTL_UNDEF(Handle);end;ListBox1.Clear;if rst=0 then for I:=0 to 19 do begin FmtStr(Str,?N7:%d=%d?, [I,Data[I>>);
ListBox1.Items.Add(Str);end;end;procedure TForm1.Btn_WriteClick(Sender: TObject);begin DefStr:=?$N7:0,20,WORD,MODIFY,1KT:0,001,PLC5,0?;
if DTL_C_DEFINE(Handle, PChar(DefStr))=0 then begin rst:=DTL_WRITE_W(handle, @Data, IOStat, 1000);DTL_UNDEF(Handle);end;end;以上程序在DELPHI5.0、6.0環(huán)境下測試通過。由于RSLinx C SDK中函數(shù)很多,在此不能一一列舉,如要使用其它函數(shù),只要按上述的方法轉換即可。
第五篇:在平凡中實現(xiàn)夢想
在平凡中實現(xiàn)夢想
——“中國夢?勞動美?我與學院共發(fā)展”主題演講稿 尊敬的各位領導,各位老師,親愛的同學們,大家下午好!我是來自學院房地產經(jīng)濟管理系的一名普通教師。我今天非常榮幸能代表房地產經(jīng)濟管理系來參加這次的“中國夢?勞動美?我與學院共發(fā)展”的主題演講比賽。我的演講題目是“在平凡中實現(xiàn)夢想”。
去年,我們學院剛剛迎來了她40歲的生日。40年的風雨歷程,我們學院在探索中拼搏,在拼搏中創(chuàng)新,在創(chuàng)新中發(fā)展。特別是三校合并以來,我們學院更是走在了創(chuàng)新發(fā)展的前列,我們在偉大祖國的快速發(fā)展中茁壯成長。天津獲得了對中國國際礦業(yè)大會的永久承辦權,學院就可以一直在國際礦業(yè)大會的舞臺上盡情的展示我們師生的風采;在教書育人的本職工作中,我們更是在硬件和軟件上兩手抓,青年教師的培養(yǎng)初具效果,實訓室的建設也初具規(guī)模,舉辦的各類活動更是給校園帶來了活力與生機。
我是一名90后,出生于80年代末、90年代初的中國。一提到90后,大家可能想到的就是叛逆與新潮。不過,我今天想說的是,無論其他人對我們的認識是什么,我所見到的我們這一代人是這樣的:生長于一個網(wǎng)絡較為發(fā)達的時代,在剛剛開始接觸世界的時候就受到了信息大爆炸的沖擊,可能這樣會使我們有著不同以往的人生觀和價值觀。我們之所以在生活與工作當中充滿熱情,充滿希望,就是希望自己的價值可以實現(xiàn)。而這份熱情與希望,我認為正是我們學院發(fā)展所需要的,而學院帶給我們的平臺也促進我們更好更快的成長!
剛來到學院時,我在會議中心從事服務員的實習工作。這是我第一次做服務工作,新鮮感讓我在開始的時候卯足勁,但是瑣碎的、重復的工作,也讓我的熱情在一段時間后慢慢開始消磨。這時候,我就在提醒自己,無論你想干什么,無論你干得是什么,無論你干一件事一項工作多長時間,你都應該不斷地告誡自己堅持下去并且保持熱情。服務員的工作讓我懂得,平凡中我們要知足,越是平凡越要堅持。
我很自豪自己能成為房經(jīng)系的一員。開始時,面對嶄新的工作環(huán)境,我顯得有些不知所措。我提醒自己,要堅持下去,要盡快熟悉工作,找到工作的方式方法,找到自己與工作的契合點。因為我深深的知道,只有堅持做好每一件平凡的小事,才能對得起這份工作,對得起支持自己給予自己充分信任的領導和同事,對得起含辛茹苦用心血將自己培養(yǎng)成人的父母。
一年里,我也接觸了不同方面的工作,但給我印象最深的有兩件事。第一件是剛進入系內,突然接到陌生的教學秘書工作,我經(jīng)過了幾天的迷茫期,受到了不少人的質疑與批評,但我還是在犯錯與改正的交錯中勇敢的堅持了下來,因為我相信,能接受得了多大的批評就能獲得多大的進步,最終我圓滿的完成了領導交給我的任務,實現(xiàn)了這個崗位的平穩(wěn)過渡。第二件就是11月初參加中國國際礦業(yè)大會的過程,這個過程讓我記憶猶新,我負責同傳翻譯接收機/耳機的發(fā)放與回收工作,之前這種設備我連見也沒有見過,更是沒有進行過大型會議的設備管理工作。我就是帶著一身的忐忑來到了梅江會展中心,來到了代表學院、代表天津、代表中國的舞臺上。在這里,我見識到
了什么是國際舞臺,什么是全方位素質,什么是專業(yè)團隊,什么是一流水準,這些都讓我在眼界上得到很大的拓寬,讓我在思想上有了新的認識。整個過程中,我在整個礦大服務團隊里看到了鼓足干勁、力爭上游的決心和勇氣,這些更督促我不能懈怠,勇往直前。我也希望每一年的礦大我都能參與其中,為學院爭光添彩。
在這里,我必須感謝一年來給予我信任、支持與幫助的領導及同事,是你們的信任讓我敢于接手陌生的工作任務,是你們的幫助讓我處理問題越來越熟練,是你們的包容讓我有機會改正自己工作上的紕漏;是因為你們,才會讓現(xiàn)在的我這么充滿自信的站在這個演講臺上,謝謝你們!
“平凡的崗位,不平庸的態(tài)度”是我工作的座右銘。我喜歡“平凡”的“凡”字,它的意思是“所有”。它中間有一個點,這個點時刻告訴我,別忘了自己的重心和初心,當你落下這個點時,它只是一個不具體的“幾”;而當你拾起來這個點時,它就變成了“凡”,也就是“所有”。如果想得到所有,你必須把平凡的事一一做好,并且堅持下去,這樣就是最不容易的平凡。我也希望自己可以永遠的“堅持平凡”。這就是我自己的夢。
我相信,如果每一個人都能做好自己平凡的工作,堅持平凡的夢,不僅自己的夢可以實現(xiàn),學院也會越來越好,宏大的“中國夢”也就可以照進現(xiàn)實。
謝謝大家!