C++(QT)调用snap7库连接西门子plc

C++(QT)调用snap7库连接西门子plcC++(QT)调用snap7库连接西门子plcsnap7的dll常用函数功能介绍将文件snap7.h,snap7.cpp,snap7.dll,snap7.lib全部加入创建工程的目录下,其中将snap7.dll放入debug目录下。snap7的dll常用函数功能介绍//通过ip建立连接ConnectTo(constchar*RemAddress,intRack,intSlot…

C++(QT)调用snap7库连接西门子plc

将文件snap7.h,snap7.cpp,snap7.dll,snap7.lib全部加入创建工程的目录下,其中将snap7.dll放入debug目录下。

https://max.book118.com/html/2018/1031/7026035021001155.shtm 这个是西门子s7协议

https://download.csdn.net/download/sinat_30891009/11423606 这个是snap7下载地址
把文件导入到项目中
在这里插入图片描述
导入snap7的文件

snap7的dll常用函数功能介绍

//通过ip建立连接
ConnectTo(const char *RemAddress,intRack, int Slot);
// RemAddress PLC的IP地址,
// Rack PLC的齿数,一般为0
// Slot PLC的槽数,一般为1

//断开PC与PLC的连接
Disconnect();

下面这些写和都是一组的写入和读入
DBWrite(intDBNumber, int Start, int Size, void *pUsrData); //写V区的Byte值

MBRead(int Start, int Size, void*pUsrData); //读M区的Byte值

MBWrite(int Start, int Size, void*pUsrData); //写M区的Byte值

EBRead(int Start, int Size, void*pUsrData); //读I区的Byte值

EBWrite(int Start, int Size, void *pUsrData); //写I区的Byte值

ABRead(int Start, int Size, void*pUsrData); //读Q区的Byte值

ABWrite(int Start, int Size, void*pUsrData); //写Q区的Byte值

TMRead(int Start, int Amount,void *pUsrData); //读T区的Byte值

TMWrite(int Start, int Amount,void *pUsrData); //写T区的Byte值

CTRead(int Start, int Amount,void *pUsrData); //读C区的Byte值

CTWrite(int Start, int Amount,void *pUsrData); //写C区的Byte值

DReadW(intDBNumber, int Start, int Size, WORD *pUsrData); //读V区的Word值

DReadDW(intDBNumber, int Start, int Size, DWORD *pUsrData); //读V区的DWord值

DWriteW(intDBNumber, int Start, int Size, WORD *pUsrData); //写V区的Word值

DWriteDW(intDBNumber, int Start, int Size, DWORD *pUsrData); //读V区的DWord值
下面方法可以单点控制plc每个点是0还是1,WriteArea方法虽然第一个参数是int类型,但是如果就写82,是没用的,要写0x82,目前我就知道这三个区的,要是往其他区写值,可以用抓包软件去抓包,看下是多少
在这里插入图片描述可以用这个软件调试plc然后下个抓包软件抓包看,我用的抓包软件是smartsniff,我觉得还可以

在这里插入图片描述

这个是snap7的英文文档

在这里插入图片描述
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/34494.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注