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的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