CP340/CP341基于ASCII驱动协议的多站点轮询

2023-11-04

   

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

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

1 网络搭建和硬件组态

1.1 网络搭建

1.1.1 系统组成

        如下图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接口连接到网络中。

 


                                                                                                                           图1 系统组成结构图

 

 

系统涉及的主要硬件设备及版本信息如表1

设备名称

订货号

版本

主站

 

 

CPU模块

6ES7315-2AG10-0AB0

V2.6

CP341

6ES7341-1CH01-0XE0

V1.02

1#从站

 

 

CPU模块

6ES7315-2AG10-0AB0

V2.6

CP341

6ES7341-1CH01-0XE0

V1.02

2#从站

 

 

CPU模块

6ES7315-2AG10-0AB0

V2.6

CP340

6ES7340-1AH02-0XE0

V1.04

PC/PPI电缆

6ES7901-3CB30-0XA0

 

                                                                                                              表1 系统主要硬件设备及版本信息

1.1.2 软件环境

Ø  操作系统:Windows XP Professional SP2;

Ø  编程软件:STEP7 V5.4 SP4;

Ø  PTP协议软件包:SIMATIC S7-CP PtP Param V5.1+SP11

下载链接:/cs/document/27013524?caller=view&lc=zh-CN

 

 

1.1.3 电缆和硬件连接

        根据具体情况可以自己制作通信电缆,也可以选择西门子提供的定制电缆。在通信距离可以满足要求的情况下,建议选择西门子提供的串行通信电缆,电缆订货号如表2。 


                                                                                                                             表2 连接电缆订货号

 

详细的硬件连接如图2所示。


                                                                                                                           图2 实际硬件连接图
 

1.2 参数分配

1.2.1 组态主站

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

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

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

Ø  接口类型:RS485半双工;

Ø  其他采用默认值。


                                                                                                  图3 主站CP341模块协议参数分配图 

 


                                                                                                              图4 主站CP341模块接口参数分配图
 

1.2.2 组态从站

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

       说明:详细的接口参数设置请参考CP341/CP340手册及相关文档。

       下载链接:http://www.ad.siemens.com.cn/download/ 

 
                                                                                                       图5    2#从站CP340模块协议参数分配图

 

2 轮询原理

2.1原理说明

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

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

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

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

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

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

本应用实例在以上几个方面都采用了相对简单的处理方式,在实际的应用中,针对不同的通信对象,可以具体分析并作出相应的处理。

2.2 轮询机制

2.2.1数据帧格式

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

 


                                                                                                               图6 定义的主从站数据帧格式

2.2.2 时序图

        如下图所示,主站按顺序轮询1#从站和2#从站。 



                                                                                                                     图7 轮询时序图

2.2.3 流程图

Ø  初始化流程

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

            Ø  主站轮询流程

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

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


                                                                                                            图8 主站轮询流程图

Ø  从站响应流程

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


                                                                                                               图9 从站响应流程图

3 程序实现

        接下来我们就可以根据上述轮询思想,通过编写STEP7程序具体实现主站轮询从站的功能。由于主站、从站任务的不同,所以在程序上的实现上也有所不同,下面针对主站和从站的程序实现做个简要描述。具体的例程可以参考本文附带的样例程序。

3.1 主站程序

3.1.1 初始化

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

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

                                                                                                 图10 初始化轮询计数器程序段

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

                                                                                                    图11 生成地址标识符程序段
 

3.1.2 启动发送

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

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

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

 
                                                                                         图12 发送功能块程序段

 

3.1.3 接收从站返回数据

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

                                                                                              图13 接收功能块程序段

3.1.4 接收完成

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

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

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

Ø  复位超时定时器;

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

 
                                                                                              图14 接收完成处理程序段

 

 


                                                                                                      图15 准备轮询下一个站程序段

 

3.2 从站程序

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

3.2.1 接收数据

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

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

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

                                                                                                   

                                                                                                       图16 从站接收程序段

  



                                                                                                                       图17 从站接收完处理程序段


3.2.1 发送返回数据

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

 


                                                                                                               图18 从站发送响应程序段

 

3.3 实验结果

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

 
                                                                                                             图19 系统运行监控图

 

ASCII_Polling.zip (302 KB) ( 302 KB )  

 

