目录
目录
前言
本节主要介绍下如何搭建PLC模拟器(本质上就是可以发送TCP\IP)消息,用于跟MFS进行交互。从描述上大家应该能看出本节对大家的技术是有要求的,首先要要大概明白TCP\IP的技术原理(握手机制),其次是大家对自动仓需要有一定的背景知识,知道一些常用的IoT设备,比如输送机,堆垛机等。
这个PLC模拟器是国外的一个大牛开发的,是开源的,其也有对应的博客进行说明(地址:How to setup and run PLC emulator for SAP EWM MFS | SAP Blogs),写这篇文章的目的是因为在搭建的过程中遇到很多问题(本人不是一个技术控),所以过程中遇到的问题记录下。
软件下载
下载SAP Java Connector
下载地址如下:
Download SAP Java Connector 3.1 SDK
因为我这边的环境是Win 64位的系统,所以下载如下:
下载好之后备用。
下载Download Apache Log
下载地址如下:
下载如下图所示:
下载PLC模拟器源码
下载地址如下:
这个是GitHub上的源码,所以没有账号的话需要先注册一个账号。
以上文件下载之后, 保存在本地,待后续使用。
PLC模拟器安装
系统环境
首先需要保障SAP服务器能够访问本地机器(即你部署PLC的机器),我使用的方式是使用事务代码OS01(因为没有直接登录到EWM服务器的权限),然后对目标地址做一次ping,如下所示:
点击指定IP地址,然后输入对应的IP(部署PLC机器的地址)
如下图所示,说明从EWM服务器到PLC的服务器是通的
我这边使用的EWM服务器是部署在外网上的,PLC的服务器是阿里云(免费体验的版本),整体服务器通信时OK的。
JAVA环境安装
因为这个PLC是java开发的,运行需要在本地有java环境,java环境的安装参考另一篇文章,JAVA安装教程。
SAP Java Connector安装
安装Visual C++环境
1、解压打开下载的SAP Java Connector,如下所示:
2、继续打开下下一级目录 ,如下所示:
3、双击打开intro.html页面,然后在显示的界面里面点击 “Installation”页签。然后点击Visual C++下载安装。
4、在打开的页面中,选择中文简体版本下载,然后进行安装,如下所示:
安装的直接点击Next即可,直到安装完成,这里就不截图了。
安装sap java connect
1、将文件夹“sapjco3-ntamd64-3.1.7”拷贝到C:\Program Files\sapjco3-ntamd64-3.1.7目录下,如下所示:
2、设置环境变量Path(具体设置方式可以参考java环境安装那部分),如下所示:
以上就成功安装好了sap java connect。
PLC安装
1、在主盘下,我这边直接用的是C盘,在下面创建一个文件夹MFS,如下所示:
2、将下载的plc代码解压之后,将文件夹mfs-plc-sim-master下所有的文件拷贝到MFS这个文件夹下,如下所示:
3、从下载的 Apache Log的文件解压之后,将其中的文件“log4j2.xml”,“log4j-api-2.20.0.jar”和“log4j-core-2.20.0.jar”拷贝到文件夹MFS下,如下所示:
4、将下载的sap java connect中的文件“sapjco3.jar”拷贝到MFS文件夹下,如下所示:
文件都准备好了,接下来就是修改连接地址
5、复制文件sampleSID.jcoDestination,重新命名为“S4H.jcoDestination”,如下所示:
注意这个S4H指的是系统标识,如下所示:
修改文件S4H.jcoDestination里面的内容,如下所示:
jco.client.user=SAP登录的用户名
jco.client.passwd=登录密码
jco.client.lang=en
jco.client.client=对应的client
jco.client.ashost=EWM登录的服务器地址
jco.client.sysnr=实例编号
jco.client.r3name=系统标识
jco.destination.pool_capacity=3
6、复制文件“samplePROGID.jcoServer”,新命名为“MFSPLC.jcoServer”,如下所示:
修改其内容,如下所示:
#EWM服务器地址
jco.server.gwhost=
#端口号,这个要看实列编号,比如是00,则端口号是sapgw00
jco.server.gwserv=sapgw80
#注册的程序,连接的时候要使用到
jco.server.progid=MFSPLC
jco.server.connection_count=1#系统标识
jco.server.repository_destination=S4H
7、修改文件“MFS.properties”的内容如下所示:
# Java Connector settings
jcoDestination=S4H
jcoServer=MFSPLC# Telegram structures
telegramStructureHeader=ZMFS_S_MFS_TELETOTAL
telegramStructure.LIFE=ZMFS_S_MFS_TELETOTAL
#telegramStructure.SYES=ZMFS_TELETOTAL
#telegramStructure.SYBE=ZMFS_TELETOTAL
#telegramStructure.SYEN=ZMFS_TELETOTAL
#telegramStructure.WT=ZMFS_TELETOTAL
telegramStructure=ZMFS_S_MFS_TELETOTAL
#telegramStructure=/SCWM/S_MFS_TELECORE
telegramStructure.WTCC=ZMFS_S_MFS_TELETOTAL
telegramStructure.WTCO=ZMFS_S_MFS_TELETOTAL
telegramStructure.IP=ZMFS_S_MFS_TELETOTAL# Handshake settings
handshakeRequest=R
handshakeConfirmation=A
switchSenderReceiver=false# Telegram types; only LIFE type is used for now
telegramType.LIFE=LIFE# Telegram styling
!default for all handshake requests if telegram type not specified directly
style.*-R=0,0,0,B
! default for all handshake acknowledgments if telegram type not specified directly
style.*-A=0,0,0,I
! style for LIFE, handshake request
style.LIFE-R=255,0,0,B
! style for LIFE, handshake acknowledgment
style.LIFE-A=255,0,0,I
! styles for channel synchronization telegrams
style.SYES-R=255,153,0,B
style.SYES-A=255,153,0,I
style.SYBE-R=255,153,0,B
style.SYBE-A=255,153,0,I
style.SYEN-R=0,153,51,B
style.SYEN-A=0,153,51,I
# Type A communication channel - not used for now
sendingFM=
startingFM=
stoppingFM=
statusFM=
ZMFS_S_MFS_TELETOTAL这个结构是在EWM MFS里面定义的结构,具体可以参考配置章节(地址:EWM MFS配置(AS/RS入库流程)_弈宸咨询的博客-CSDN博客),消息类型这里面配置的主要是在演示章节使用到的,需要增加的话,在这里面增加就可以了。
前面加#的意思是注释,意思是此行数据不起作用。
EWM端设置
EWM端需要提前设置一些事项,否则连接会有问题。
1、允许外部系统建立连接,大部分SAP系统设置不允许外部系统随便建立与SAP的TCP/IP连接,所以需要设置允许连接。
使用事务代码SMGW - 网关监控器,在菜单栏中点击转到->专家功能->外部安全性->维护访问控制列表文件,如下图所示,是系统里面维护的(可参考):
2、SM59创建连接,如下所示:
3、需要完成EWM MFS的目标PLC地址,这个在配置章节有讲解,如下图所示:
事务代码:/SCWM/MFS_PLC - 维护可编程逻辑控制器 。
这里面的RFC目标系统就是上述创建的SM59连接。
事务代码:/SCWM/MFS_CCH - 维护通讯渠道
主机和端口就是部署的PLC的主机地址和对应的端口号。
运行
建立连接
以上软件安装以及具体的配置都已经完成了,接下来我们开始测试运行,看下效果。
1、cmd进入到MFS文件夹下
快捷键Win+R,打开命令窗口,然后再输入cmd,打开cmd命令窗口,如下所示:
然后在cmd命令窗口中进入到C盘中的MFS文件夹下,如下所示
cd c:\mfs
然后执行命令,建立与SAP的连接,如下所示
java -Dlog4j.configurationFile=log4j2.xml -cp sapjco3.jar;log4j-api-2.20.0.jar;log4j-core-2.20.0.jar;mfsplc.jar pl.sapusers.mfsplc.bridge.Bridge MFSPLC MFS.properties
如果出现下面的截图,说明应该是成功的:
然后我们可以去EWM检查下,连接是否注册成功,使用事务代码 SMGW - 网关监控器 ,然后点击菜单,转到->已登录客户端。如下所示:
如果显示下面两行,则说明连接建立成功:
PS:得注意的是执行命令的时候有可能会报错,如果发生了发错需要详细的在命令行界面看报错信息,一般都会有比较明确的提示。
启动PLC
1、cmd进入到MFS文件夹下
快捷键Win+R,打开命令窗口,然后再输入cmd,打开cmd命令窗口,如下所示:
然后在cmd命令窗口中进入到C盘中的MFS文件夹下,如下所示
cd c:\mfs
然后执行命令,建立与SAP的连接,如下所示
以同样的方式在cmd的命令行界面中执行命令,如下:
java -Dlog4j.configurationFile=log4j2.xml -cp sapjco3.jar;log4j-api-2.20.0.jar;log4j-core-2.20.0.jar;mfsplc.jar pl.sapusers.mfsplc.sim.Sim S4H MFS.properties
执行完之后,会出现界面,如下所示:
我们输入一个端口号(这个端口号是上面EWM端配置的PLC对应的端口号,如7001),然后点击Start,这时候是黄色的,说明与EWM还没有建立TCP/IP连接,如下图所示:
回到EWM,在Monitor(事务代码/SCWM/MON)里面启动PLC,如下所示:
选择“开始通道”,注意要选择端口是是7001的,因为PLC端我们暂时只启动了端口7001,启动之后,看下状态变化,在EWM端可以看到,选择的PLC的状态变成非停止状态了,如下所示:
然后我们再回到PLC端看,演示已经变成绿色的了,说明双方已经建立了连接。
然后我们再选择”LIFE“,可以监控LIFE的消息(心跳消息),如下所示:
总结
到这里,已经成功建立了EWM MFS和PLC的连接,双方可互通消息,接下来就可以模拟实际的业务,然后再看消息的传递和接收。
需要注意的是:
1、搭建PLC模拟器的时候需要先完成EWM端的配置(参考本栏中的配置章节的文章);
2、在测试实际业务场景的时候,可能要启动多个PLC,比如堆垛机的,端口是7002,按照上述启动PLC的步骤即可;
3、需要保障EWM服务器和PLC服务器之间是可以通信的,这个是基础,否则后面会遇到各种问题。