C++上位软件通过Snap7开源库访问西门子S7-200/合信M226ES数据块的方法
前言
????????上一篇文章中介绍了Snap7访问西门子S7-1200/S7-1500 DB块的方法,对于S7-200PLC是没有数据块访问的。S7-200PLC中Snap7只能通过访问MB块,VB块的方法进行和PLC之间的Snap7通信和数据交换。手头没有S7-200PLC故通过合信CTMC M226ES运动控制器进行测试,M226ES支持S7主站和从站协议。S7作为主站,S7-1200做为从站的通信也已经过测试。
M226ES简介
????????40点总线运动控制型CPU,支持16个EtherCAT总线轴,支持8/10路*200KH运控输出,24DI/16DO晶体管漏型输出,200KB+48KB+48KB程序空间/64KB数据空间,24VDC电源,2个PP和自由通讯口可切换,1个EtherNET通讯口1个EtherCAT总线通讯口(可配置成EtherNET),支持CAN、RS485和模拟量扩展板;支持Profinet智能从站;支持网口在线升级固件;支持C语言编程;支持Trace追踪功能;支持单轴运控(如定位、速度和回原等)功能;支持多轴多路直线/圆弧插补、连续插补、电子齿轮、电子凸轮和追飞剪功能;支持PLCopen标准指令库。
规格项目 | CPU M226EM | ||||||||||||||
综合特性 | |||||||||||||||
尺寸(宽×高×深) | 196×80×62 mm | ||||||||||||||
功耗 | 20W | ||||||||||||||
程序存储器 | 200KB+48KB+48KB | ||||||||||||||
数据存储器 | 64KB,永久保存 | ||||||||||||||
最大扩展模块数 | 7 | ||||||||||||||
最大数字量 | 128DI/128DO(扩展can扩展板最多640DI/640DO) | ||||||||||||||
最大模拟量 | 32AI/32AQ(扩展can扩展板最多194AI/194AQ) | ||||||||||||||
数据保存 | FlashROM(永久保存) | ||||||||||||||
电源特性 | |||||||||||||||
额定输入电压 | DC24V | ||||||||||||||
冲击电流 | 28.8VDC时12A | ||||||||||||||
隔离(现场与逻辑) | 无 | ||||||||||||||
保持时间(掉电) | 10ms以上 | ||||||||||||||
+5V电源输出 | 扩展总线 | 1A | |||||||||||||
BD扩展板总线 | 200mA(有开关控制) | ||||||||||||||
通信 | 10mA 100R电阻 | ||||||||||||||
传感器+24V电源输出 | 电压范围:20.4~28.8VDC | ||||||||||||||
额定电流:300mA | |||||||||||||||
纹波噪声:跟输入电源相关 | |||||||||||||||
隔离(传感器与逻辑):不隔离 | |||||||||||||||
电源告警 | 电源不足15V告警,报警位SM195.1 | ||||||||||||||
常规特性 | |||||||||||||||
定时器总数 | 2048 | ||||||||||||||
????? 1ms | 36 | ||||||||||||||
????? 10ms | 752 | ||||||||||||||
????? 100ms | 1260 | ||||||||||||||
计数器 | 2048个 | ||||||||||||||
累加器 | 4个 | ||||||||||||||
内存存贮器位 | 8192位 | ||||||||||||||
内存存储位掉电保持时间 | 永久保持 | ||||||||||||||
局部存储区(L) | 64字节独立 | ||||||||||||||
顺序控制继电器(S) | 8192位 | ||||||||||||||
时间中断 | 2个1ms分辨率 | ||||||||||||||
边沿中断 | 10个上升沿和/或10个下降沿(I0.0,I0.7,I1.0,I1.1) | ||||||||||||||
布尔量运算执行时间 | ≤1.5μs | ||||||||||||||
浮点运算执行时间 | ≤6.2μs | ||||||||||||||
实时时钟 | 内置 | ||||||||||||||
BD扩展板接口数 | 1个,支持RS485扩展板、CAN扩展板、模拟量扩展板 | ||||||||||||||
系统指示灯 | SF指示灯(红色) | ON:系统错误,OFF:正常 | |||||||||||||
DIAG指示灯(橙色) | ON:程序控制,OFF:正常 | ||||||||||||||
RUN指示灯(绿色) | ON:运行,OFF:停止 | ||||||||||||||
STOP指示灯(橙色) | ON:停止,OFF:运行 | ||||||||||||||
RMC指示灯(绿色) | ON:远程控制连接,OFF:远程控制断开 | ||||||||||||||
LNK/ACT指示(绿色) | ON:以太网连接,闪烁:传输,OFF:断开 | ||||||||||||||
运行开关 | RUN/STOP | ||||||||||||||
外接电池接口 | 支持,电源不足2.0V,报警位SM195.0 | ||||||||||||||
编程卡 | 支持 | ||||||||||||||
存储卡 | 支持TF卡(预留) | ||||||||||||||
高级功能 | ?持Trace追踪功能;?持C语?编程。 | ||||||||||||||
运控功能 | ?持多轴多路直线/圆弧插补、连续插补、电?凸轮和追?剪功能;?持单轴运控(如定位、速度和回原等)功能。?持PLCopen标准指令库 | ||||||||||||||
集成的通信功能(PPI/自由口) | |||||||||||||||
通讯接口 | 2个通信口: | ||||||||||||||
PORT0:PPI/自由口,标准RS485电平 | |||||||||||||||
PORT1:PPI/自由口,标准RS485电平,在侧面引出 | |||||||||||||||
插上RS485扩展板并重新启动之后,PORT0固定为PPI口不可切换,自由口FPORT0配置到RS485扩展板。 | |||||||||||||||
PPI波特率(baud) | 9.6k、19.2k和187.5k | ||||||||||||||
自由口波特率(baud) | 1.2k ~ 115.2k | ||||||||||||||
最大站点数 | 每段32个站,每个网络126个站 | ||||||||||||||
最大主站数 | 32 | ||||||||||||||
点到点(PPI主站模式) | 是(NETR/NETW),最多8个连接,每个连接最大通信200字节 | ||||||||||||||
MPI连接 | 共8个(1PG/1OP),2个保留 | ||||||||||||||
每段最大电缆长度 | |||||||||||||||
????? 使用隔离中继器 | 波特率为187.5k时1000米,38.4k时1200米 | ||||||||||||||
???? 未使用隔离中继器 | 50米 | ||||||||||||||
以太网通信功能 | |||||||||||||||
通信接口 | 2个标配以太网口 | ||||||||||||||
通信标准 | 符合IEEE802.3 | ||||||||||||||
传输速度 | 10Mbps/100Mbps自适应 | ||||||||||||||
自适应交叉连接 | 支持 | ||||||||||||||
硬件接口 | RJ45 | ||||||||||||||
协议类型 | UDP,TCP/IP | ||||||||||||||
配置方式 | 通过编程软件MagicWorks PLC下载网络块进行配置 | ||||||||||||||
应用接口 | 支持MICO服务、UDP/PPI、TCP/Modbus、Socket,S7协议 | ||||||||||||||
最大连接数 | 8个UDP/PPI不分主从 | ||||||||||||||
8个TCP/Modbus不分主从 | |||||||||||||||
4个Socket连接,UDP和TCP各2个 | |||||||||||||||
8个S7协议,不分主从站 | |||||||||||||||
EtherCAT接口最多支持16个从站连接 | |||||||||||||||
最大单次传输数据 | UDP/PPI每次操作最多200字节 | ||||||||||||||
TCP/Modbus每次操作最多240字节 | |||||||||||||||
Socket每次操作最多512字节 | |||||||||||||||
S7协议每次操作最多200字节 | |||||||||||||||
网口启动时间 | 5~10秒,受网络环境影响。 | ||||||||||||||
指示灯 | RMC | 亮起:连接远程服务器成功 | |||||||||||||
熄灭:远程未连接或远程未使能 | |||||||||||||||
LINK/ACT | 亮起:网口硬件已连接 | ||||||||||||||
闪烁:有数据交换 | |||||||||||||||
熄灭:网口硬件已断开 | |||||||||||||||
通信电缆长度 | 100M,电缆类型:CAT5e标准以上 | ||||||||||||||
隔离 | 通信口隔离 | ||||||||||||||
IP地址复位功能 | 2秒内连续拨5次运行开关 | ||||||||||||||
升级固件功能 | 使用MagicWorks PLC及MiCo,通过以太网从公司服务器远程升级固件 | ||||||||||||||
I/O特性 | |||||||||||||||
本机数字量输入点数 | 24 | ||||||||||||||
输入类型 | 漏型/源型 | ||||||||||||||
本机数字量输出点数 | 16 | ||||||||||||||
输出类型 | 漏型 | ||||||||||||||
数字I/O映象区 | 640DI/640DQ(含CAN通信专用映像区) | ||||||||||||||
模拟I/O映象区 | 194AI/194AQ(含CAN通信专用映像区) | ||||||||||||||
允许最大扩展I/O模块数 | 7 | ||||||||||||||
脉冲捕捉输入 | 不支持 | ||||||||||||||
高速计数器 | |||||||||||||||
??? 总数 | 10 | ||||||||||||||
??? 单相计数器 | 10×200KHz | ||||||||||||||
??? AB相计数器 | 10×100KHz | ||||||||||||||
集成通信功能(CANopen)-扩展CAN通信板型号CTH2-CAN-01S2-EB时使用 | |||||||||||||||
通信接口 | 1个(8 Pin端子)”见CANopen通信接口表” | ||||||||||||||
传输率(kbps) | 1000 | 800 | 500 | 250 | 150 | 50 | 20 | ||||||||
最大长度(m) | 25 | 50 | 100 | 250 | 500 | 1000 | 2500 | ||||||||
最大站地址 | 127 | ||||||||||||||
站点地址范围 | 1-127 | ||||||||||||||
最大主站带从站数 | 32 | ||||||||||||||
配置方式 | CAN组态块和EDS文件 | ||||||||||||||
最大数字量访问 | 普通IO | CANopen专用IO | |||||||||||||
字节数 | 内存起始地址 | 字节数 | 内存起始地址 | ||||||||||||
输入 | 16 | IB0 | 输入 | 64 | IB16 | ||||||||||
输出 | 16 | QB0 | 输出 | 64 | QB16 | ||||||||||
最大模拟量访问 | 普通IO | CANopen专用IO | |||||||||||||
通道数 | 内存起始地址 | 通道数 | 内存起始地址 | ||||||||||||
输入 | 32 | AIW0 | 输入 | 162 | AIW64 | ||||||||||
输出 | 32 | AQW0 | 输出 | 162 | AQW64 | ||||||||||
集成通信功能(CANFree)-扩展CAN通信板时使用 | |||||||||||||||
通信协议 | CanFree | ||||||||||||||
使用方式 | 通过内部库指令支持 | ||||||||||||||
数字量输入特性 | |||||||||||||||
本机集成数字量输入点数 | 24 | ||||||||||||||
输入类型 | 漏型/源型 | ||||||||||||||
额定电压 | 24 VDC | ||||||||||||||
输入电压范围 | 20.4~28.8 VDC | ||||||||||||||
浪涌电压 | 35 VDC,持续0.5s | ||||||||||||||
逻辑1信号(最小) | 15 VDC,2.5mA | ||||||||||||||
逻辑0信号(最大) | 5 VDC,1mA | ||||||||||||||
连接2线接近开关传感器(BERO) | 1mA | ||||||||||||||
允许的漏电流(最大) | |||||||||||||||
输入滤波 | 可配置 | ||||||||||||||
I0.0~I2.3支持以下参数: | |||||||||||||||
0.2us,0.4us,0.8us,1.6us,3.2us,6.4us,12.8us, | |||||||||||||||
0.2ms,0.4ms,0.8ms,1.6ms,3.2ms,6.4ms,12.8ms,默认为6.4ms | |||||||||||||||
I2.4~I4.3支持以下参数: | |||||||||||||||
0.2ms,0.4ms,0.8ms,1.6ms,3.2ms,6.4ms,12.8ms,默认6.4ms | |||||||||||||||
隔离(现场与逻辑) | 500 VAC,1分钟 | ||||||||||||||
隔离组 | |||||||||||||||
同时接通的输入 | 24 | ||||||||||||||
最大电缆长度 | 500米(标准输入) | ||||||||||||||
屏蔽:50米(高速计数器输入);非屏蔽:300米(标准输入) | |||||||||||||||
数字量输出特性 | |||||||||||||||
本机集成数字量输出点数 | 16 | ||||||||||||||
输出类型 | 漏型 | ||||||||||||||
输出额定电压 | DC:24V | ||||||||||||||
输出电压范围 | DC:5~30V | ||||||||||||||
每个公共端最大电流 | 6A | ||||||||||||||
输出电流(最大) | 0.5A | ||||||||||||||
漏电流(最大) | 10uA | ||||||||||||||
浪涌电流 | 8A,100ms | ||||||||||||||
灯负载 | 5W | ||||||||||||||
导通电阻 | 典型值0.15Ω,最大0.32Ω | ||||||||||||||
输出延迟(最大) | 断开到接通: | ||||||||||||||
断开到接通/接通到断开 | 0.2us(16个Q点) | ||||||||||||||
—— | |||||||||||||||
接通到断开: | |||||||||||||||
2us(16个Q点) | |||||||||||||||
—— | |||||||||||||||
高速脉冲输出 | 8(Pulse/Dir)/10(Pulse)*200KHz | ||||||||||||||
输出频率(最大) | 200KHz(Q0.0到Q1.7) | ||||||||||||||
机械寿命(无负载) | 无 | ||||||||||||||
触点寿命(额定负载) | 无 | ||||||||||||||
同时接通的输出 | 16 | ||||||||||||||
两个输出并联 | 不支持 | ||||||||||||||
最大电缆长度 | 屏蔽 | 500米 | |||||||||||||
非屏蔽 | 150米 |
MagicWorksPLC简介
????????MagicWorksPLC支持梯形图编程、STL语言编程、C语言编程。详细的资料建议大家到合信官网进行学习。
? ? ? ? 下图为?MagicWorksPLC的基本界面和功能,包括硬件组态、通信调试、向导功能等,几乎和西门子编程软件一模一样。
M226ES 运动控制功能简介
????????
????????M226ES运动控制功能非常强大,支持10轴脉冲输出、5个高速计数器、16个Ethercat从站。指令符合PLCOpen规则。并支持多种通信协议如S7、PN从站、UDP、UDP_PPI、ModbusTcp、Modbus RTU。M226es和当下最流行的汇川EASY系列PLC相比,M226ES的通信功能更为强大。基本所有功能都已经在项目中得到应用。
????????指令命名及状态机逻辑完全符合IC6613-3标准。下图为M226ES运动控制型PLC的运动控制指令列表,指令逻辑完全符合PLCopen运动控制指令标准。
????????介绍完了CPU之后就进入本文的主题,本文通过Snap7 开源库访问S7-200PLC MB存储区数据,并进行数据交互。有关snap7环境的搭建已经在上文中做了详细的介绍。感兴趣的可以到一下地址进行浏览。
https://blog.csdn.net/lzc881012/article/details/135345037?spm=1001.2014.3001.5502https://blog.csdn.net/lzc881012/article/details/135345037?spm=1001.2014.3001.5502????????将上文例程C++代买改为如下图所示,同时读取S7-1200PLC DB块和M226ES MB存储区数据。M226ES存储区数据起始地址为MB500,读取数量为100个Byte。
#include <iostream>
#include"snap7.h"
#include <ctime>
using namespace std;
unsigned char Snap7Rcv[100];
unsigned char Snap7RcvM226Es[100];
TS7Client* mClient;
void mSnap7GetDataFromS71200Db()
{
mClient = new TS7Client;
mClient->ConnectTo("192.168.2.202", 0, 1);
mClient->DBRead(9,0,100,&Snap7Rcv);
delete mClient;
}
void mSnap7GetDataFromM226EsMbBlock()
{
mClient = new TS7Client;
mClient->ConnectTo("192.168.2.201", 0,0);
mClient->MBRead(500,100, &Snap7RcvM226Es);
delete mClient;
}
void Delay(int time)
{
clock_t now = clock();
while (clock() - now < time);
}
int main()
{
while (true)
{
mSnap7GetDataFromS71200Db();
mSnap7GetDataFromM226EsMbBlock();
Delay(1000);
for (int i = 0; i < 100; i++)
{
cout << "mSnap7GetDataFromS71200Db-Snap7DB.Snap7Byte" << "[" << i << "]" << "=" << (int)Snap7Rcv[i] << endl;
cout << "mSnap7GetDataFromS71200Db-Snap7MB.MB" << "[" << 500 + i << "]" << "=" << (int)Snap7RcvM226Es[i] << endl;
}
}
}
MagicWorksplc中可以看到PLC的机架号和槽位号。如下图所示。
? ? ? ? 本例程除了上位C++软件同时读取S7-1200plc DB数据和M226ES MB存储区数据外,S7-1200还作为从站和M226ES作为主站进行通信,S7-1200作为PN主站和M226ES作为PN从站进行通信,S7-1200和M226ES之间进行UDP通信,本例程包含多种通信同时进行。具体程序如下。UDP通信S7-1200PLC侧也要编写程序。
? ? ? ? TIA硬件组态和UDP通信程序。
在状态表中监控MB500-MB599存储区的数据。如下图所示。
气动C++程序进行数据读取测试,如下图所示可看到Snap7同时读取S7-1200PLC DB块和M226ES PLC MB块数据成功。
相关链接
Snap7:
https://snap7.sourceforge.net/https://snap7.sourceforge.net/EtherCAT:
https://www.beckhoff.com/en-en/https://www.beckhoff.com/en-en/PLCOpen:
https://www.plcopen.org/https://www.plcopen.org/CanOpen:
https://www.can-cia.org/canopen/https://www.can-cia.org/canopen/Cotrust:
https://www.co-trust.com/Company/Idea/index.htmlhttps://www.co-trust.com/Company/Idea/index.htmlSiemens:
https://www.siemens.com/cn/zh.htmlhttps://www.siemens.com/cn/zh.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!