4 应用小结

       通过本应用实例,可以看到基于ASCII驱动协议的多站点轮询原理比较简单。同时因为其较大的灵活性,所以可以与各种满足ASCII协议的设备进行通信。西门子串行通信模块CP340、CP341、CP440-1、CP441-1/2、CPU313C/314C-2PtP以及ET200S的1SI 3964/ASCII等都集成有ASCII驱动协议功能,可以根据需求灵活地选择这些产品。

        本文所述应用和提供例程只作为相关应用的参考,在实际的应用中,应该充分考虑通信伙伴的特点和实际需求,结合不同的轮询方式、错误处理机制、校验方法、数据处理方法等手段达到通信目的。 

       郑重声明:本文的虚拟工程与真实工程实例有重大差别,示例中并未遵循规范的工程设计流程进行编程,请读者切勿将其与工程实例相混淆;由于此例子是免费的,任何用户可以免费复制或传播此程序例子。程序的作者对此程序不承担任何功能性或兼容性的责任,使用者风险自负;西门子不提供此程序例子的错误更改或者热线支持;为了更好的使用这些模板,建议用户仔细阅读相关模板的使用手册。

 

5 相关参考资料 

        关于西门子串行通信应用的文档可以参考相关产品手册,或登录下载中心网站http://www.ad.siemens.com.cn/download/,搜索下载如下文档:

A0006:串口通讯模块的信息与使用

A0081:CP340/341/440/441通讯及编程

A0336:CP341 MODBUS RTU多站点轮询

A0384:S7-300 CP341作主S7-200作从的MODBUS通信

A0123:ET200S MODBUS/USS 模板使用指南

A0413:如何通过MODBUS协议实现 S7-1200与S7-200通讯

 

PTP协议软件包:SIMATIC S7-CP PtP Param V5.1+SP11下载链接:/cs/document/27013524?caller=view&lc=zh-CN

MODBUS主站装载驱动下载链接:

http://support.automation.siemens.com/CN/view/zh/27774018

MODBUS从站装载驱动下载链接:

http://support.automation.siemens.com/CN/view/zh/27774276

关键词
CP340,CP341,ASCII,串行通信,多站点轮询 

