成人精品一区二区久久久 I 国产美女永久无遮挡 I 中文字幕+乱码+中文字幕明步 I 国产在视频一区二区三区吞精 I 日韩精品小视频 I 成人性生交大片免费4 I 免费aaa级毛片在线视频 I 一级片毛片 I 大型成人社区 I 国模在线播放 I 欧美大荫蒂毛茸茸视频 I 偷偷色噜狠狠狠狠的777米奇 I www.久久亚洲 I 日日搞夜夜操 I 亚洲成色777777女色窝 I 毛片黄色毛片 I 午夜片在线观看 I 国产一区二区三区中文字幕 I 天天干夜夜骑 I 日韩在线视频一区二区三区 I 久久久无码精品亚洲a片0000 I 写真福利片hd在线播放 I 欧美成人一区二免费视频 I 色噜噜狠狠爱综合视频 I 中文字幕无线码免费人妻 I 国产精品久久久久久久久久不蜜臀 I 欧美综合人人做人人爱 I 1024成人网色www I 国产精品视频一二三区 I 亚洲免费美女视频

wjun7610
級(jí)別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 110 個(gè)
工控威望: 249 點(diǎn)
下載積分: 708 分
在線時(shí)間: 35(小時(shí))
注冊(cè)時(shí)間: 2007-09-16
最后登錄: 2025-07-30
查看wjun7610的 主題 / 回貼
樓主  發(fā)表于: 2013-04-13 12:43
S7200_PPI動(dòng)態(tài)庫(kù)DLL+實(shí)例.rar (490 K) 下载次数:1921    S7200_PPI.dll V3.2 通信協(xié)議串口通訊動(dòng)態(tài)鏈接庫(kù)DLL(以下簡(jiǎn)稱DLL),是為滿足工業(yè)通信需要,

針對(duì)工業(yè)領(lǐng)域要求上位機(jī)對(duì)西門(mén)子S7-200系列PLC通訊實(shí)時(shí)采集與控制的組態(tài)編程而設(shè)計(jì)。

本DLL是采用Delphi語(yǔ)言開(kāi)發(fā)的標(biāo)準(zhǔn)串口通訊庫(kù),具有以下特點(diǎn):

1)、遵循西門(mén)子PLC的PPI通訊協(xié)議;

2)、支持多串口并發(fā)操作,支持多線程串口通訊,將串口通訊對(duì)主程序的影響降至最低;

3)、實(shí)時(shí)性、可靠性好,通用性強(qiáng);

4)、適用于多PLC(下位機(jī))聯(lián)網(wǎng)和上位機(jī)通信,滿足多方面的需要;

5)、函數(shù)接口功能全,操作簡(jiǎn)單,支持PPI通訊協(xié)議的絕大部分地址的讀寫(xiě)功能函數(shù);

6)、支持USB、PC擴(kuò)展卡等擴(kuò)展串口號(hào);

7)、支持多種操作系統(tǒng)win9x/win2000/winXP(標(biāo)準(zhǔn)Win32 DLL);

8)、易于快速開(kāi)發(fā)(VC等非RAD開(kāi)發(fā)環(huán)境的開(kāi)發(fā));

9)、更新原有函數(shù)調(diào)用方式采用數(shù)組調(diào)用數(shù)據(jù)發(fā)生與接收,初學(xué)者快速入門(mén);

10)、可在多種編程環(huán)境下使用,例如VB、VC、Delphi、PB、Labview、易語(yǔ)言等開(kāi)發(fā)環(huán)境;

11)、擴(kuò)展了函數(shù)功能讀取下位機(jī)中的雙字、單精度浮點(diǎn)等類型數(shù)據(jù),更加符合工業(yè)自動(dòng)化領(lǐng)域的工控軟件的開(kāi)發(fā)。

軟件版本更新及相關(guān)說(shuō)明:

S7200_PPI.dll V3.2 串口通訊鏈接庫(kù),實(shí)現(xiàn)了對(duì)S7-200系列PLC的I、Q、M、V、S、、SM、C、T區(qū)軟元件的讀寫(xiě)功能

wangjun于2008年在原有S7200_PPI.dll V2.0版基礎(chǔ)上的更新版,重寫(xiě)了函數(shù)結(jié)構(gòu),采用數(shù)據(jù)接收和發(fā)送緩沖區(qū)

(數(shù)組)方式傳遞,讀出和寫(xiě)入單元數(shù)據(jù)使用更方便。對(duì)于16位整數(shù)和32位整數(shù)讀取寫(xiě)入均按有符號(hào)整數(shù)處理,

小數(shù)的返回按單精度浮點(diǎn)型(2進(jìn)制浮點(diǎn))處理讀取方式。提供擴(kuò)展功能函數(shù),方便用戶實(shí)現(xiàn)混合數(shù)據(jù)讀取。

能夠同時(shí)滿足32個(gè)串口并發(fā)情況下的正常使用。

S7200_PPI.dll V3.2 分為完美版和單機(jī)版兩個(gè)版本。

注意:實(shí)例在使用時(shí)不能超出試用版的地址限制,否則無(wú)法正確通訊。

龍帥工作室為您提供專業(yè)串口通訊控件,也可為您訂制

專用通訊協(xié)議串口控件。目前龍帥系列串口通訊協(xié)議

