没有合适的资源?快使用搜索试试~ 我知道了~
S7Comm使用文档修订版3-2.pdf
需积分: 1 11 下载量 126 浏览量
2022-04-06
10:41:22
上传
评论 1
收藏 455KB PDF 举报
温馨提示
试读
17页
Siemens S7 Protocol Communication Library
资源推荐
资源详情
资源评论
1
S7Comm 通信库是 C#封装的以太网连接西门子 S7-200,S7-200SMART,S7-
300,S7-400,S7-1200,S7-1500 PLC 以及 LOGO!0BA7/0BA8 / 8.FS4 的
驱动程序
(NuGet程序包 --> S7Comm) S7Comm通信库提供4个重载连接方法,LOGO!
0BA7/0BA8/8.FS4/CP243-1以太网模块使用S7Comm.Tsap()参数重载的方法,透
传方式连接请使用端口号参数的重载方法;
TSAP是"Transport Services Access Point "传输服务访问点它是传输层与会
话层之间的访问接口,每一个TSAP可以唯一标识一个访问实例;
TSAP:01->PG;02->OP;03至0x10->S7Basic
一对传输服务访问点(S7-200SMART/S7-300/S7-400/S7-1200/S7-1500缺省值本
地传输服务访问点高字节localTsapHi =0x01,本地传输服务访问点低字节
localTsapLo=0x00,远程传输服务访问点高字节RemoteTsapHi=0x03,远程传输
服务访问点低字节RemoteTsapLo=0x20 * rack + slot,S7-200SMART/S7-
1200/S7-1500缺省值rack = 0,slot = 1,S7-300/S7-400缺省值rack = 0,
slot = 2 或见硬件组态;LOGO!0BA7/0BA8/8.FS4或CP243-1以太网模块见硬件
组态)
Rack和Slot不同类型的PLC其Rack和Slot的定义不同,详见下面的列表:
PLC类型
Rack
Slot
备注
S7-300
0
2
S7-400
不确定
不确定
见硬件组态
S7-1200/1500
0
1
0或1
S7-200SMART
0
1
S7-1200/1500系列PLC采用扩展的S7协议
CPU的访问级别必须为"完全访问权限",CPU的"连接机制"中要勾选"允许来自远
程对象的PUT/GET通信访问",对数据块的访问仅限于全局数据块(Global DB),
并且需要取消勾选"优化的块访问
1 连接
siemensS7.Connect("192.168.100.60", 0, 1);
siemensS7.Connect("192.168.100.60", new S7Comm.TsapPair(new
S7Comm.Tsap(0x01, 0x00), new S7Comm.Tsap(0x03, 0x01)));
2 读变量操作 ReadVar
1:读取DB2 8开始的2个字节(DB2.DBW8)(该方法已做分包处理读取字节数
不受PDU-18字节的限制 S7协议单次报文读取最大PDU-18
byte[] result= siemensS7.ReadVar(S7Comm.MemoryArea.DataBlock,2, 8,
2
2);
2:读取DB2.DBB1228开始的1024个字节
byte[] result =siemensS7.ReadVar(S7Comm.MemoryArea.DataBlock, 2,
1228, 1024);//字节1228开始的第0个位
byte[] result = siemensS7.ReadVar(S7Comm.MemoryArea.DataBlock, 2,
0, 1024,9824);//字节0开始的第9824个位
byte[] result = siemensS7.ReadVar(S7Comm.MemoryArea.DataBlock, 2,
106, 1024,8976);//字节106开始的8976个位
3:读取DB2.DBW1100开始连续的3个int(C# Short)类型的数据//该方法已做
分包处理
var result = siemensS7.ReadVar(S7Comm.MemoryArea.DataBlock, 2,
1100, 3, S7Comm.DataType.Int, 0);//字节1100开始第0个位
var result = siemensS7.ReadVar(S7Comm.MemoryArea.DataBlock, 2, 0,
3, S7Comm.DataType.Int, 8800);// 字节0开始第8800个位
var result = siemensS7.ReadVar(S7Comm.MemoryArea.DataBlock, 2, 30,
3, S7Comm.DataType.Int, 8560);// 字节30开始第8560个位
4:读取DB2.DBX96.2开始的连续的5个位//该方法已做分包处理
var result = siemensS7.ReadVar(S7Comm.MemoryArea.DataBlock, 2, 96, 5,
S7Comm.DataType. Bool,2);//字节96开始的第0个位
var result = siemensS7.ReadVar(S7Comm.MemoryArea.DataBlock, 2, 0, 5,
S7Comm.DataType. Bool,770);//字节0开始的第770个位
var result = siemensS7.ReadVar(S7Comm.MemoryArea.DataBlock, 2, 24, 5,
S7Comm.DataType. Bool, 578);//字节24开始的第578个位
5:读取DB2.DBB108开始连续4个字符串//该方法已做分包处理
var result = siemensS7.ReadVar(S7Comm.MemoryArea.DataBlock, 2, 108,
4, S7Comm. DataType.String, 0);
6:读取DB2.DBD10 32位浮点数
var result = siemensS7.ReadVar(S7Comm.MemoryArea.DataBlock, 2, 10,
1, S7Comm. DataType. Real, 0);
7:读取MW100 VB0的值(字符串地址可以忽略大小写)
var result = siemensS7.ReadVar("mw100", S7Comm. DataType. Int);
var result = siemensS7.ReadVar(S7Comm.MemoryArea.Marker, 0, 100, 1,
S7Comm. DataType. Int, 0);
var result = siemensS7.ReadVar("VB0", S7Comm. DataType. Usint);
8:读取DB2.DBBD20 32位有符号整数
var result = siemensS7.ReadVar("DB2.DBD20",S7Comm.DataType.Dint);
9:读取DB2.DBX96.2 DB2.DBX96.3 DB2.DBX96.4
var result =siemensS7.ReadVar(S7Comm.MemoryArea.DataBlock, 2, 96, 3,
S7Comm. DataType.Bool,2);
10: DB2.DBB2672 连续3个字符 、DB2.DBW2676 宽字符
var result = siemensS7.ReadVar(S7Comm.MemoryArea.DataBlock, 2,
2672, 3, S7Comm.DataType.Char);
3
if (result!= null)
{ string result0 = new string((char[])result, 0, 1);
string result1 = new string((char[])result, 1, 1);
string result2 = new string((char[])result, 2, 1);
}
var result = siemensS7.ReadVar(S7Comm.MemoryArea.DataBlock, 2, 2676,
1, S7Comm. DataType.Wchar);
var result = siemensS7.ReadVar("DB2.DBW2676", S7Comm.DataType.Wchar);
11: 读取P#DB2.DBX2300.0 64位Lint的值
var result = siemensS7.ReadVar("P#DB2.DBX2300.0",
S7Comm.DataType.Lint);
12:读取P#DB2.DBX2308.0 64位Lint的值
var result = siemensS7.ReadVar(S7Comm.MemoryArea.DataBlock, 2, 2308,
1, S7Comm.DataType.Lint, 0);
13:多ITEM读取(多个存储区多个变量值)
List<S7Comm.SiemensItemVar> siemensItemVar = new
List<S7Comm.SiemensItemVar>
{
new S7Comm.SiemensItemVar("DB2.DBX96.0",S7Comm.
DataType.Bool),
new S7Comm.SiemensItemVar("DB2.DBX96.1",S7Comm.
DataType.Bool),
new S7Comm.SiemensItemVar("DB2.DBX96.2",S7Comm.
DataType.Bool),
new S7Comm.SiemensItemVar("DB2.DBX96.5",S7Comm.
DataType.Bool),
new S7Comm.SiemensItemVar("DB2.DBB40", S7Comm.
DataType.Usint),
new
S7Comm.SiemensItemVar("DB2.DBD0",S7Comm.VarType.Real),
new S7Comm.SiemensItemVar("DB2.DBW6",S7Comm.
DataType.Int),
new S7Comm.SiemensItemVar("DB2.DBB1098", S7Comm.
DataType.Usint),
new S7Comm.SiemensItemVar("DB2.DBW1100", S7Comm.
DataType.Int),
new
S7Comm.SiemensItemVar("P#DB2.DBX108.0",S7Comm.DataType.String),
new
S7Comm.SiemensItemVar("P#DB2.DBX172.0",S7Comm.DataType.String),
new
S7Comm.SiemensItemVar("P#DB2.DBX236.0",S7Comm.DataType.Wstring),
new
S7Comm.SiemensItemVar("P#DB2.DBX318.0",S7Comm.DataType.Wstring),
剩余16页未读,继续阅读
资源评论
qq_56858633
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功