完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
西门子S7-200系列PLC是工业场合应用最广的现场控制设备之一,S7-200系列PLC支持自由端口、MPI、PPI和Moddus等通讯方式。自由端口方式需要用户自己制定通讯协议,PLC与上位机两端都需要编写相应的协议程序,实现复杂、难度较高。西门子的Step7 MicroWin编程软件使用PPI(Point to Point)协议连接PLC,利用PPI协议可以调试下载PLC程序、传输数据,但西门子并未公开PPI协议内容。Modbus是工业控制现场广泛应用的通讯协议,在嵌入式领域,嵌入式主板通常采用Modbus与PLC相连,英创嵌入式工控主板就提供了基于串口和TCP的Modbus软件包,但PLC要支持Modbus协议同样需要相应的程序编写,同时Modbus协议会占用一定的PLC中断和代码资源。 S7-200系列PLC的编程通讯接口内部固化了PPI通讯协议,如果上位机软件能利用PPI协议读写PLC,就可以省去PLC的通讯程序编写。为了方便嵌入式工控主板与PLC连接,我们分析了PPI通讯协议格式,把操作PLC的常用指令封装成了简单的API接口函数,利用这些函数可以实现设置PLC工作模式、读取PLC型号信息、读写PLC存储器等功能。 ESM6802是预装WEC7.0(或Linux)的i.MX6 双核嵌入式工控主板,板载了双网口,双CAN,7串口,4-USB PCIe x1、精简ISA等多种通讯接口,同时ESM6802提供了RGB、LVDS和HDMI三种显示接口,可以支持从320×240分辨率的低成本LCD到1920×1080的全高清显示屏。下面将以运行WEC7.0操作系统的ESM6802作为上位机,介绍WCE工控主板如何使用PPI协议连接S7-200 PLC。 1、硬件连接 S7-200系列PLC的编程通讯接口为RS485电平,安装Step7 MicroWin的PC机通过PC/PPI通讯线缆连接PLC。PC/PPI通讯线缆完成了RS232电平到RS485电平的转换,其RS232端与计算机串口相连,RS485端与PLC的编程通讯口相连。ESM6802同样使用PC/PPI线缆连接PLC,ESM6802的COM3口为RS232电平,PC/PPI线可直接插到ESM6802的COM3口上使用,ESM6802与PLC的硬件连接方法如下所示: 图1 ESM6802与S7-200 PLC的硬件连接 2、软件实现 PPI是点到点的主从协议, PLC的通讯接口缺省情况下工作在PPI从(slave)模式,以便接收来自Step7 MicroWin编程软件的数据,Step7 MicroWin自然工作在PPI主(master)模式。ESM6802在与PLC相连时,ESM6802作为上位机工作在主模式,PLC通讯接口为缺省的从模式。 下面是我们基于PPI协议封装的操作PLC的API函数,详细的函数说明可参考ppi.h头文件。 // 功能描述: 设置相应串口的通讯参数, HANDLE PPI_OpenPort(LPCTSTR lpPortName); // 功能描述: 关闭PPI使用的串口设备 BOOL PPI_ClosePort(HANDLE hPort); // 功能描述: 设置ppi通讯的超时时间,单位为毫秒。默认超时时间为ms int PPI_Settimeout(HANDLE hPort, int nMilliseconds); // 功能描述: 设置两次ppi通讯之间的间隔时间,单位为毫秒。默认时间间隔为ms int PPI_SetPollDelay(HANDLE hPort, int nMilliseconds); // 功能描述: 设置设置本机的PPI地址,默认本机地址为x00 BOOL PPI_SetLocalAddress(HANDLE hPort, UINT8 bLocalAddr); // 功能描述: 与指定的PLC握手 int PPI_FindPLC(HANDLE hPort, UINT8 bSlaveAddr); // 功能描述: 读取指定PLC的型号和保护等级 int PPI_GetPLCID(HANDLE hPort, UINT8 bSlaveAddr, UINT8 cpuId[], UINT8 *pProtectionLevel); // 功能描述: 设置PLC工作在RUN模式或STOP模式 int PPI_SetPlcMode(HANDLE hPort, UINT8 bSlaveAddr, int nMode); // 功能描述: 读PLC指定存储器数据 int PPI_Read(HANDLE hPort, UINT8 bSlaveAddr, LPCSTR lpStorageAddress, UINT8 *pNumofRead, UINT8 readData[]); // 功能描述: 写PLC指定存储器数据 int PPI_Write(HANDLE hPort, UINT8 bSlaveAddr, LPCSTR lpStorageAddress, UINT8 *pNumofWrite, UINT8 writeData[]); 下图是在WEC7工控主板ESM6802上运行的利用PPI API操作PLC的Demo程序,程序实现了搜索PLC、设置PLC工作模式、获取PLC型号信息以及读写PLC存储器等功能。 图2 在WCE上运行的操作PLC的例子程序 ESM6802具有相当丰富的通讯接口,与突出控制功能的PLC可以形成良好的功能互补,同时ESM6802对大屏显示器的支持也适合用做PLC控制系统的状态监控人机交互终端。 PPI API以lib库的形式提供,可以在英创所有WCE工控主板上运行,图2所示的Demo程序提供源代码参考,感兴趣的用户可与英创联系索要。 成都英创信息技术有限公司 http://www.emtronix.com 原文地址:http://www.emtronix.com/article/article20171044.html |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 12:25 , Processed in 0.540170 second(s), Total 44, Slave 33 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号