控件包括modbus_rtu、modbus_tcp、三菱FX PLC編程口、

歐姆龍HostLink、西門(mén)子PPI等多個(gè)系列產(chǎn)品。

淘寶店:http://shop34821629.taobao.com

電  話:13912935690

騰訊QQ:157610979

阿里旺旺: wj_longshuai

郵  箱:157610979@QQ.com        

        wjun7610@yahoo.com.cn

        chinawanglong@163.com
[ 此帖被wjun7610在2013-04-13 15:03重新編輯 ]
wjun7610
級(jí)別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 110 個(gè)
工控威望: 249 點(diǎn)
下載積分: 708 分
在線時(shí)間: 35(小時(shí))
注冊(cè)時(shí)間: 2007-09-16
最后登錄: 2025-07-30
查看wjun7610的 主題 / 回貼
1樓  發(fā)表于: 2013-04-13 12:47
DLL串口操作函數(shù)包括:

  1)、S7200ComOpen打開(kāi)串口;

  2)、S7200ComClose關(guān)閉串口;
      
  3)、S7200SetDelay串口通訊延時(shí)設(shè)定;
                    
  4)、S7200ComTrue判斷串口是否打開(kāi)成功;
            
  5)、S7200ComWork判斷串口是否正在工作中;

S7200 PPI協(xié)議功能函數(shù):

  1)、S7200BitRead    位讀取函數(shù)

  2)、S7200ByteRead   字節(jié)讀取函數(shù)

  3)、S7200WordRead   字讀取函數(shù)

  4)、S7200DwordRead  雙字讀取函數(shù)

  5)、S7200FloatRead  浮點(diǎn)讀取函數(shù)

  6)、S7200BitWrite   位賦值函數(shù)

  7)、S7200ByteWrite  字節(jié)賦值函數(shù)

  8)、S7200WordWrite  字賦值函數(shù)

  9)、S7200DwordWrite 雙字賦值函數(shù)

10)、S7200FloatWrite 浮點(diǎn)賦值函數(shù)

11)、S7200BitEWrite  元件強(qiáng)制賦值函數(shù)

12)、S7200EbitCancel 取消位元件強(qiáng)制值函數(shù)

13)、S7200PlcRun     置PLC為運(yùn)行模式

14)、S7200PlcStop    置PLC為停止模式

S7200 PPI協(xié)議DLL緩沖區(qū)傳遞功能函數(shù)包括:

  1)、S7200ClearBuf         清除復(fù)位DLL緩存區(qū)

  2)、S7200ByteReadBuf      字節(jié)讀取函數(shù)  

  3)、S7200WordReadBuf      字讀取函數(shù)

  4)、S7200DwordReadBuf     雙字讀取函數(shù)  

  5)、S7200IntDllBufRead    讀DLL整數(shù)緩存區(qū)值;
  
  6)、S7200FloatReadBuf     浮點(diǎn)讀取函數(shù)

  7)、S7200FloatDllBufRead  讀DLL浮點(diǎn)緩存區(qū)值;

  8)、S7200WriteIntDllBuf   寫(xiě)DLL整數(shù)緩存區(qū)值;

  9)、S7200ByteWriteBuf     字節(jié)賦值函數(shù)  

10)、S7200WordWriteBuf     字賦值函數(shù)  

11)、S7200DwordWriteBuf    雙字賦值函數(shù)

12)、S7200WriteFloatDllBuf 寫(xiě)DLL浮點(diǎn)緩存區(qū)值;  

13)、S7200FloatWriteBuf    浮點(diǎn)賦值函數(shù)

   這里,僅對(duì)PB開(kāi)發(fā)環(huán)境使用DLL緩存區(qū)數(shù)據(jù)傳遞進(jìn)行調(diào)用給出了

申明方式和調(diào)用舉例,其他非VC、VB、Delphi等語(yǔ)言需要使用DLL

緩沖區(qū)進(jìn)行數(shù)據(jù)傳遞時(shí),調(diào)用DLL聲明請(qǐng)參考本語(yǔ)言對(duì)Windows標(biāo)準(zhǔn)

DLL的規(guī)則和函數(shù)原型進(jìn)行調(diào)用。

能夠正確傳遞數(shù)組的開(kāi)發(fā)環(huán)境如VB、VC、delphi不推薦使用該部分

擴(kuò)展功能函數(shù)。

當(dāng)需要進(jìn)行8位整數(shù)、16位整數(shù)、32位整數(shù)、32位浮點(diǎn)數(shù)值進(jìn)行混合讀寫(xiě)時(shí),所需拓展函數(shù)包括:

  1)、DecBitBin        字整數(shù)的位抽取;

  2)、Int16ToInt_8h     字到字節(jié)轉(zhuǎn)換高位字節(jié);  

  3)、Int16ToInt_8l     字到字節(jié)轉(zhuǎn)換低位字節(jié);

  4)、Int8ToInt16       字節(jié)到字的轉(zhuǎn)換;

  5)、Int32ToInt_16h    雙字到字轉(zhuǎn)換高位字;  

  6)、Int32ToInt_16l    雙字到字轉(zhuǎn)換低位字;

  7)、Int16ToInt32      字到雙字的轉(zhuǎn)換;

  8)、Float32ToInt_16h  浮點(diǎn)到字轉(zhuǎn)換高位字;

  9)、Float32ToInt_16l  浮點(diǎn)到字轉(zhuǎn)換低位字;

  10)、Int16ToFloat32   字到浮點(diǎn)的轉(zhuǎn)換;  

  11)、介紹如何實(shí)現(xiàn)數(shù)據(jù)的混合讀取和寫(xiě)入;