https://support.industry.siemens.com/cs/document/73157734/cp340-cp341%E5%9F%BA%E4%BA%8Eascii%E9%A9%B1%E5%8A%A8%E5%8D%8F%E8%AE%AE%E7%9A%84%E5%A4%9A%E7%AB%99%E7%82%B9%E8%BD%AE%E8%AF%A2?dti=0&lc=zh-CN

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CP340/CP341基于ASCII驱动协议的多站点轮询 的相关文章

  • 虚拟机扩容——非LVM分区

    虚拟机扩容 非LVM分区 前提说明 实验环境 一 加载到已有路径 在原有磁盘基础上扩容 1 准备工作 2 开机 查看磁盘扩容后的状态 3 进行分区扩展磁盘 记住根分区起始位置和结束位置 4 删除根分区 切记不要保存 5 创建分区 箭头位置为
  • php使用curl_exec 获取响应头存在多个HEADER问题解决

    前言 近期在接一个第三方支付的时候 遇到一个比较头大的问题 因为第三方会把部分响应结果放在header里传输 需要从头里取数据后解密使用 我在本地是正常的 但是放到服务器上就一直是失败 因为取不到对应的头部信息 找了很久原因也没能找到具体问
  • 【云原生之Docker实战】使用docker部署nginx-proxy-manager-zh反向代理工具

    云原生之Docker实战 使用docker部署nginx proxy manager zh反向代理工具 一 nginx proxy manager zh介绍 1 nginx proxy manager zh简介 2 nginx proxy
  • Git的使用(三)——保存用户名和密码

    通过上两篇我们对Git应该都有了基本的了解了 但是有一个问题对于生性懒惰的程序员 说的是我 来说是非常枯燥无味的 那就是每次的提交都要输入密码 每次都要干重复的事情 这对于程序员来说是最不喜欢干的事情了 重复 所以这次就先把这个问题解决了再
  • 实现两视频叠加时上层剪辑透明部分不遮挡下层内容的两种方案

    前往老猿Python博客 https blog csdn net LaoYuanPython 一 引言 在 moviepy音视频剪辑 使用rotate函数实现视频变换处理以及参数expand取值为True时的花屏问题解决方案 介绍了视频旋转
  • 区块链在新基建中的地位和作用如何体现出来?

    2020年4月17日 我们国务院办公厅在新闻发布会上 公布了一季度GDP的增长情况 是 6 8 这也是我们改革开放以来 首次季度GDP出现下降 而且降幅巨大 当然 这里面有客观因素的存在 就是突然其来的新冠疫情 对于我们一月 二月正常的经济
  • pg 创建分区表 --chatGpt

    问 postgreSql 创建表 addresses id mkey pri addr 其中 id自增且id值会超过上百亿 mkey长度为8且唯一的字符串 pri长度64的字符串 addr长度64的字符串 用散列分区的方式创建 gpt 你可
  • springboot个性化课程推荐系统个性化课程推荐系统毕业设计源码131805

    Springboot个性化课程推荐系统 摘 要 随着计算机技术的发展 特别是计算机网络技术与数据库技术的发展 使用人们的生活与工作方式发生了很大的改观 本课题研究的个性化课程推荐系统 主要功能模块包括学生管理 课程管理 课程分类 课程学习管
  • React项目中请求接口的封装

    封装目录中所包含的文件 Api js ApiIp js ApiURL js ApiIp js文件的作用 这个文件的作用主要是在开发环境和生产环境下调用不同的接口请求地址 生产环境下此文件的作用是动态 的获取浏览器中的地址进行拼装 便可以动态
  • 数据挖掘研究方向、热点以及对大数据研究的认识

    日期 2015 07 07 来源 博客园 作者 chuanting zhang 字体 大中 小 通过上网查询以及看同行对会议的公共认识 数据挖掘领域的顶级会议是KDD ACM SIGKDD Conference on Knowledge D
  • 再记一次挖矿病毒应急响应

    一 事件发生背景 办事处部署的TAR产生挖矿告警 如下图 1 TAR挖矿告警所示 告警显示是售前用来存储文件的服务器 IP 10 33 15 240 中了CoinMiner挖矿病毒 图 1 TAR挖矿告警 二 初步排查判断 通过分析TAR设
  • 最长公共子序列LCS 输出所有LCS

    原博客地址 最长公共子序列LCS 求法 O mn 即输出所有LCS 最长公共子序列LCS 求法 O mn 即输出所有LCS include
  • 【SpringCloud】Stream消息通知使用

    文章目录 概述 标准MQ 配置 POM YML 示例 消息发送 配置RabbitMQ可视化插件 消息消费者 遇到的问题 复现 解决 修改YML 注意 概述 屏蔽底层消息中间件的差异 降低切换成本 统一消息的编程模型 官网 https spr
  • TypeError: 'builtin_function_or_method' object has no attribute '__getitem__'

    谷歌下的翻译是 内置函数或方法对象没有获取项目属性 错误的是在内置的函数中符号写错 例如 range 1 5 写成 range 1 5
  • BaseRecyclerViewAdapterHelper之BaseMultiItemQuickAdapter实现多级列表功能

    这里实现的是一个三级列表效果 可展开和收起 三个实体类ExpandItem Expand1Item和Expand2Item 均要继承AbstractExpandableItem 实现接口MultiItemEntity public clas

随机推荐

  • Spring Cloud介绍

    给你们看看我上课在干啥你就知道我为啥啥都不会了 上课笔记 emmm 字比较丑 我还记得那是一堂英语课 老师不让用电子设备 我只能手写我这篇文章的思路 所以 冒着期末要挂科的风险 我也得把这篇文章写完 给大家分享知识 自己也能重新复习和认识一
  • JVM类的加载机制

    1 类的加载机制 类的加载指的是将类的 class文件中的二进制数据读入到内存中 将其放在运行时数据区的方法区内 然后在堆区创建一个java lang Class对象 用来封装类在方法区内的数据结构 类的加载的最终产品是位于堆区中的Clas
  • 算法分析与设计编程题 贪心算法

    活动安排问题 题目描述 解题代码 vector
  • 线程池以及UDP、socket通信

    目录 线程池 UDP通信 本地socket通信 线程池 什么是线程池 是一个抽象的概念 若干个线程组合到一起 形成线程池 为什么需要线程池 多线程版服务器一个客户端就需要创建一个线程 若客户端太多 显然不太合适 什么时候需要创建线程池呢 简
  • QT (C++)安装5.14

    QT 5 14 安装 介绍 C 版本 据说 这个版本是最后一个提供离线安装包的QT5 例如 qt opensource windows x86 5 14 2 exe 2 4G 最后一个可能是5 14 2 下载方式 1 在https down
  • unity开发VR的项目01——环境配置(unity2020.3)

    使用unity创建一个steam VR项目 首先要进行环境的配置 一 Steam VR插件导入 创建一个unity 3 项目 在 商店 window asset store 中搜索SteamVR Plugin 找到并导入到unity资源 也
  • STL:map

    首先包含头文件 include
  • 适合小白的详细虚拟机网络配置方法(附图)

    首先VMware的版本号需要16 0或者16 0以上版本 我用都版本应该是16 0的 有点悠久忘记了版本号 图标长这样 接下来右击镜像 点击设置 将网络适配器设置为NAT 点击编辑 再点击虚拟网络适配器 选择VMnet8 点击NAT设置 记
  • matlab矩阵处理

    2 1特殊矩阵 通用特殊矩阵 zeros函数 零矩阵 A zeros 2 3 A 0 0 0 0 0 0 zeros size reshape A 3 2 ans 0 0 0 0 0 0 ones函数 全一矩阵 eye函数 单位矩阵 ran
  • 三进制计算机_三进制会取代二进制计算机吗?

    三进制计算机 是以三进制数字系统为基础而发展的计算机 三进制计算机跟二进制计算机比 优势在哪里 三进制逻辑电路比二进制逻辑电路速度更快 可靠性更高 而且需要的设备和电能也更少 三进制代码的一个特点是对称 即相反数的一致性 因此它和二进制代码
  • express文件上传中间件Multer最新使用说明

    原文地址 http cnodejs org topic 564f32631986c7df7e92b0db 说明 multer是express官方推荐的文件上传中间件 它是在busboy的基础上开发的 目前multer的最新版本为 1 1 0
  • spring boot2 (40)- JWT token

    本篇介绍JWT token的生成和解析的基本方法 pom xml
  • JavaScript代码是怎么执行的?

    前言 众所周知 JavaScript是单线程语言 所以JavaScript是按顺序执行的 先编译再执行 变量提升 请看下面的例子 console log cat catName Chloe var cat Chloe function ca
  • 高级程序员解决问题的思维模式和普通程序员的区别在哪里?

    作者主页 士别三日wyx 先给你出一道题 看你会如何思考 假设你是一个程序员 常年保持自学和超长工作时长的状态 承受着不为人知的压力和痛苦 面对同行程序员的攀比和压力 在公司title 年薪 房子之间深陷 35岁大限越来越近 头顶日愈清凉
  • 2022年同济大学计算机考研复试分数线

    同济大学属于34所自划线院校之一 考研复试分数线分国家线和院校自划线 院校自划线公布时间一般早于国家线 报考同济大学计算机研究生的考生 复试分数线请以院校官网公布的分数线为准 2021年同济大学计算机考研复试分数线公布日期在3月13日 预计
  • ubuntu 22 安装elasticsearch

    安装说明 在 Ubuntu 上安装 Elasticsearch DEB 文件的过程与上面提到的大致相同 你可以按照以下步骤进行操作 1 首先 打开终端 并进入包含 Elasticsearch DEB 文件的目录 cd home userna
  • Unity Color Space

    这一周都在看Unity的Color Space相关的内容 看明白了 写下来给自己和他们参考 有不对的地方欢迎指正 显示器所能显示的颜色很有限 于是业界出了sRGB颜色空间 Photo Shop默认的颜色空间就是这个 照相机不用这个 用别的
  • MySQL索引常见面试题(2022版)

    目录 为什么要建立索引 哪些情况适合建立索引 哪些情况下不适合建索引 为什么索引是使用B 树 重点 索引分为那几类 什么是聚簇索引 重点 使用聚簇索引的优缺点 知道 为什么推荐使用自增主键作为索引 知道 什么叫回表 重点 什么叫索引覆盖 重
  • ElasticSearch6.x 之映射参数

    本文转载至https blog csdn net chengyuqiang article details 79059958 映射参数概述 ElasticSearch提供了丰富的映射参数 官网地址 https www elastic co
  • CP340/CP341基于ASCII驱动协议的多站点轮询

    西门子SIMATIC S7系列串行通信模块 包括CP340 CP341 CP440 1 CP441 1 2 CPU313C 314C 2PtP以及ET200S的1SI 3964 ASCII等 都支持ASCII驱动协议的通信 可以广泛地用于与