您好、欢迎来到现金彩票网!
当前位置:9号彩票app下载 > 工作存储区 >

如何在多个西门子串口通信模块之间通过ASCII驱动协议进行轮询通

发布时间:2019-06-27 15:46 来源:未知 编辑:admin

  西门子SIMATIC S7系列串行通信模块,包括CP340、CP341、CP440-1、CP441-1/2、CPU313C/314C-2PtP以及ET200S的1SI 3964/ASCII等,都支持ASCII驱动协议的通信,可以广泛地用于与第三方支持ASCII协议的仪表、设备、系统等进行点对点连接通信,具有应用简单、灵活,使用方便等优点。

  这期栏目通过一个具体的示例,给出了在多个西门子串口通信模块(CP340/CP341)之间通过ASCII驱动协议进行轮询通信的应用。其具体的实现方法和轮询原理具有普遍的指导意义,可以作为西门子串行通信模块与支持ASCII协议的仪表、设备、系统等进行串行通信的参考。

  波特率:9600bps,8位数据位,1位停止位,无校验;

  对于从站CP341/CP340模块的参数分配与主站保持一致,特别注意波特率、数据位、停止位和奇偶校验位设置要与主站相同。

  与MODBUS协议轮询不同,由于每个从站自身不具有唯一的设备标识信息(从站地址),无法直接区分和识别网络上的数据帧是哪个站的、需要哪个站做出响应,所以要通过ASCII协议驱动实现多站点轮询,需要人为地对每个站做出标识,并在主站发送轮询指令时给出相应的指令标识,以便从站能够识别是否是发送给自己的数据以及是否做出响应。

  实现方法:定时轮询,完成后直接启动下一个作业,完成后延时启动下一个作业等实现方法;

  为了区别1#从站和2#从站,在消息帧中增加一个字的地址标识字符,主站通过发送不同地址标识字符的帧来轮询不同从站,同时从站根据地址字符来判断是否是给自己的消息,并据此做出相应的处理。从站发送给主站的响应帧也包含有自己的地址标识字符,用于主站判断是哪个从站返回的数据。字符帧格式如下:

  初始化主要针对主站而言。在初始化阶段主要完成CP模块的参数化、初始化轮询计数器,复位接收缓冲区以及根据轮询计数器生成发送数据帧等方面的工作。

  如下图所示,在系统初始化完成后,手动启动第一次轮询作业,本实例先轮询1#从站。给1#从站发送查询请求后,等待1#从站的响应,如果在指定的延时时间内接收到1#从站返回的数据,则给2#从站发送查询请求,并等待2#从站的响应,同样如果在指定的延时时间内接收到2#从站返回的数据,则一次完整的轮询结束,自动启动新一轮的轮询。

  如果在指定的延时时间内不能接收到从站的返回数据或接收错误,则跳过本站,开始轮询下一个站点。

  从站根据主站的请求做出响应,主要是在接收到网络上的数据后,判断是否是给自己的数据。如果是,则将数据接收到指定的数据区,同时启动发送功能,发送相应的返回数据给主站;如果不是,则直接删除收到的数据,并不做任何响应。

  为了实现对多个从站的轮询,程序构造了一个轮询计数器,通过修改轮询计数器的值,来修改主站发送数据帧中的站地址标识字符。

  这里定义MW2作为轮询计数器,程序开始,先对轮询计数器进行操作,默认先轮询1#从站,将值1赋值给MW2。

  在程序执行过程中,会修改轮询计数器的值,通过判断轮询计数器的值对发送数据块的地址标识符字作相应的修改,以完成对响应从站的轮询。这里具体的实现如下图,其中DB13作为发送数据块,DB13.DBW0为地址标识符字。

  初始化完成后,可以启动发送功能。这里第一次发送采用手动方式,通过触发手动启动标志位M30.1,并调用FB8 P_SND_RK发送数据到从站。完成第一次发送后,可以通过程序自动修改自动轮询标志位M30.0来实现自动发送数据到从站的功能。

  启动发送功能块FB8后,通过FB8返回状态信息,判断是否发送完成,如果发送错误,则重新启动发送功能。

  ☞发送完成:启动接收作业,准备接收从站返回数据。同时启动一个超时定时器T11,如果超时定时时间到,还没有接收到数据,则放弃等待,开始轮询下一个站。

  发送完成后,启动接收作业,准备接收从站返回数据,并将接收到的数据先放到接收缓冲区中,这里DB14数据块为接收缓冲区。

  ☞根据接收到数据的地址标识符判断是来自哪个从站的数据,并将数据从接收缓冲区转移到指定的从站数据存储区中,同时清空接收缓冲区;

  相对于主站,从站的处理程序相对简单。下面以2#从站为例做个说明,1#从站除了调用FB不同外,都与2#从站相同。

  从站一直启动接收功能FB2 P_RCV,接收来自网络上的数据,如果接收到数据则根据地址标识符判断是否是本站的数据:

  ☞是本站数据,则将接收缓冲区(DB17)中的数据移到指定的地址区(DB18)中,并清空接收缓冲区。同时,触发发送标志,发送返回数据给主站;

  搭建好网络,并将程序分别下载到各自的CPU中,启动CPU的运行。通过置位手动启动轮询标志位M30.0即可启动轮询程序的运行。通过变量表可以监视到系统的运行情况,可以看到,主站会循环地将数据发送到两个从站,同时也循环地接收来自从站的返回数据,如下图所示。

http://dralvaro.com/gongzuocunchuqu/558.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有