wjun7610
級(jí)別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 110 個(gè)
工控威望: 249 點(diǎn)
下載積分: 708 分
在線時(shí)間: 35(小時(shí))
注冊(cè)時(shí)間: 2007-09-16
最后登錄: 2025-07-30
查看wjun7610的 主題 / 回貼
2樓  發(fā)表于: 2013-04-13 12:47
在VC中使用DLL一般都是采用動(dòng)態(tài)聲明的方式,函數(shù)說(shuō)明中給出的是Delphi的函數(shù)原型,

在VC中聲明時(shí)只要注意一下類型的對(duì)應(yīng)即可,Delphi中的longint類型對(duì)應(yīng)VC中的int類型

Delphi中的Pchar對(duì)應(yīng)VC中的char* ,下面給出主要函數(shù)的聲明:

在使用的文件的cpp中聲明一個(gè)句柄:

HINSTANCE hinstDLL;

用來(lái)標(biāo)識(shí)導(dǎo)入的動(dòng)態(tài)鏈接庫(kù)。

1)、按下例說(shuō)明聲明相關(guān)各個(gè)函數(shù):(在cpp文件的頭處聲明);

typedef int (_stdcall *pOpen)(int nport, int BaudRate, int DataBits, char* Parity, int StopBits, char* User);
typedef int (_stdcall *pClose)(int nport);
typedef int (_stdcall *pSetDelay)(int value);
typedef int (_stdcall *pComTrue)(int nport);
typedef int (_stdcall *pComWork)(int nport);

typedef int (_stdcall *pReadBit)(int nport, int node, char* element, int address, int Bit);
typedef int (_stdcall *pReadByte)(int nport, int node, char* element, int address, int Count, int* RxdBuffer);
typedef int (_stdcall *pReadInt)(int nport, int node, char* element, int address, int Count, int* RxdBuffer);
typedef int (_stdcall *pReadDInt)(int nport, int node, char* element, int address, int Count, int* RxdBuffer);
typedef int (_stdcall *pReadFloat)(int nport, int node, char* element, int address, int Count, float* RxdBuffer);

typedef int (_stdcall *pBitWrite)(int nport, int node, char* element, int address, int Bit, int value);
typedef int (_stdcall *pBitEWrite)(int nport, int node, char* element, int address, int Bit, int value);
typedef int (_stdcall *pEbitCancel)(int nport, int node, char* element, int address, int Bit);

typedef int (_stdcall *pWriteByte)(int nport, int node, char* element, int address, int Count, int* TxdBuffer);
typedef int (_stdcall *pWriteInt)(int nport, int node, char* element, int address, int Count, int* TxdBuffer);
typedef int (_stdcall *pWriteDInt)(int nport, int node, char* element, int address, int Count, int* TxdBuffer);
typedef int (_stdcall *pWriteFloat)(int nport, int node, char* element, int address, int Count, float* TxdBuffer);

typedef int (_stdcall *pPlcRun)(int nport, int node);
typedef int (_stdcall *pPlcStop)(int nport, int node);

typedef int (_stdcall *pBitBin)(int value, int Bitaddress);
typedef int (_stdcall *p16I_8h)(int value);
typedef int (_stdcall *p16I_8l)(int value);
typedef int (_stdcall *p8I_16I)(int valueH, int valueL);
typedef int (_stdcall *p32I_16h)(int value);
typedef int (_stdcall *p32I_16l)(int value);
typedef int (_stdcall *p16I_32I)(int valueH, int valueL);
typedef int (_stdcall *p32f_16h)(float value);
typedef int (_stdcall *p32f_16l)(float value);
typedef float (_stdcall *p16I_32f)(int valueH, int valueL);

2)、建立動(dòng)態(tài)鏈接庫(kù)的新函數(shù)名:(在cpp文件的頭處聲明,上面的聲明之后)

pOpen mOpen;
pClose mClose;
pSetDelay mSetDelay;
pComTrue mComTrue;
pComWork mComWork;

pReadBit mReadBit;
pReadByte mReadByte;
pReadInt mReadInt;
pReadDInt mReadDInt;
pReadFloat mReadFloat;

pBitWrite mBitWrite;
pBitEWrite mBitEWrite;
pEbitCancel mEbitCancel;

pWriteByte mWriteByte;
pWriteInt mWriteInt;
pWriteDInt mWriteDInt;
pWriteFloat mWriteFloat;

pPlcRun mPlcRun;
pPlcStop mPlcStop;

pBitBin mBitBin;
p16I_8h m16I_8h;
p16I_8l m16I_8l;
p8I_16I m8I_16I;
p32I_16h m32I_16h;
p32I_16l m32I_16l;
p16I_32I m16I_32I;
p32f_16h m32f_16h;
p32f_16l m32f_16l;
p16I_32f m16I_32f;

3)、導(dǎo)入動(dòng)態(tài)鏈接庫(kù),如例所示:(在cpp文件的OnInitDialog過(guò)程建立):

