NX1P和西门子1500的Scoket通讯_第1页
NX1P和西门子1500的Scoket通讯_第2页
NX1P和西门子1500的Scoket通讯_第3页
NX1P和西门子1500的Scoket通讯_第4页
NX1P和西门子1500的Scoket通讯_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

NX1P和西门子1500的Scoket通讯Scoket通讯TCP/IP和UDP,此次做实验使用的是TCP/IP,NX1P做客户端,1500做服务器。二.西门子设置1.新建项目。项目-新建J!告Siemens项目炉)编辑忙〉视囹(V)插入(1}在线(切选项(用2.-、”1_2f[*打开(切…移植项目(同…关闭(口日2.-、”1_2f[*打开(切…移植项目(同…关闭(口日保存⑸员存为(丹…删踪项目吃}…归档的…恢复何…匚trl+E普卡读卡器存储器普存储卡文件(F)升级询}D:lprejectlvl3IProject1iFrojectlCtrl+SCrrkShift-i-S□:\Vt3-Pd.De£kt□卩'.CoL.J.Colo^Filling_Stati□n在弹出的创建新项目的窗口里输入项目名Ctrl+OCtrl+W屈WUUF“1500_tc丄赭豔齧1”,然后点击“创建”HP.A飞軽—HP.A飞軽—3.在项目树1500_tcp_Server下点击“添加新设备”4.输入设备名称TCP_Server并组态控制器SIMATICS7-1500下的CPU1511-1PN,选择实际使用CPU的订货号以及版本号,点击“确认”后进入设备视图。5.在工作区的设备视图下双击CPU1511-1接口可打开位于巡视窗口下的属性页,选择“常规”下方的“以太网地址”,为以太

网接口添加子网PN/IE_1设置IP地址192.168.0.1和子网掩码255.255.255.0。6.TCP通信编程(1).添加新块,类型为全局DB,创建发送数据区DB1,

并定义10个字节的数组为发送区。(数据区大小根据实际应用定义)(2).添加新块,类型为全局DB,创建接收数据区DB2,并定义

10个字节的数组为接收区。(数据区大小根据实际应用定义)。.打开0B1,将指令TSEND_C拖拽至0B1的程序段1,根据提示操作添加背景数据块“TSEND_C_DB”o鴉曜国15°抵「〜1网巧汕IFWI卜闵帕ft崛詁o鴉曜国15°抵「〜1网巧汕IFWI卜闵帕ft崛詁IQRII"'■3転|E日号亘电1却三i至曰,卜■也也1旳岂僦Iff?:■MMJ:心加•JEBRSW區“血乩刘枇工血田®・「甸如斷叱旳4帥阿凭声;t旦里空口_迢兰工[冷少I」号sec>^jj:j■迥些■■.E4eHEV!I出MH;・■■卑沖E*LWi|QI1J..^adtHII■>”・匂曲翎主件h“i:ra'mFEifi_OE・nrM)>:~Slflftff#-TUffM/*"|-去出[.IfM■•灯.在巡视窗口下选择“属性”,“组态”下的“连接参数”•伙伴选择“未指定”;•接口选择CPU实际使用的以太网接口;•连接类型选择“TCP”;•组态模式选择“使用组态的连接”;:主FM*J~*-£»片w皿*!:..-:Hiim;■■:iiti隘83曲歸殂:沁±a_的當規.连接数据选择“〈新建>”,将自动创建“TCP_连接_1“,并自动生成连接ID,此处为256;由于CPU作为TCP连接服务器端,所以在伙伴侧选择主动建立连接;伙伴地址表示允许与TCP服务器建立连接的客户端IP地址,此处未填,表示允许任,有效的IP地址。本地端口是TCP服务器端使用的端口号,此处为2000,用于侦听来自客户端的TCP连接请求;伙伴端口是客户端向服务器端发起建立连接请求时使用的端口号,此处不填表示客户端可使用任意端口;⑹.选择“属性”页下“组态”中“块参数”:

•设置“Tag_l”(%M00作为REQ触发信号,上升沿有效;•CONT=1,保持连接;•将步骤1中预定义的发送DB数组作为起始地址;•设置发送字节长度,此处为10个字节;(7).将指令TRCV拖拽至OB1的程序段2中,根据提示操作添加背景数据块“TRCV_DB”,填写TRCV参数:EN_R设置为TRUE,保持接收;ID参数为TSEND_C创建连接时系统自动生成的连接ID号(见步骤5),此处为256;LEN参数此处设置为接收10个字节。DATA参数使用步骤2中预定义的接收DB数组。下载组态到站点,在项目树中选中TCP_Server,点击工具栏中的下载图标,弹出下载对话框如图所示。下载对话框设置PG/PC接口的类型下拉框中选择PN/IEPG/PC接口下拉框中选择连接CPU的实际以太网卡接口/子网的连接下拉框选择CPU连接的子网PN/IE_1点击“开始搜索”按钮,搜索网络连接的兼容设备

在兼容设备列表中选择搜索出的设备CPU1511-1PN点击“下载”按钮,按照提示完成站点下载TCP通讯测试在PC上启动CP客户端程序,设置服务器地址为192.168.0.1,端口号为2000,建立TCP连接。在“网络视图”下的在线监视中可查看TCP连接的状态,如图4所示。选择工作区列表的“连接”页面,选择组态的连接“TCP_连接_1”,在巡视窗口中选择“诊断”页面下面的“连接信息”-〉“连接详细信息”下可查看到在线状态“已连接。”

在“连接地址详细信息”处可查看连接双方的的IP地址及端口号。TCP连接建立后可通过“Tag_l”(%M0.0)脉冲信号将发送数据区的数据发送到TCP客户端,在接收数据区可查看TCP客户端发给S7-1500的数据。三.欧姆龙设置1.新建项目IP设置,这里简单介绍下。

2.PLC通讯程序介绍1通过SktTCPConnect指令向配对节点的TCP端口发出连接请求。客户端建立连接志T1—EPEtrOrlineStsStcTCPConnExecuteSkTcpRcM:DareBj幼||rtSEtnerNttqPm口皓630C=主DstAdrE『「cr4腳西主砒口_DstTcpPartzrrcrD一Socket一岳戶區例变显名称数据类型内容-ETP-ElnlMlinrSifl在线内置EthcrNrt册端口的通信功能狀莖TRUE:可便用FAI5E:■m屮SrcTt^Port本机T(:P端口编号输入本机TCP端口编号为0时.自动分配从Well-Known端口以外的1D24开始的空闲WP端口遵从数据类型IJwiAtlr对方地址对方的IF地址或土机名称畐大200T节DslTcpFbrt対方TCP端口编号对方TCP端口编号J-65555Silf'k-Ait2通过SktClearBuf指令清除TCP套接字的接收缓存。

Socket''的数据类盘为结构体SS()(;KHTO规格如下听示。数弟娄型有蚁范圉SocketSuckrlSocket_bSOCK.FrHiinilk句柄更清除接枚缓存的的句柄LDIM遵从数抿类型Sn'Adr^j本机地鈕本机的1卩地址、端口编」sockeilADDRESSPortNcC)端口编号端口编号l:[XT1-65535lpAdr(*fir地址【P地址或主机客称°但星,采用主机宕称时.必须设走UN或UnslHcSTRING遵从数抿类型DstAdi^*)对方地址对方的IP地址、端口编_sSOCKEILADDRRSSPbrtNo(*)端口铝H端口编号L[\T1-65535IpAdH*)】p地址】P地址或主机名称:怛是.采用主机名称时.必须设定DN9或E怙叭STRING遵从数誓类型3通过SktGetTCPStatus指令读取TCP套接字的状态。SktGetTCPStaUs11/1LJJ1HC"言户站实刮一Socket&jsy一執.克吕ErrorErradD-:*吏旦■RpStazus=TCTtfcSDatRcvREg

4通过SktTCPSend指令发出发送请求。发送的数据为SendSocketDat[]的内容。指令FB/FUN图畛表现iS.kiUDPSf?tirlUDPSocket发送FBSktUDPSsnd_instancsSktUOFSendExecuteDoneSocketBusySendDalErrorSizeErrariDSktl:DPScn<ii变量名球SftA/内客有效范圉Sorlcpf输人Snrkr*t—一Sf*胡Rht[]数组发送数据岌送数话遵从数据类型:Size发送数据大小发送数蛊大小0-3XM)字节

专户般这曲岳■4^LU.SkTCPSend1111LAd*ICLAJ!忙S搭实例一socket冏幼一躲\<ySertiDatError住壬43IZ£ErroriC与前pg5通过SktTCPRcv指令发出接收请求。接收的数据保存到RcvSocketDat[]中。SktTCPRnE>scuteDcsne11a宴戸端实刺一SocketBusy—JtfcA^gTimeOutError"一敬轄52-SizeEmorDRjcvDatRcvDat-咖融疑[3]RcvSize_宴腿雋跌崖指令FBZFUN图形表现SklTClSktTCPRcvinBtanceSktTCPRcv一ExecuteDoneSklUTRcvTCPSocket接收FB一SocketBusy—TirrwOjtError一SizeEnorlDRcvDatRcvSize名称擒入/输出内客有效范■SocketSocketSocket—FlmFOnt超时时间输人0:无超时1“65333:0」rfi5535s遵从数据类臭Sizfl保存容量从接收绩仔读脱的数据大小0-2(XMJRcyDdit]数组接收数据输人输出接收.数据遵从数据类型Hf:vSize接收数据大小实际棵存到RcvD减]中的数据大小U“21IMJ6通过SktClose指令关闭套接字。注:1、NJ可作主机或客户端,作主机时对应的指令是SktTCPAccept,作客户端时对应的指令是SktTCPConnect,两指令都是建立TCP连接,其中SktTCPAccept指令只需指定端口号(主机端口即町的端口),然后等待对方客户端来连接,连接成功时该指令的输出点DONE会置ON。SktTCPConnect指令需要指定IP地址和端口号(主机的IP地址和端口以及客户端的端口,此时NJ是客户端,主机是对方设备),如果对方已开通服务器端口,连接到对方成功时该指令的输出点DONE会置ON。2、待连接成功后可以发送数据,用SktTCPSend指令进行数据发送,发送的输入参数为BYTE型的数组,只需指定其数组首地址就可以,当然首地址可以不是数组的第1个元素,比如有一BYTE型数组send[],可以从send[0]开始发送,也可以从send[2]开始发送,发送长度参数指定后,就会一次发送指定长度的BYTE数据,发送成功后该指令的DONE信号会置ON。注意:SktTCPSend指令一次可以发送的最长长度为2000个BYTE,不然指令会报错。3、接收数据前一般需要检测接收缓冲区是否有数据,如有数据才开始接收数据,检测数据有无可以用SktGetTCPStatus指令,该指令有两个输出参数检测TCP状态和数据接收状态,分别为TCPconnectionstatus和DataReceivedFlag,前者为枚举变量,根据当前TCP的状态返回不同常量(_CLOSED,_LISTEN,_SYS_SENT,_SYN_RECEIVED,_ESTABLISHED,_CLOSE_WAIT,_FIN_WAIT1,_CLOSING,_LAST_ACK,_FIN_WAIT2,or_TIME_WAIT),—般已连接上时返回.ESTABLISHED,否则返回_CLOSED。后者为BOOL型变量,有数据接收到时为TRUE,否则为FALSE。我们根据DataReceivedFlag的输出状态就可知道缓冲区内是否有数据到达。注意:SktGetTCPStatus指令是上升沿触发的,如果输入条件为常ON,则只刷新一次输出状态,可以写成不断触发该指令的方式来查询状态。查询到数据后可以用SktTCPRcv指令来接收数据到内存,类似发送数据指令,也需指定一个BYTE型的数组变量首地址作为接收首地址,然后指定接收字节数SIZE,与发送指令区别

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论