午夜三级做爱黄片,午夜福利小视频,午夜国产成人精品,午夜黄色在线视频 - www.atkqc.com

由于操作過(guò)于頻繁骂蓖,請(qǐng)點(diǎn)擊下方按鈕進(jìn)行驗(yàn)證文饱!

用VC++開發(fā)微機(jī)與松下PLC間的通訊程序

  引言

  目前耸弄,隨著plc的快速發(fā)展鲤境,越來(lái)越多的plc生產(chǎn)廠商開發(fā)了它與計(jì)算機(jī)的通信功能(主要是利用計(jì)算機(jī)串口進(jìn)行通信)榛瞪,本文是以松下fp系列plc為例,作詳細(xì)闡述乞芳。在一臺(tái)計(jì)算機(jī)于plc之間的通信中铐儡,通信由計(jì)算機(jī)發(fā)動(dòng),把命令幀發(fā)向plc细抠,plc將以響應(yīng)幀作應(yīng)答庆葱,并執(zhí)行相應(yīng)的動(dòng)作。

  1 簡(jiǎn)介

  可編程控制器是一種數(shù)字運(yùn)算操作的電子系統(tǒng)喧丛,專為在工業(yè)環(huán)境下應(yīng)用而設(shè)計(jì)胚高。它采用了可編程序的存儲(chǔ)器,用于其內(nèi)部存儲(chǔ)程序粮剃,執(zhí)行邏輯運(yùn)算恳蹲、順序控制、定時(shí)俩滥、計(jì)數(shù)和算術(shù)操作等面向用戶的指令嘉蕾,并通過(guò)數(shù)字式或模擬式輸入輸出控制各種類型的機(jī)械的生產(chǎn)過(guò)程∷桑可編程控制器及其有關(guān)外部設(shè)備错忱,都按易于與工業(yè)控制系統(tǒng)聯(lián)成一個(gè)整體、易于擴(kuò)充其功能的原則設(shè)計(jì)挂据。早期的plc以數(shù)字量的順序控制為主以清,提供了簡(jiǎn)單的慢速的通信功能(只支持rs232、rs485崎逃、多采用modbus協(xié)議)掷倔,現(xiàn)在的plc不僅具有邏輯運(yùn)算、順序控制个绍、定時(shí)勒葱、計(jì)數(shù)和算術(shù)操作,而且還具有a/d巴柿、d/a轉(zhuǎn)換凛虽,數(shù)值計(jì)算和數(shù)據(jù)處理等功能。它既可以對(duì)開關(guān)量進(jìn)行控制栓属,也可以對(duì)模擬量進(jìn)行控制礁懂,隨著plc功能不斷擴(kuò)充,它還有通訊聯(lián)網(wǎng)功能周矢。本文就是基于松下電工的專門通信協(xié)議(mewtocol)锣石,用vc++開發(fā)的上位機(jī)與plc間的通信。

  2 松下電工的專用通信協(xié)議mewtocol-com

  目前沟赏,隨著plc的快速發(fā)展浆酝,越來(lái)越多的plc生產(chǎn)廠商開發(fā)了它與計(jì)算機(jī)的通信功能(主要是利用計(jì)算機(jī)串口進(jìn)行通信)悔邀,本文是以松下fp系列plc為例,作詳細(xì)闡述砂姥。在一臺(tái)計(jì)算機(jī)于plc之間的通信中删舀,通信由計(jì)算機(jī)發(fā)動(dòng),把命令幀發(fā)向plc掠记,plc將以響應(yīng)幀作應(yīng)答梭狱,并執(zhí)行相應(yīng)的動(dòng)作。

 “健(1) 命令幀格式

  其中: %:mewtocol-com的命令幀開始標(biāo)志(ascii碼為25h)猾瘸。

  h,l:站地址的高位和低位丢习。

  #:站號(hào)特征碼(ascii碼為23h)牵触。

  發(fā)送文本:由命令碼和數(shù)據(jù)組成,其主要命令碼如表1所示咐低。

  bcc:校驗(yàn)碼揽思,采用異或校驗(yàn)碼,bcc為8位见擦。

 《ず埂(2) 響應(yīng)幀格式

  當(dāng)主站發(fā)來(lái)命令幀之后,從站將以響應(yīng)幀作應(yīng)答鲤屡。響應(yīng)幀分為2種损痰,若主站命令幀正確無(wú)誤,則用“正確響應(yīng)幀”作應(yīng)答;如果主站命令幀有錯(cuò)誤則用“錯(cuò)誤響應(yīng)幀”作應(yīng)答酒来。這兩種應(yīng)幀格式下卢未。正確響應(yīng)幀的格式

  其中 %,h详鲜,l躏宗,bcc,cr含義與命令幀相同闰厨。

  $:正確響應(yīng)的標(biāo)志(acsii碼為24h)撼腹。

  響應(yīng)文本:應(yīng)當(dāng)按照命令幀要求及協(xié)議規(guī)定組織瘪棱。

  錯(cuò)誤響應(yīng)幀的格式

  其中%害寸,h,l窒兼,bcc寝谚,cr含義與命令幀相同。

 【选L@谩:錯(cuò)誤響應(yīng)幀的標(biāo)志(acsii碼為21h)战覆。

  錯(cuò)誤代碼:對(duì)于命令及數(shù)據(jù)傳送中的各種錯(cuò)誤均規(guī)定為代碼以識(shí)別。