hinstDLL = LoadLibrary("S7200_PPI.dll");

4)、判斷dll文件是否存在并聲明并建立動(dòng)態(tài)鏈接庫(kù)中的函數(shù)與新函數(shù)名的對(duì)應(yīng)關(guān)系,

如下:(在cpp文件的OnInitDialog過(guò)程建立):

if (hinstDLL)
{
   mOpen = (pOpen)GetProcAddress (hinstDLL,"S7200ComOpen");
   mClose = (pClose)GetProcAddress (hinstDLL,"S7200ComClose");
   mSetDelay = (pSetDelay)GetProcAddress (hinstDLL,"S7200SetDelay");
   mComTrue = (pComTrue)GetProcAddress (hinstDLL,"S7200ComTrue");
   mComWork = (pComWork)GetProcAddress (hinstDLL,"S7200ComWork");

   mReadBit = (pReadBit)GetProcAddress (hinstDLL,"S7200BitRead");
   mReadByte = (pReadByte)GetProcAddress (hinstDLL,"S7200ByteRead");
   mReadInt = (pReadInt)GetProcAddress (hinstDLL,"S7200WordRead");
   mReadDInt = (pReadDInt)GetProcAddress (hinstDLL,"S7200DwordRead");
   mReadFloat = (pReadFloat)GetProcAddress (hinstDLL,"S7200FloatRead");

   mBitWrite = (pBitWrite)GetProcAddress (hinstDLL,"S7200BitWrite");
   mBitEWrite = (pBitEWrite)GetProcAddress (hinstDLL,"S7200BitEWrite");
   mEbitCancel = (pEbitCancel)GetProcAddress (hinstDLL,"S7200EbitCancel");
      
   mWriteByte = (pWriteByte)GetProcAddress (hinstDLL,"S7200ByteWrite");
   mWriteInt = (pWriteInt)GetProcAddress (hinstDLL,"S7200WordWrite");
   mWriteDInt = (pWriteDInt)GetProcAddress (hinstDLL,"S7200DwordWrite");
   mWriteFloat = (pWriteFloat)GetProcAddress (hinstDLL,"S7200FloatWrite");
  
   mPlcRun = (pPlcRun)GetProcAddress (hinstDLL,"S7200PlcRun");
   mPlcStop = (pPlcStop)GetProcAddress (hinstDLL,"S7200PlcStop");
      
   mBitBin = (pBitBin)GetProcAddress (hinstDLL,"DecBitBin");
   m16I_8h = (p16I_8h)GetProcAddress (hinstDLL,"Int16ToInt_8h");
   m16I_8l = (p16I_8l)GetProcAddress (hinstDLL,"Int16ToInt_8l");
   m8I_16I= (p8I_16I)GetProcAddress (hinstDLL,"Int8ToInt16");
   m32I_16h = (p32I_16h)GetProcAddress (hinstDLL,"Int32ToInt_16h");
   m32I_16l = (p32I_16l)GetProcAddress (hinstDLL,"Int32ToInt_16l");
   m16I_32I= (p16I_32I)GetProcAddress (hinstDLL,"Int16ToInt32");
   m32f_16h = (p32f_16h)GetProcAddress (hinstDLL,"Float32ToInt_16h");
   m32f_16l = (p32f_16l)GetProcAddress (hinstDLL,"Float32ToInt_16l");
   m16I_32f= (p16I_32f)GetProcAddress (hinstDLL,"Int16ToFloat32");
  
   AfxMessageBox("S7200_PPI.dll已成功載入!");
}
else
{
  AfxMessageBox("沒(méi)找到S7200_PPI.dll!");
  SendMessage(WM_CLOSE);
}

注:雙引號(hào)中為動(dòng)態(tài)鏈接庫(kù)中的原有函數(shù)名。

函數(shù)中用到了char*型參數(shù),這里介紹下char*與Cstring的相互轉(zhuǎn)換的函數(shù):

(1)char*->CString

char* sz;
CString str;
str.Format("%s",sz);  //可以用此函數(shù)將讀取的值轉(zhuǎn)成字符串

(2) CString -> char*

CString str;
char* sz = str.GetBuffer(0);//可將字符串轉(zhuǎn)成char*給函數(shù)賦值


5)、當(dāng)不再需要使用DLL時(shí)記得關(guān)閉串口及釋放動(dòng)態(tài)鏈接庫(kù),(在OnDestroy事件中釋放)

if(hinstDLL)
{
   int k = mComTrue(mnport);
   if (k==1)
   {
      mClose(mnport);
   }    
   FreeLibrary(hinstDLL);
}
wjun7610
級(jí)別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 110 個(gè)
工控威望: 249 點(diǎn)
下載積分: 708 分
在線時(shí)間: 35(小時(shí))
注冊(cè)時(shí)間: 2007-09-16
最后登錄: 2025-07-30
查看wjun7610的 主題 / 回貼
3樓  發(fā)表于: 2013-04-13 12:47
西門(mén)子PPI通訊協(xié)議

    通過(guò)硬件和軟件偵聽(tīng)的方法,分析PLC內(nèi)部固有的PPI通訊協(xié)議,然后采用上位機(jī)編程,遵循PPI通訊協(xié)議,讀寫(xiě)PLC數(shù)據(jù),實(shí)現(xiàn)人機(jī)操作

任務(wù)。這種通訊方法,與一般的自由通訊協(xié)議相比,省略了PLC的通訊程序編寫(xiě),只需編寫(xiě)上位機(jī)的通訊程序資源S7-226的編程口物理層為

RS-485結(jié)構(gòu),SIEMENS提供MicroWin軟件,采用的是PPI(Point to Point)協(xié)議,可以用來(lái)傳輸、調(diào)試PLC程序。在現(xiàn)場(chǎng)應(yīng)用中,當(dāng)需要PLC

與上位機(jī)通訊時(shí),較多的使用自定義協(xié)議與上位機(jī)通訊。在這種通訊方式中,需要編程者首先定義自己的自由通訊格式,在PLC中編寫(xiě)代碼,

利用中斷方式控制通訊端口的數(shù)據(jù)收發(fā)。采用這種方式,PLC編程調(diào)試較為煩瑣,占用PLC的軟件中斷和代碼資源,而且當(dāng)PLC的通訊口定義

為自由通訊口時(shí),PLC的編程軟件無(wú)法對(duì)PLC進(jìn)行監(jiān)控,給PLC程序調(diào)試帶來(lái)不便。

    SIEMENS S7-200PLC的編程通訊接口,內(nèi)部固化的通訊協(xié)議為PPI協(xié)議,如果上位機(jī)遵循PPI協(xié)議來(lái)讀寫(xiě)PLC,就可以省略編寫(xiě)PLC的通訊

代碼。如何獲得PPI協(xié)議?可以在PLC的編程軟件讀寫(xiě)PLC數(shù)據(jù)時(shí),利用第三個(gè)串口偵聽(tīng)PLC的通訊數(shù)據(jù),或者利用軟件方法,截取已經(jīng)打開(kāi)

且正在通訊的端口的數(shù)據(jù),然后歸納總結(jié),解析出PPI協(xié)議的數(shù)據(jù)讀寫(xiě)報(bào)文。這樣,上位機(jī)遵循PPI協(xié)議,就可以便利的讀寫(xiě)PLC內(nèi)部的數(shù)據(jù),

實(shí)現(xiàn)上位機(jī)的人機(jī)操作功能。

西門(mén)子的PPI(Point to Point)通訊協(xié)議采用主從式的通訊方式,一次讀寫(xiě)操作的步驟包括:首先上位機(jī)發(fā)出讀寫(xiě)命令,PLC作出接收正確

的響應(yīng),上位機(jī)接到此響應(yīng)則發(fā)出確認(rèn)申請(qǐng)命令,PLC則完成正確的讀寫(xiě)響應(yīng),回應(yīng)給上位機(jī)數(shù)據(jù)。這樣收發(fā)兩次數(shù)據(jù),完成一次數(shù)據(jù)的讀寫(xiě)

(從這里可以看出PPI協(xié)議的通訊效率并不好,一次讀寫(xiě)需收發(fā)兩次數(shù)據(jù)^_^)。

其通訊數(shù)據(jù)報(bào)文格式大致有以下幾類:

1)、讀寫(xiě)申請(qǐng)的數(shù)據(jù)格式如下:

SD LE LER SD DA SA FC DASP SSAP DU FCS ED

SD:(Start Delimiter)開(kāi)始定界符(68H)

LE:(Length)報(bào)文數(shù)據(jù)長(zhǎng)度

LER:(Repeated Length)重復(fù)數(shù)據(jù)長(zhǎng)度

SD: (Start Delimiter)開(kāi)始定界符(68H)

SA:(Source Address)源地址,指該地址;

DA:(Destination Address)目標(biāo)地址,指該地址;

FC:(Function Code)功能碼

DSAP:(Destination Service Access Point)目的服務(wù)存取點(diǎn)

SSAP:(Source Service Access Point)源服務(wù)存取點(diǎn)

DU:(Data Unit)數(shù)據(jù)單元

FCS:(Frame Check Sequence)校驗(yàn)碼

ED:(End Delimiter)結(jié)束分界符(16H)

報(bào)文數(shù)據(jù)長(zhǎng)度和重復(fù)數(shù)據(jù)長(zhǎng)度為自DA至DU的數(shù)據(jù)長(zhǎng)度,校驗(yàn)碼為DA至DU數(shù)據(jù)的和校驗(yàn),只取其中的末字節(jié)值。

讀寫(xiě)一般數(shù)據(jù)的功能碼為 6CH,讀CT數(shù)據(jù)、置位、復(fù)位、強(qiáng)制等的功能碼為 7CH,確認(rèn)命令功能碼5CH。

2)、PLC接收到讀寫(xiě)命令,校驗(yàn)后正確,返回的數(shù)據(jù)格式為 E5H

3)、確認(rèn)讀寫(xiě)命令的數(shù)據(jù)格式為:

SD SA DA FC FCS ED  

其中SD為起始符,為10H

SA為數(shù)據(jù)源地址

DA為目的地址

FC為功能碼,取5CH

FCS為SA+DA+FC的和的末字節(jié)

ED為結(jié)束符,取16H

4)、數(shù)據(jù)類型碼

04:S
05:SM
06:AI
07:AQ
1E: C
81:I
82:Q
83:M
84:V
1F: T

5)、讀寫(xiě)功能數(shù)據(jù)命令實(shí)例

1、給寫(xiě)VW3值1200

68 21 21 68 02 00 6C 32 01 00 00 00 00 00 0E 00 06 05 01 12 0A 10 02 00 02 00 01 84 00 00 18 00 04 00 10 04 B0 50 16

2、讀取IB0的數(shù)據(jù)值

68 1B 1B 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10 02 00 01 00 00 81 00 00 00 64 16

感興趣的朋友給你根據(jù)上述例子用串口精靈測(cè)試一下,當(dāng)發(fā)送命令成功PLC返回E5,你再發(fā)送10 02 00 5C 5E 16,就可以完成一次讀寫(xiě)命令。

(記得接收和發(fā)送采用16進(jìn)制方式 o(∩_∩)o...哈哈)

2.2 S7-200PLC CPU內(nèi)存地址范圍(DLL所能尋址的范圍)

被存取:       內(nèi)存類型      CPU 221        CPU 222         CPU 224                   CPU 226

位(字節(jié).位)       V          0.0 ~ 2047.7  0.0 ~  2047.7  0.0 ~  5119.7  V 1.22    0.0 ~  5119.7   V 1.23
                                                            0.0 ~  8191.7  V 2.00    0.0 ~ 10239.7  V 2.00
                                                            0.0 ~  10239.7 XP

                   I          0.0 ~ 15.7   0.0 ~ 15.7     0.0 ~  15.7              0.0 ~  15.7

                   Q          0.0 ~ 15.7   0.0 ~ 15.7     0.0 ~ 15.7               0.0 ~ 15.7
                  
                   M          0.0 ~ 31.7   0.0 ~ 31.7     0.0 ~ 31.7               0.0 ~ 31.7

                   S          0.0 ~ 31.7   0.0 ~ 31.7     0.0 ~ 31.7               0.0 ~ 31.7

                   SM         0.0 ~ 179.7  0.0 ~ 299.7    0.0 ~ 549.7              0.0 ~ 549.7

字節(jié)               VB         0 ~ 2047     0 ~ 2047       0 ~ 5119   V 1.22        0 ~ 5119        V 1.23
                                                            0 ~ 8191   V 2.00        0 ~ 10239       V 2.00
                                                            0 ~ 10239  XP

                   IB         0 ~ 15       0 ~ 15         0 ~ 15                   0 ~ 15

                   QB         0 ~ 15       0 ~ 15         0 ~ 15                   0 ~ 15

                   MB         0 ~ 31       0 ~ 31         0 ~ 31                   0 ~ 31

                   SMB        0 ~179       0 ~299         0 ~ 549                  0 ~ 549

                   SB         0 ~ 31       0 ~ 31         0 ~ 31                   0 ~ 31

字                 VW         0 ~2046      0 ~ 2046       0 ~5118   V 1.22         0 ~ 5118        V 1.23
                                                            0 ~ 8190   V 2.00        0 ~ 10230       V 2.00
                                                            0 ~ 10230  XP
                  
                   T          0 ~ 255      0 ~ 255        0 ~ 255                  0 ~ 255

                   C          0 ~ 255      0 ~ 255        0 ~ 255                  0 ~ 255

                   AIW        0 ~ 30       0 ~ 30         0 ~ 62                   0 ~ 62

                   AQW        0 ~ 30       0 ~ 30         0 ~ 62                   0 ~ 62

雙字               VD         0 ~ 2044     0 ~ 2044      0 ~ 5116   V 1.22       0 ~ 5116        V 1.23
                                                           0 ~ 8188   V 2.00       0 ~ 10236       V 2.00
                                                           0 ~ 10236  XP

說(shuō)明:S7-200PLC的字、雙字地址和字節(jié)地址實(shí)際上是重疊的,下面做個(gè)說(shuō)明如:

VB0  VB1  VB2  VB3  VB4  VB5  VB6  VB7  VB8  VB9  VB10  VB11  VB12  VB13  VB14  VB15

————  ————  ————  ————  ————  ————    ————     ————
  VW0       VW2       VW4       VW6       VW8       VW10        VW12         VW14
—————————  ————————— —————————    ———————————
       VD0                 VD4                 VD8                     VD12

從上例可以看出PLC中字節(jié)、字與雙字尋址的關(guān)系,當(dāng)然如果你想使用VW1(VB1 VB2)、VD3(VB3 VB4 VB5 VB6)等尋址方式也是可以的,

但為了減少不必要的尋址錯(cuò)誤造成程序的非法執(zhí)行建議:

字尋址時(shí)使用(V、I、Q、M等等)0、2、4、6、8、10 ……,(這從PLC的模擬量輸入/輸出(AIW/AQW)的尋址就可以看出奇數(shù)地址是不允許的)

雙字尋址時(shí)使用(V、I、Q、M等等)0、4、8、12、16、20、24 …………………………,同時(shí)還要注意字節(jié)地址尋址最好也能不重疊;

C、T區(qū)當(dāng)前值讀取時(shí)的地址按實(shí)際地址0~255來(lái)。

主站蜘蛛池模板: 狠狠色伊人亚洲综合成人 | 欧美重口另类在线播放二区 | 国产小视频免费观看 | 亚洲 欧美 激情 小说 另类 | 亚洲男人天堂av | 国产一区二区三区免费观看网站上 | 国产suv精品一区二区68 | 又大又粗欧美黑人aaaaa片 | 国产精品xxx在线观看 | 福利不卡 | 欧美老熟妇又粗又大 | 日日躁夜夜躁狠狠躁夜夜躁 | 欧美国产在线一区 | 国产一区午夜 | 欧美另类专区 | 啪啪av网站 | 天天躁日日躁狠狠躁婷婷高清 | 久久亚洲综合色 | 欧美日韩一本的免费高清视频 | 成年免费视频黄网站在线观看 | 欧美超碰在线 | 亚洲va欧美va国产综合先锋 | 日本道色综合久久影院 | 国产大学生呻吟对白精彩在线 | 丰满岳妇乱中文字幕 | 中文字幕一区视频 | 国产成人免费爽爽爽视频 | 色综合天天综合网中文 | 五月婷婷丁香久久 | 邻居少妇张开腿让我爽了在线观看 | 精品日产a一卡2卡三卡4卡乱 | 日本大片在线 | 伊人久久大香线蕉综合狠狠 | 欧美狠狠插 | 亚洲国产精品一区二区第一页 | 国产无套粉嫩白浆内谢 | 久久国产乱子伦精品免费台湾 | 你懂的网址在线观看 | 在线日韩精品在线 | 国产卡一卡二卡三 | 九色视频网站 | 青草导航 | 婷婷一区二区三区四区 | jzzijzzij亚洲日本少妇熟 | 国产色片在线观看 | 亚洲黄视频在线观看 | 精品人妻av一区二区三区 | 午夜亚洲 | 蜜臀久久99精品久久久无需会员 | 玩弄放荡丰满少妇视频 | 婷婷亚洲综合五月天小说 | 日韩精品一区二区三区丰满 | 亚洲人成网站18禁止大 | 日韩国产亚洲欧美成人图片 | 山东熟女啪啪哦哦叫 | 亚洲日本影院 | 一级全黄少妇性色生活片 | 亚洲精品久久久久国色天香 | xxxx久久| 主站蜘蛛池模板: 蛛词}| 黄色三级免费网站 | 久久精品无码精品免费专区 | 亚洲国产精品无码一线岛国 | 日本无遮羞打屁股网站视频 | 欧美一道本 | 亚洲欧洲成人精品香蕉网 | 夜夜躁狠狠躁日日躁麻豆 | 亚洲色欲久久久综合网东京热 | 福利视频一区二区三区 | 欧美视频在线一区 | 国产乱码久久久久 | 天堂资源中文网 | 亚洲综合熟女久久久30p | 国产 欧美 视频一区二区三区 | 国产69精品久久99不卡的观看体验 | 日本免费一区二区三区在线播放 | 上床视频在线观看 | 成人精品一区日本无码网站 | 九九热线有精品视频 | 日韩福利片午夜免费观着 | 丰满岳跪趴高撅肥臀尤物在线观看 | aaaa级黄色片 | 国产成人a亚洲精品 | 一级 黄 色 毛片 | 一区欧美 | 粉嫩一区二区三区四区公司1 | 九色琪琪久久综合网天天 | 国产精品爱久久久久久久电影蜜臀 | 黄色精品在线 | 亚洲欧美国产精品久久 | av在线精品 | 国产毛片一区二区 | 日本午夜网 | 欧美黄色免费观看 | 亚洲精品久久国产高清情趣图文 | 国产美女遭强高潮免费 | 曰韩精品无码一区二区三区视频 | 亚洲国产精华液网站w | 日韩va中文字幕无码电影 | 中文字幕乱码一区二区三区 | 久久久久久动漫 | 亚洲午夜精品a片久久www解说 | 婷婷资源网 | 国产成人免费无码视频在线观看 | 人人澡人人澡人人看 | 福利淫地av导航 | 96在线看片免费视频国产 | 日韩欧美视频一区二区三区 | 国产偷国产偷亚洲清高孕妇 | 天天爽天天爽夜夜爽毛片 | 夫妻免费无码v看片 | 又粗又硬又黄又爽的免费视频 | 天堂√8| 亚洲 欧美 视频 | 黄在线观看品 | 交换国产精品视频一区 | 天堂一区人妻无码 | 国产韩国精品一区二区三区 | 国产精品入口免费软件 | 主站蜘蛛池模板: 蛛词}| 奇米四色狠狠 | 精品2区 | 欧美日韩免费一区二区 | 亚洲乱码av中文一区二区软件 | 狠狠插日日干 | 欧美精品一区二区三区四区在线 | 综合亚洲欧美 | 日韩欧美偷拍高跟鞋精品一区 | 国产成在线观看免费视频密 | 中文字幕在线免费观看 | 4438xx亚洲五月最大丁香 | 大香伊蕉在人线国产免费 | 亚洲v国产v| 18精品爽国产白嫩精品 | 少妇xxxxxx| 亚洲国产成人av | 国产免费一卡二卡三卡四卡 | 天堂…中文在线最新版在线 | 亚洲国产初高中生女av | 亚洲色播永久网址大全 | 成人午夜免费福利 | 亚洲成人一区 | 国内揄拍国内精品对白 | 色欲色欲久久综合网 | 农村荡女淫春在线观看bd | 爱情岛免费永久网站 | 亚洲国产精品一区二区手机 | 日射精情感性色视频 | 中文字幕国产综合 | 色播影院性播影院私人影院 | 狠狠亚洲超碰狼人久久 | 日本老妇70sex另类 | 久久久久中文伊人久久久 | 国产成人激情视频 | 天堂久久精品 | 亚洲第3页| 天天操天天摸天天干 | 欧洲熟妇色xxxx欧美老妇多毛图片 | www.620com国产精品 | 免费全部高h视频无码 | xxxxav| 久久精品国产久精国产果冻传媒 | 中文在线√天堂 | 欧美成综合 | 中文字幕精品亚洲无线码vr | 美女露出奶头扒开尿口免费网站 | 无码国内精品人妻少妇 | 好男人社区www在线观看 | 色欲av亚洲情无码av蜜桃 | 成人亚洲国产精品一区不卡 | 第一亚洲中文久久精品无码 | 人妻护士在线波多野结衣 | 久久久精品久久久久 | 在线观看色| 亚洲无人区一区二区三区 | 天天躁日日躁狠狠躁图片swag | 中文无码精品a∨在线 | 丁香婷婷综合久久来来去 | 999视频在线观看 | 主站蜘蛛池模板: 蛛词}| 97夜夜澡人人波多野结衣 | 中日韩在线观看视频 | 毛片自拍 | 这里只有精品视频在线 | 色婷婷一区二区三区免费 | 国产吞精囗交免费视频 | 好看的av在线 | 国产精品无码av片在线观看播放 | 瑜伽裤国产一区二区三区 | 又粗又硬又黄又爽的视频永久 | 国产精品国产三级国产 | 亚洲人成影院在线无码按摩店 | 欧美日韩亚洲国内综合网 | 丁香六月综合激情 | 欧美一级在线看 | 亚洲国产精品一区二区www | 久久久只有精品 | 激情啪啪网 | 日韩精品国产另类专区 | 粉嫩av久久一区二区三区 | 成人性生交大全免费中文版 | 午夜剧场免费视频 | 热热热久久久 | 精品超清无码视频在线观看 | 国产成人人人97超碰超爽8 | 国产午夜激无码av毛片 | 无码人妻精品中文字幕不卡 | 免费aa毛片 | 天堂av色| 真实国产精品视频400部 | 日韩精品久久一区二区桃色 | 国产自啪精品视频网站丝袜 | 亚洲国产精品天堂 | 91久久久色在线观看 | 日韩精品一91爱爱 | 少妇看片 | 影音先锋成人网 | 人妻av中文字幕无码专区 | 国产精品久久久久不卡无毒 | 久久亚洲国产精品 | 国产日产欧洲无码视频无遮挡 | 中文字幕欧美视频 | 国产精品综合 | 久久人人妻人人爽人人爽 | 超碰香蕉人人网99精品 | 伊人色综合网一区二区三区 | 欧美人和日本人作爰 | 夜色视频在线观看 | 亚洲一区二区久久 | 18资源在线www免费 | 久久久久久久久久久中文字幕 | 中文字幕第99页 | 国产又色又爽又黄的视频在线观看 | 91日韩| 久久不见久久见免费影院视频观看 | 日韩一品道 | 日韩成人av一区二区 | 国产一区二区在线播放视频 | 伊人色av | 主站蜘蛛池模板: 蛛词}| 亚洲成av人片久久 | 日本丶国产丶欧美色综合 | 夜夜躁人人爽天天天天大学生 | 亚洲精品乱码久久久久久app | 日韩在线中文字幕 | 99久久成人精品国产网站 | 欧美在线观看免费专区 | 看色片网站 | 日本亚洲综合 | 国产精品爽爽久久久久久蜜臀 | 日韩久久精品一区 | 少妇av中文字幕 | 日本 国产成 人 综合 亚洲 | 狠狠操亚洲 | 亚洲大尺度在线观看 | 日日噜噜噜夜夜爽爽狠狠蜜臀av | 99久久久无码国产精品动漫 | 97人人在线| 久久99久久99精品免观看粉嫩 | 国产一级爱c视频 | 亚洲黄污 | 成人精品v视频在线 | 国偷自产中文字幕亚洲手机在线 | 91久久久精品国产一区二区蜜臀 | 国模精品视频一区二区 | 尤物福利在线 | 午夜爱爱免费视频 | 亚洲一区二区三区中文字幕在线 | 九九热这里只有精品6 | 999精彩视频| 丰满放荡岳乱妇91www | 免费三级在线 | 97成人精品国语自产拍 | 国产女人高潮大叫毛片 | 日日噜夜夜爽精品一区 | 伊人久久东京av | 久久免费视频6 | 国产第一亚洲 | 少妇大叫太大太粗太爽了a片小说 | 日本91在线 | 国产剧情av麻豆香蕉精品 | 成人亚洲精品777777ww | 少妇人妻中文字幕污 | 欧美人与动人物牲交免费观看久久 | 亚洲日本影院 | 欧美激情专区 | 亚洲21p | 国产又黄又爽无遮挡不要vip | 久久不射视频 | 8x8x成人永久免费视频 | 国产成人理论在线视频观看 | 日韩黄色一级网站 | 亚洲一级天堂 | 成人网站亚洲二区乱码 | 男人扒女人添高潮视频 | 国产精品久久久久久2021 | 日本ww色| 91精品国产视频 | 日韩欧美一区在线 |