C#直接与S7-200Smart、S7-300/400、S7-1200/1500以太网、PPI、MPI通讯
1.0 通讯组件概述
该类通讯组件适用于基于PC高级语言的工业自动化控制系统,用于PC与可编程控制器(PLC)、智能仪表等进行数据通讯。组件采用动态链接库文件(*.DLL)的形式,在PC系统的项目工程里引用该组件,调用相应的属性与方法函数,即可快速实现PC与PLC的数据高效交换。
DLL通讯组件无须安装,直接复制到工程文件目录,方便打包安装部署;无须任何配置,直接调用函数,与应用开发无缝衔接;多年工程经验的软件团队开发测试,经过本公司及客户的海量实际应用检验,稳定可靠;采用稳定高效的内部协议,无须编写PLC内部程序配合,直接访问PLC的内存,通讯响应快速;内建动态管理的多独立线程连接,同时支持外部应用的多线程结构调用;兼容WINDOWS系统下的所有开发环境,包括各种版本的VB.NET、C#、VC ,以及DEIPHI 、VB、LabView等;支持几乎所有PLC的CPU自带通讯口、通讯扩展模块。
2.0 通讯组件名称
2.1 以太网(S7协议)
S7-300/S7-400: WinTcpS7.DLL 下载
S7-1200/S7-1500: WinTcpS7_1K.DLL 下载
S7-200 Smart: WinTcpS7_Smart.DLL 下载
S7-200 CP243: WinTcpS7_CP2.DLL 下载
2.2 串口(PPI、MPI协议)
S7-300/S7-400: WinS7_MPI.DLL
S7-200/S7-200 Smart: WinS7_PPI.DLL
2.3 DTU模块(网路透传PPI、MPI协议)
S7-300/S7-400: TransS7_MPI.DLL
S7-200/S7-200 Smart: TransS7_PPI.DLL
3.0 数据类型
通讯组件能对PLC的输入、输出端口,以及内部中间继电器存储区域、内部数据存储区域,以及扩展存储区域进行读写操作,支持以下数据类型:
INT16: 16位有符号整数;
UINT16: 16位无符号整数;
DINT32: 32位有符号整数;
HEX32: 32位16进制字符;
REAL32: 32位单精度浮点数据;
BIN16: 16位二进制字符串;
4.0 函数与参数
4.1 函数参数
[DataConvert] 数据类型转换函数;
参数:SourType,DataType, 数据类型枚举,见5.2详细说明
SourData , Object,需要转换的源数据
DestType , DataType, 数据类型枚举,见5.2详细说明
DestData ,Object,转换后的目标数据(传地址参数)
返回值: Int16,函数执行结果,见5.3详细说明。
[EntLink] 设置PC、PLC的通讯参数,建立与PLC的以太网联接;
参数:pcIP,String,PC端的IP地址
pcPort , Uint16, PC端的网络端口
plcIP , String ,PLC的IP地址
plcPort ,Uint16, PLC的通讯端口
Rack ,Uint16, PLC的机架号码(除西门子外,其它品牌为0)
Slot ,Uint16, PLC的CPU的插槽号码(除西门子外,其它品牌为0)
Handle, Integer ,返回网络句柄,多PLC网络时通过该句柄操作不同的PLC
SN , String,调用系列号码,与DLL成对使用,可联系本公司获取
返回值: Int16,函数执行结果,见5.3详细说明。
[ComLink] 设置PC、PLC的通讯参数,建立与PLC的串口联接;
参数:CommPort,Uint16,联接PLC的PC通讯端口
CommRate,Int32,与PLC通讯的速率
DataBit, Uint16, 通讯数据位数
StopBit,Uint16, 数据的停止位数
Parity,PrtType, 数据校验方式
Station, Uint16, PLC的站号码
OverTime,Uint16, 通讯超时时间限制,毫秒单位
SN , String,调用系列号码,通过联系本公司获取
返回值: Int16,函数执行结果,见5.3详细说明。
[DeLink] 断开与PLC的连接;
参数:Handle, Integer , 网络句柄,多PLC网络时通过该句柄操作对应的PLC
返回值: Int16,函数执行结果,见5.3详细说明
[CmdRead] 读取多个PLC内存数据;
参数:Handle, Integer , 网络句柄,多PLC网络时通过该句柄操作对应的PLC
Memory , PlcMemory, PLC数据区域枚举,见5.2详细说明
ValType, DataType, 数据类型枚举,见5.2详细说明
Block ,Uint16, DB块的号码,非DB数据为0
Address ,Uint16, 要操作的字的起始地址
Count ,Uint16, 要操作的字的个数
ReData() , Object,读取到的数据(传址参数)
返回值: Int16,函数执行结果,见5.3详细说明
[CmdWrite] 批量写入数据到PLC内存;
参数:Handle, Integer , 网络句柄,多PLC网络时通过该句柄操作对应的PLC
Memory , PlcMemory, PLC数据区域枚举,见5.2详细说明
ValType, DataType, 数据类型枚举,见5.2详细说明
Block ,Uint16, DB块的号码,非DB数据为0
Address ,Uint16, 要操作的字的起始地址
Count ,Uint16, 要操作的字的个数
Data() , Object,要写入PLC的数据(传址参数)
返回值: Int16,函数执行结果,见5.3详细说明
[Bit_Test] 以Bit(位)的方式读取其状态;
参数:Handle, Integer , 网络句柄,多PLC网络时通过该句柄操作对应的PLC
Memory , PlcMemory, PLC数据区域枚举,见5.2详细说明
Block ,Uint16, DB块的号码,非DB数据为0
Address ,Uint16, 要操作的位所在的字地址
Bit,Uint16, 要操作的位在字地址内的位号码
State , Boolean,读取到的位的状态(传址参数)
返回值: Int16,函数执行结果,见5.3详细说明
[Bit_Set] 以Bit(位)的方式设置其状态为ON;
参数:Handle, Integer ,网络句柄,多PLC网络时通过该句柄操作对应的PLC
Memory , PlcMemory, PLC数据区域枚举,见5.2详细说明
Block ,Uint16, DB块的号码,非DB数据为0
Address ,Uint16, 要操作的位所在的字地址
Bit,Uint16, 要操作的位在字地址内的位号码
返回值: Int16,函数执行结果,见5.3详细说明
[Bit_Reset] 以Bit(位)的方式复位其状态为OFF;
参数:Handle, Integer ,连接句柄,多PLC网络时通过该句柄操作对应的PLC
Memory , PlcMemory, PLC数据区域枚举,见5.2详细说明
Block ,Uint16, DB块的号码,非DB数据为0
Address ,Uint16, 要操作的位在字地址内的位号码
Bit,Uint16, 要操作的位号码
返回值: Int16,函数执行结果,见5.3详细说明
4.2 枚举结构体参数说明:
--PlcMemory 要操作的PLC的内存区域类型:
DI: 输入端口;
DQ: 输出端口;
MR: 内部中间继电器M区域;
DR: VR、DB块数据区域
--PrtType 串口通讯的校验方式
None:无校验
Odd:奇校验
Even:偶检验
Mark:特殊校验
4.3 返回值说明:
0 执行成功;
-1 IP地址或端口参数错误;
-2 网络连接错误;
-3 连接参数错误(机架:<7 ,插槽:<15);
-4 PLC握手连接异常;
-5 PLC握手无响应;
-6 PLC握手响应错误;
-10 读数据超过最大数据量限制;
-11 读数据时数据发送异常;
-12 读数据时PLC响应超时;
-13 读数据PLC返回格式错误;
-14 读数据PLC返回数据错误;
-20 写数据超过最大数据量限制;
-21 写数据时数据发送异常;
-22 写数据PLC响应超时;
-23 写数据PLC返回格式错误;
-24 写数据PLC返回数据错误;
-31 数据转换时源数据处理错误;
-32 数据转换时目标数据处理错误;
-70 PLC内存区域的功能受限制;
-80 PC系统中无网卡;
-81 PC的IP地址格式错误;
-82 PLC的IP地址格式错误;
-83 PING命令返回错误;
-99 连接序列号错误或测试次数超过试用限制;
5.0 组件使用步骤
5.1 基本步骤
a. 复制组件文件到需要用到该组件的工程项目目录下;
b.注册组件及其相关资源(DotNet框架的组件无须此步骤);
c. 在项目编程软件里面引用该组件,不同的编程语言引用方式有区别,具体参见所用语言的MSDN帮助文档;
d. 参照例程定义、实例化通讯组件,编写相关通讯代码;
5.2 组件注册方法
VS6.0平台开发的组件须要在系统注册才能正常使用,注册的方法主要有两种:
a. 代码注册:用Windows提供的Shell命令,Shell “regsvr32 \s ” 组件的完整路径及文件名称;
b. 手动注册:同时按下 “Win”键 “R”建,在弹出的运行对话框中输入 “Regsvr32 ” 空格 组件的完整路径及文件名称,然后点“确认”按钮Windows 7 及以上的系统下注册,建议对用户账户作以下设置:控制面板->用户账号和家庭安全->用户账户->更改用户账户控制设置,把滑竿拖到最下面,即“从不通知”。
Windows 7 64位注册方法:
a. 在C:\Windows\SysWOW64\下新建目录(如:regdll),复制需要注册的dll到这个目录下(以abc.dll为例);
b. 点击开始,在“搜索程序和文件”里键入cmd,然后在搜索出来的cmd菜单上右键,以管理员的权限运行;
c. 此时cmd提示符为c:\Windows\System32,键入cd \windows\syswow64,改变提示符为c:\windows\syswow64;
d. 在cmd里键入regsvr32 abc.dll,回车,然后提示注册成功(注意此时使用的是syswow64目录下的regsvr32.exe,而不是system32下的regsvr32.exe)。