如何使用电脑虚拟西门子S7系列PLC

作者:追风筝的人 | 创建时间: 2023-07-13
最近做几个项目,负责工控的单位使用的下位机都是采用西门子S7系列PLC,如S7-200,S7-1200,S71215等,而与上位机通信采用S7协议。也是翻了好多网页,才锁定了Snap7 这个开源library进行通信。 看示例代码也是简单,...
如何使用电脑虚拟西门子S7系列PLC

操作方法

snap源码工程目录中examples\cpp目录下有个snap7.cpp,snap7.h还有一个server.cpp,把这3个文件copy出来,加入到工程目录中,并配置snap7.lib所在路径,将snap7.lib 加入到编译选项中,修改server.cpp文件(原来的server.cpp文件内容较多,我写了一个最单程序,代码少,功能丰富,可以按照图片录入)。

38行前的代码用于定义读写事件,之后的代码是主程序,注册内部数据寄存器,我在主程序中将数据区初始化了一下,随便写了值,便于读写验证。

编译运行success,但是程序启动后却出现客户端无法连接的问题,我的上位机连接真机是没有问题的,那问题可定就在刚写的程序中。后来检查注释才发现,本机上可能有程序或服务占用了本机的102端口,原来有同事在本机安装了西门子的一些应用软件(如step7)。于是使用如下命令,停止此类的应用  net stop s7oiehsx   (Win32) net stop s7oiehsx64  (Win64)

再次运行刚编译的server程序,运行上位机程序连接此虚拟PLC,发现程序ok了,读写手法,这个虚拟PLC都会有回应了。这次没有真实的PLC,我也可以进行模拟验证我的上位机程序了。

运行测试后,如需要启动原先关闭的服务,可以使用如下命令: net start s7oiehsx   (Win32) net start s7oiehsx64  (Win64)

温馨提示

102端口可能由其他程序占用,可以把不用的程序都先关闭
点击展开全文

更多推荐