[DividePage:NextPage]

 ∑欢(3) 命令碼: mewtocol-com協(xié)議的命令碼匯總?cè)绫?所示

 〖砼摇(4)常用的命令與格式

  a)單接點(diǎn)的讀

  錯(cuò)誤響應(yīng)幀與單接點(diǎn)的相同。

  3 用visual c++6.0編寫串行通信程序

 〈览浴(1) mscomm控件

  串行通訊編程基本過(guò)程:設(shè)置初始化并打開串行口—配置串口—雙向傳輸數(shù)據(jù)—校驗(yàn)—釋放串口玄呛。本文的上位機(jī)通信程序是用visualc++6.0編寫的,主要是利用vc++中的一個(gè)通信控件mscomm來(lái)現(xiàn)的和二。

  該控件屏蔽了通訊過(guò)程中的底層操作徘铝,程序員應(yīng)用時(shí)只需設(shè)置,監(jiān)控mscomm控件的屬性和事件即可完成對(duì)串口的初始化和數(shù)據(jù)的輸入輸出工作惯吕。mscomm控件的主要屬性如下:

  * commport:設(shè)置并返回通訊端口號(hào)惕它,設(shè)計(jì)時(shí)端口號(hào)可設(shè)為1到16的任何數(shù)(默認(rèn)值為1)。如:setcommport(1);即設(shè)置當(dāng)前通訊端口為com1废登。

  * settings:設(shè)置并返回波特率淹魄,奇偶校驗(yàn),數(shù)據(jù)位長(zhǎng)度堡距,停止位長(zhǎng)度揭北。

  如:setsettings(lpctstr string);string是一個(gè)包括四部分的字符串:第一部分:波特率;

  第二部分:奇偶校驗(yàn),n表示不校驗(yàn)吏颖,e表示偶校驗(yàn)搔体,o表示奇校驗(yàn),s表示空格校驗(yàn)综俄,m表示符號(hào)校驗(yàn);

  第三部分:數(shù)據(jù)為長(zhǎng)度竿赂,其可選值為4,5制沦,6宅谁,7,8;

  第四部分:停止位長(zhǎng)度榛青,其可選為1记浸,1.5,2曙惋。 settings屬性的缺省值為“9600裸悟,n,8妙声,1”绕时。

  * portopen:用于打開和關(guān)閉端口。setportopen(bool bnewvalue);

  當(dāng)bnewvalue為true時(shí)打開端口,當(dāng)為false時(shí)關(guān)閉端口株捌。

  * input:從接受緩沖區(qū)返回和刪除字符月腋,該屬性在運(yùn)行時(shí)為只讀。getinput();

  * output:向緩沖區(qū)寫數(shù)據(jù)瓣赂,要傳送的數(shù)據(jù)可以是文本數(shù)據(jù)或是二進(jìn)制數(shù)據(jù)榆骚。

  *commevent:返回最近的通訊事件或錯(cuò)誤。只要有通訊錯(cuò)誤或事件發(fā)生時(shí)都會(huì)產(chǎn)生oncomm事件煌集,commevent屬性中存有錯(cuò)誤或事件的數(shù)值代碼寨躁。

  getcommevent();

  4 程序框架的生成及控件屬性的配置

  首先利用mfcappwizard(exe)建立一個(gè)基于對(duì)話框,支持activex控件牙勘,命名為transcomn的應(yīng)用程序职恳。然后在對(duì)話框中加入一些控件,其中那個(gè)mscomm控件(電話形狀的控件)必須是在系統(tǒng)中注冊(cè)過(guò)的microsoft communications control方面,由它進(jìn)行通訊時(shí)首先得設(shè)置它的一些屬性放钦,這些屬性既可以在控件屬性對(duì)話框中設(shè)置也可以在程序中設(shè)置,本文用后一種方法恭金,在程序中對(duì)mscomm控件屬性設(shè)置操禀。最后用classwizard為控件添加變量和響應(yīng)函數(shù)如表2

  5 程序編寫

  // transcommdlg.cpp : implementation file

  bool ctranscommdlg::oninitdialog()

  {

  //初始化通訊端口,波特率為9600横腿,奇校驗(yàn)颓屑,8位數(shù)據(jù)位,1位校驗(yàn)位灰深,選擇com1口

  cdialog::oninitdialog();

  m_comm.setcommport(1);

  m_comm.setsettings(“9600饵卸,o,8彰饭,1”);

  m_comm.setinputmode(1);

  m_comm.setportopen(true);

  return true; // return true unless you set the focus to a

  control

  }

  void ctranscommdlg::onsend()

  {

  updatedata(true);

  variant vresponse;

  char *str;

  //把對(duì)話框中有用戶輸入的命令字符串cstring

  //m_commandstring驻奇,由串口發(fā)出

  m_comm.setoutput(colevariant(m_commandstring));

  sleep(50);//延時(shí)50毫秒,一個(gè)保證有足夠的時(shí)間 //讓plc響應(yīng)命令

  //讀取串口輸入緩沖區(qū)中的字符個(gè)數(shù)肤贮,如大于0表 //示串口接受到plc的響應(yīng)幀峰抽,然后//進(jìn)行處理

  int k=m_comm.getinbuffercount();

  if(k》0)

  {

  //把plc發(fā)送來(lái)的響應(yīng)幀轉(zhuǎn)換為字符 //串,并在對(duì)話框的響應(yīng)文本框中顯示

  vresponse=m_comm.getinput();

  str=(char *)(unsigned char*)vresponse.parray-》pvdata;

  str[k]=`

 


聲明:本網(wǎng)站所收集的部分公開資料來(lái)源于互聯(lián)網(wǎng)搭艺,轉(zhuǎn)載的目的在于傳遞更多信息及用于網(wǎng)絡(luò)分享榛开,并不代表本站贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé),也不構(gòu)成任何其他建議啤兆。本站部分作品是由網(wǎng)友自主投稿和發(fā)布姚锥、編輯整理上傳,對(duì)此類作品本站僅提供交流平臺(tái)狼楔,不為其版權(quán)負(fù)責(zé)钳枕。如果您發(fā)現(xiàn)網(wǎng)站上所用視頻、圖片赏壹、文字如涉及作品版權(quán)問(wèn)題鱼炒,請(qǐng)第一時(shí)間告知,我們將根據(jù)您提供的證明材料確認(rèn)版權(quán)并按國(guó)家標(biāo)準(zhǔn)支付稿酬或立即刪除內(nèi)容蝌借,以保證您的權(quán)益昔瞧!聯(lián)系電話:010-58612588 或 Email:editor@mmsonline.com.cn。

網(wǎng)友評(píng)論 匿名: