西门子S7 dll vb文档格式.docx

上传人:b****5 文档编号:16171244 上传时间:2022-11-21 格式:DOCX 页数:21 大小:24.66KB
下载 相关 举报
西门子S7 dll vb文档格式.docx_第1页
第1页 / 共21页
西门子S7 dll vb文档格式.docx_第2页
第2页 / 共21页
西门子S7 dll vb文档格式.docx_第3页
第3页 / 共21页
西门子S7 dll vb文档格式.docx_第4页
第4页 / 共21页
西门子S7 dll vb文档格式.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

西门子S7 dll vb文档格式.docx

《西门子S7 dll vb文档格式.docx》由会员分享,可在线阅读,更多相关《西门子S7 dll vb文档格式.docx(21页珍藏版)》请在冰豆网上搜索。

西门子S7 dll vb文档格式.docx

的响应,上位机接到此响应则发出确认申请命令,PLC则完成正确的读写响应,回应给上位机数据。

这样收发两次数据,完成一次数据的读写

(从这里可以看出PPI协议的通讯效率并不好,一次读写需收发两次数据^_^)。

其通讯数据报文格式大致有以下几类:

1)、读写申请的数据格式如下:

SD 

LE 

LER 

DA 

SA 

FC 

DASP 

SSAP 

DU 

FCS 

ED 

SD:

(Start 

Delimiter)开始定界符(68H)

LE:

(Length)报文数据长度

LER:

(Repeated 

Length)重复数据长度

SA:

(Source 

Address)源地址,指该地址;

DA:

(Destination 

Address)目标地址,指该地址;

FC:

(Function 

Code)功能码

DSAP:

Service 

Access 

Point)目的服务存取点

SSAP:

Point)源服务存取点

DU:

(Data 

Unit)数据单元

FCS:

(Frame 

Check 

Sequence)校验码

ED:

(End 

Delimiter)结束分界符(16H)

报文数据长度和重复数据长度为自DA至DU的数据长度,校验码为DA至DU数据的和校验,只取其中的末字节值。

读写一般数据的功能码为 

6CH,读CT数据、置位、复位、强制等的功能码为 

7CH,确认命令功能码5CH。

2)、PLC接收到读写命令,校验后正确,返回的数据格式为 

E5H

3)、确认读写命令的数据格式为:

其中SD为起始符,为10H

SA为数据源地址

DA为目的地址

FC为功能码,取5CH

FCS为SA+DA+FC的和的末字节

ED为结束符,取16H

4)、数据类型码

04:

05:

SM 

06:

AI 

07:

AQ 

1E:

81:

82:

83:

84:

1F:

5)、读写功能数据命令实例

1、给写VW3值1200

68 

21 

02 

00 

6C 

32 

01 

0E 

06 

05 

12 

0A 

10 

84 

18 

04 

B0 

50 

16

2、读取IB0的数据值

1B 

81 

64 

感兴趣的朋友给你根据上述例子用串口精灵测试一下,当发送命令成功PLC返回E5,你再发送10 

5C 

5E 

16,就可以完成一次读写命令。

(记得接收和发送采用16进制方式 

o(∩_∩)o...哈哈)

2.2 

S7-200PLC 

CPU内存地址范围(DLL所能寻址的范围)

被存取:

 

类型 

CPU 

221 

222 

224 

226

位(字节.位) 

V0.0-2047.7 

0.0-2047.7 

0.0-5119.7 

1.22 

1.23

0.0-8191.7 

2.00 

0.0-10239.7 

2.00

XP

I0.0-15.7 

0.0-15.7 

0.0 

-15.7 

0.0-15.7

Q0.0-15.7 

0.0-15.7 

M0.0-31.7 

0.0-31.7 

-31.7 

0.0-31.7

S0.0-31.7 

SM0.0-179.7 

0.0-299.7 

-549.7 

0.0-549.7 

字节 

VB0 

2047 

2047 

5119 

8191 

10239 

IB0 

15 

15 

15

QB0 

MB0 

31 

31 

31

SB0 

SMB0 

179 

299 

549 

549 

字 

VW 

2046 

2046 

5118 

8190 

10230 

255 

255

AIW 

30 

62 

62

AQW 

双字 

VD 

2044 

2044 

5116 

8188 

10236 

说明:

S7-200PLC的字、双字地址和字节地址实际上是重叠的,下面做个说明如:

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中字节、字与双字寻址的关系,当然如果你想使用VW1(VB1 

VB2)、VD3(VB3 

VB6)等寻址方式也是可以的,

但为了减少不必要的寻址错误造成程序的非法执行建议:

字寻址时使用(V、I、Q、M等等)0、2、4、6、8、10 

……,(这从PLC的模拟量输入/输出(AIW/AQW)的寻址就可以看出奇数地址是不允许的)

双字寻址时使用(V、I、Q、M等等)0、4、8、12、16、20、24 

…………………………,同时还要注意字节地址寻址最好也能不重叠;

C、T区当前值读取时的地址按实际地址0~255来。

三、DLL函数说明

1、打开串口

Function 

ComOpen(nport,BaudRate,DataBits,Parity,StopBits:

longint;

User:

Pchar):

stdcall;

参数:

nport:

打开串口号,取值为1~8,代表COM1~COM8;

BaudRate:

波特率,取值为:

1200、2400、4800、9600、19200、38400;

DataBits:

数据位,取值为5、6、7、8;

Parity:

校验位,取值1(代表Even)、取值2(代表Odd)、取值3(代表Mark)、取值4(代表Space)、取值5(代表None);

StopBits:

停止位,取值1(代表1位停止位)、取值2(代表2位停止位)、取值3(代表1.5位停止位);

DLL授权用户名;

返回值:

长整型,操作成功返回“1”或“2”;

1表示注册授权用户,2表示用户未注册;

操作不成功返回为“0”时的原因:

1)、串口不存在或被占用;

2)、DLL注册授权不正确。

注:

本DLL用户不注册除了下面说明的功能限制外没有其他限制,未注册用户请使用特定用户名:

wangjun。

注册用户功能上无任何限制,且将得到永久的软件使用和更新升级服务;

使用举例:

Delphi:

ComOpen(1,9600,8,1,1,Pchar('

wangjun'

)) 

 

打开COM1口。

VB:

ComOpen(1,9600,8,1,1,"

wangjun"

) 

2、关闭串口

ComClose(nport:

longint):

串口号,取值为1~8,代表COM1~COM8;

长整型,操作成功返回“1”,否则返回“0”;

ComClose

(1) 

,关闭打开的COM1口。

3、PLC内部元件读取功能函数

PLC内部元件与数字的对应关系(DLL中的所有函数都遵循此规定):

:

I

Q

M

V

S

SM

AI

AQ

C

下面的读写等PLC操作函数使用举例都是按VB调用函数形式给出。

1)、字节元件数据读取

FcnBread(nport,purpose,source,name,address,Count:

Pchar;

purpose:

目标地址,取值0~126;

source:

源地址,取值0~126;

(这里是PLC的相应端口的PPI站地址,PLC的地址实际是从2开始的)

name:

取值0(代表I)、取值1(代表Q)、取值2(代表M)、取值3(代表V)、取值4(代表S)、取值5(代表SM);

address:

元件地址,取值为请参照 

CPU内存地址范围;

Count:

读取的字节个数,最多读取128个但不能超出寻址范围;

字符串数据,字符串数据的终止符为"

@"

;

FcnBread(1,0,2,0,2,4),由COM1读取PPI 

2号站 

数据到0号站(计算机)IB2~IB5四个字节的值,如返回值为“01FF6403@”,

则表示IB2=01, 

IB3=FF,IB4=64,IB5=03;

---------- 

--

字符串返回序列:

FF 

03| 

返回值为16进制字符串,将返回值如上2位一组,可转换成“0~255”间的整数值。

在读取错误或不能读取的情况下返回“Error@”

没有注册用户不能读取S、SM区字节值,可寻址范围IB0~IB1、QB0~QB1、MB0~MB1、VB0~VB1;

2)、字元件数据读取

FcnWread(nport,purpose,source,name,address,Count:

取值3(代表V)、取值6(代表AI)、取值8(代表C)、取值9(代表T);

读取的字个数,最多读取64个但不能超出寻址范围,T区读取时不超过44个;

FcnWread(1,0,2,3,0,4),由COM1读取PPI 

数据到0号站(计算机)VW0~VW6四个字的值,如返回值为“006403E804B00010@”,

则表示VW0=0064, 

VW2=03E8,VW4=04B0,VW6=0010;

-----------------

0064 

03E8 

04B0 

0010 

返回值为16进制字符串,将返回值如上4位一组,可转换成无符号“0~65535”或有符号“-32768 

~ 

+32767”间的整数值。

如果你从PLC中读取的是有符号的数时,这个值小于等于32767,就得到你读的实际值,例如读到一个值“5EEE”转换成整数24302,

则实际值=+(24302-0)=+24302;

如果大于32767,例如我读到一个值“8FC0”先转换成整数36800,那实际值=-(36800-32768)=-4032。

没有注册用户不能读取C、T区字当前值,可寻址范围VW0~VW8、AIW0~AIW2;

3)、双字元件数据读取

FcnDWread(nport,purpose,source,name,address,Count:

取值3(代表V);

读取的双字个数,最多读取32个但不能超出寻址范围;

FcnDWread(1,0,2,3,0,2),由COM1读取PPI 

则表示VD0=006403E8,VD4=04B00010;

--------------

006403E8 

04B00010 

返回值为16进制字符串,将返回值如上8位一组,可转换成无符号“0~4294967295”或有符号“-2147483648 

+2147483647”间的整数值。

如果你从PLC中读取的是有符号的数时,这个值小于等于2147483647,就得到你读的实际值,例如读到一个值“5EEE8000”转换成整数

为1592688640,则实际值=+(1592688640-0)=+1592688640;

如果大于2147483647,例如我读到一个值“8FEFC000”先转换成整数2414854144,

那实际值=-(2414854144-2147483648)=-267370496。

没有注册用户可寻址范围VD0~VD4;

4)、位元件的状态读取

FcnBitread(nport,purpose,source,name,address,Bit:

Bit:

读取的字节元件的位地址如I1.0指I1字节元件的第0位;

长整数,返回为0表示状态为OFF,返回为1表示状态为ON,返回为-1表示读取错误或不能读取;

FcnBitread(1,0,2,0,1,7),由COM1读取PPI 

数据到0号站(计算机)I1.7,如返回值为1,则表示I1.7=1;

没有注册用户不可以读取S、SM区状态,可寻址范围I0.0~I1.7、Q0.0~Q1.7、M0.0~M1.7、V0.0~V1.7;

4、PLC内部元件写数据功能函数

1)、字节元件数据写入

FcnBwrite(nport,purpose,source,name,address,Count:

Sendstr:

取值0(代表I)、取值1(代表Q)、取值2(代表M)、取值3(代表V)、取值4(代表S);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1