0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

jqmJ_Raul_Woo 来源:未知 作者:佚名 2017-11-27 06:55 次阅读

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

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

1. 系统组成

如下图所示,系统包括3个SIMATIC S7-300站,其中一个作为串行通信的主站,通过ASCII驱动协议轮询采集另外两个从站的数据。系统主站和1#从站各配置了一个串行通信模块CP341(6ES7341-1CH01-0AE0)(RS422/485接口),2#从站配置了一个串行通信模块CP340(6ES7340-1AH02-0AE0)(RS232C接口),为了将它们连接到一个网络中,在本例中选择了西门子的PC/PPI电缆(6ES7901-3CB30-0XA0)将2#从站的RS232C接口转换为RS485接口连接到网络中。

2.电缆和硬件连接

详细的硬件连接如图

3.组态主站

ØCP341模块起始地址256ASCII协议模式;

Ø消息帧结束标准:字符延迟时间4ms

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

Ø接口类型:RS485半双工;

Ø其他采用默认值。

4. 组态从站

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

5. 轮询原理

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

在ASCII协议驱动实现多站点轮询的过程中,应主要考虑以下几个方面:

Ø基本模式:主站主动请求,从站根据请求作出响应;

Ø数据帧:在发送或响应数据帧中要包含有站点标识的信息;

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

Ø校验、错误处理机制:CRC、等待、丢弃、重试等。

6. 轮询机制

①数据帧格式

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

②时序图

③流程图

☞初始化流程

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

主站轮询流程

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

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

从站响应流程

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

7. 主站程序

①初始化

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

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

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

②启动发送

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

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

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

③接收从站返回数据

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

④接收完成

接收完成后,做如下几方面处理。如果接收错误或超时,则跳过此站的轮询。

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

复位接收标志,同时修改轮询计数器的值,准备轮询下一个从站;

复位超时定时器;

启动一个延时定时器,延时时间到后开始轮询下一个从站。

8. 从站程序

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

①接收数据

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

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

不是本站数据,直接清空接收缓冲区(DB17)。

②发送返回数据

接收完成后,调用发送功能,将DB19的数据发送给主站。

9. 实验结果

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


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 西门子
    +关注

    关注

    91

    文章

    2845

    浏览量

    113749
  • 驱动协议
    +关注

    关注

    0

    文章

    1

    浏览量

    2627

原文标题:如何组态基于ASCII驱动协议的多站点轮询

文章出处:【微信号:Raul_Woo,微信公众号:工控周刊】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    西门子S7TCP转ModbusTCP模块wincc通信

    本文分享的是西门子S7-412H的CPU通过兴达易控(北京)科技有限公司(简称称兴达易控)生产的CHNet-PN以太网通信模块实现有S7TCP转ModbusTCP与WINCC
    发表于 10-14 14:54 1564次阅读
    <b class='flag-5'>西门子</b>S7TCP转ModbusTCP<b class='flag-5'>模块</b>wincc<b class='flag-5'>通信</b>

    485通信,Modbus协议,如何通过Visa函数对多个仪表串口轮询

    485通信,Modbus协议,如何通过Visa函数对多个仪表串口轮询读取仪表数据?请高手帮忙!
    发表于 01-04 13:17

    西门子S7-200 PPI协议获取及其通信控件研究

    西门子S7-200 PPI协议获取及其通信控件研究
    发表于 01-10 12:46 39次下载
    <b class='flag-5'>西门子</b>S7-200 PPI<b class='flag-5'>协议</b>获取及其<b class='flag-5'>通信</b>控件研究

    基于Modbus/TCP的西门子1200PLC和STM32通信

    西门子1200PLC 中间需要交换机来互联网口首先通信是要基于协议的,对于单片机和PLC而言之间通信协议可以有很多,
    发表于 11-23 18:21 40次下载
    基于Modbus/TCP的<b class='flag-5'>西门子</b>1200PLC和STM32<b class='flag-5'>通信</b>

    西门子PLC的通信协议介绍

    和计算机等麻烦的方式进行监控。 第二通信协议的类型太多。仅西门子plc品牌就有很多。现在,让我们来谈谈这些类型: 串行端口协议有: 1) MODBUS RTU
    发表于 12-29 10:05 1.1w次阅读

    西门子PLC与labview之间如何通过OPC实现通信

    西门子PLC与labview之间如何通过OPC进行通信? OPC数据采集软件Kepware西门子
    发表于 05-12 15:27 6897次阅读

    西门子PLC对Socket通信的支持

    对于自控或电气工程师来说,西门子PLC是每个人都非常熟悉的一款PLC品牌;而对于上位机开发工程师来说,Socket通信或TCP/IP协议也是必须要掌握的一种通信方式。刚好手头有一款
    发表于 10-27 10:37 2376次阅读

    西门子200Smart PLC的Socket通信技术

    西门子PLC对Socket通信的支持性是很不错的。如果你在使用西门子软件或者逛西门子论坛时,发现一个词叫做Open User Communication或开放式
    发表于 12-12 10:19 3351次阅读

    西门子S7-1200与组态软件之间无线MODBUS通信实例

    本方案是组态软件与西门子 S7-1200进行无线 MODBUS 通信的实现方法。此方案可以作为西门子 S7-1200与组态软件的无线 MODBUS
    的头像 发表于 01-11 09:27 2179次阅读
    <b class='flag-5'>西门子</b>S7-1200与组态软件<b class='flag-5'>之间</b>无线MODBUS<b class='flag-5'>通信</b>实例

    西门子V20变频器通信

    今天以西门子V20变频器为例,从电机试运行、快速调试、通信测试、上位机通信串口服务器等几个方面,带大家一步一步玩转西门子V20变频器。
    的头像 发表于 02-22 15:23 2344次阅读
    <b class='flag-5'>西门子</b>V20变频器<b class='flag-5'>通信</b>

    快速了解西门子串口PPI、200、200smart驱动协议如何使用

    快速学会西门子串口PPI、200、200smart驱动协议如何使用
    的头像 发表于 03-06 16:22 1.2w次阅读

    上位机与西门子PLC通信协议

    看出,西门子在工控领域的市场占有率很大,那么对于上位机开发人员来说,使用西门子PLC作为下 位机,我们应该如何与之进行通信呢? 西门子P
    发表于 04-17 15:13 1次下载
    上位机与<b class='flag-5'>西门子</b>PLC<b class='flag-5'>通信协议</b>

    西门子Profibus通信实战札记

    Profibus作为一种通信方式,凭借独特的优势,在工业控制领域应用广泛。现在说的是西门子S7-300与西门子S7-200PLC之间(一台S7-300两台S7-200)的Profibu
    发表于 05-18 14:24 699次阅读
    <b class='flag-5'>西门子</b>Profibus<b class='flag-5'>通信</b>实战札记

    西门子PLC与IO模块之间无线PROFINET通信

    。本方案以西门子S7-200SMART PLC为例,从站采集IO信号,采用Profinet通讯协议实现无线通讯。在本方案中采用了西门子PLC无线通讯终端DTD418MB,作为实现无线通讯的硬件设备。 一、方案概述 本方案中,用户
    的头像 发表于 06-06 09:10 1115次阅读
    <b class='flag-5'>西门子</b>PLC与IO<b class='flag-5'>模块</b><b class='flag-5'>之间</b>无线PROFINET<b class='flag-5'>通信</b>

    智嵌物联串口服务器与西门子Win CC软件通信演示

    本小节简要介绍智嵌物联串口服务器与西门子Win CC组态软件通信的步骤。 具体要实现的功能:ModBus Slave软件用来模拟用户的ModBus RTU设备(从站),西门子Win
    的头像 发表于 02-21 09:58 623次阅读
    智嵌物联<b class='flag-5'>串口</b>服务器与<b class='flag-5'>西门子</b>Win CC软件<b class='flag-5'>通信</b>演示