S7-200 SMART 编程技巧及实例分享
S7-200 SMART在编程中
常见问题解析
工欲善其事必先利其器,在日常的程序编辑和调试过程中,可能会遇到各种各样的问题,比如编辑好的逻辑程序执行结果不正确,编译正常的程序下载到不同的CPU中,有些可以下载,而有些提示非致命错误等等,此时如何快速的排查和分析错误发生原因就非常重要,而排查和分析的前提就需要对S7-200 SMART从软件和硬件上有更加深入的了解,下面我们就通过几个典型的案例来进行问题的分析。
案例 1
首先看图1这段程序,编译无任何问题,如果下载到不同类型的CPU中,表现就会不同,我们可以尝试下载到ST60和CR60两种类型的CPU中。
图1 主程序
下载到ST60中,程序运行正常,如果下载到CR60中,程序运行就会报非致命错误:操作数非法(错误码:0090),图2为具体的非致命错误信息:
图2 PLC信息
根据程序分析错误出现的原因和中断有关,可以查询S7-200 SMART系统手册中断章节可以找到对应答案,如表1所示,24号中断事件CR60不支持,所以在运行时会报错非致命错误。
表1
综上,当需要程序在多个不同类型CPU之间下载或者移植时,就需要提前了解各个CPU的程序容量大小、支持的数据区的大小,断电保持区域大小,是否使用到了CPU不支持的功能或者CPU固件版本是否支持等因素,只有了解了这些,才能做到有的放矢。
案例 2
在日常编程过程中,我们可能需要各种标准库,有时需要子程序和中断程序有多重调用关系,例如下面这个案例,程序想使用格雷码转换库在定时中断中每隔100ms进行一次数据的格雷码转换,请看图3:
图3 主程序
图4 子程序
程序的调用关系为:中断子程序INT0调用子程序SBR1,SBR1中调用子程序SBR2,SBR2中的程序如图4所示,下载到CPU中,通过状态图表监视程序状态,发现没有结果输出,如图5所示:
图5 状态图标监控无输出
进一步监控PLC信息,可以看到图6的非致命错误报警:超出最大用户子例程嵌套级别(错误码:0008)
图6 PLC信息
S7-200 SMART手册中规定:从主程序调用子例程的嵌套深度是 8 级,从中断例程调用嵌套深度是 4 级。
现在来看上述程序的调用关系:
INT0→SBR1→SBR2→GRAY_BIN_DW,表面上也仅仅嵌套了3级,满足中断嵌套深度要求,但是仔细查看GRAY_BIN_DW功能库可以发现,该库也嵌套了几层,嵌套关系如下:
GRAY_BIN_DW→GRAY_BIN→XOR,这样下来,嵌套关系就变成如下:
INT0→SBR1→SBR2→GRAY_BIN_DW
→GRAY_BIN→XOR,总共5层嵌套关系,超过了CPU支持的最大嵌套深度,导致CPU 无法运行,知道了原因,我们可以减少调用嵌套为4层以内,则程序就可以正常执行了。
通过以上描述就可以明白,有些看似不可理解的问题其实有其发生的原因,只有深入了解对应产品的技术细节,才能抽茧剥丝,找到问题的根源所在。
更多详细的有关S7-200 SMART编程的话题,您可以持续关注西门子工业1847平台,我们会及时给大家总结并分享最有价值的干货内容。
访问“西门子1847工业学习平台”免费获得“PLC使用小窍门集锦”请速速查阅!
S7-200 SMART
如何快速提高编程效率
在日常的编程过程中,我们可能需要不少的逻辑运算和算术运算,如果这种运算很多,有可能会导致程序量很大,CPU的扫描周期加长,在这种情况下,找到其中的规律,可以大大简化程序。
假设一个场景,现场有16台设备,需要控制16台泵的启停,IO地址如下表所示:
表2
一般的编程思路是单独写出每个泵的启动停止控制逻辑,如图7所示,需要编写16组控制逻辑:
图7 单个泵的启停控制
其实针对这种编程,我们可以变换一种思路,将上面的梯形图变换成图8所示的逻辑,也可以完成对应的控制功能:
图8 字逻辑运算
这样变换完成后,编程就显得特别简洁,因此编程思路很重要。
在另外一些应用场景中,有时需要记录现场设备的运行时间,一般情况下我们可以使用定时器来实现计时的功能,但S7-200 SMART定时器有数量限制(最大256个),并且最大时基为100ms的定时器其所能达到的最大计时长度为3276.7S,若想实现小时或者天的计时就需要定时器加计数器来实现,而计数器也有数量限制(最大256个),当需要类似的功能很多时,计数器和定时器数量就不够用了,此时可以使用系统特殊存储器 SM0.4(周期为60S的时钟脉冲)和SM0.5(周期为1S的时钟脉冲)来实现计时功能。
如图9所示,其中值VD0的单位为秒,在实际应用中,可以对这个数值进行再次转换,得到分钟、小时或者天的时间值(本例中VD4的单位为小时),同时这些地址也可以按需设置在S7-200 SMART断电保持区域中,实现不同时间长度的定时以及断电保持功能,非常方便。
图9 使用SM0.5实现计时功能
实际编程时对于一些功能重复的地方,我们可以考虑做成子程序多次调用,一些需要重复计算的功能,可以使用FOR NEXT循环来完成,也可以考虑使用间接寻址的方式来提高程序的灵活性,而对一些流程方面的控制可以使用顺序控制继电器来完成,这样可以大大提高编程的效率。
S7-200 SMART
编程中常见的典型应用
以上介绍的常见问题以及编程技巧只是抛砖引玉,折射出日常编程问题的一小部分,对于编程者而言,他们会遇到形形色色不同的问题,面对大量的程序,他们也想对程序做好优化,尽可能使用简洁规范的语句实现控制功能,对于一些典型应用也想知道实现方法,针对这样的客户需求,我们在西门子工业1847平台上也推出了《S7-200 SMART编程小技巧》系列视频,其中详细介绍了一些典型应用案例以及编程注意事项供大家参考:
- S7-200 SMART基础入门—硬件及软件
- S7-200 SMART基础入门—基础编程
- S7-200 SMART如何实现CRC校验
- S7-200 SMART子程序陷阱
- S7-200 SMART与多台设备自由口通信
- S7-200 SMART如何使用间接寻址实现冒泡排序
- S7-200 SMART 子程序之电机控制
- S7-200 SMART 子程序运行为什么不正常
- S7-200 SMART如何实现模拟量滑动滤波功能
- S7-200 SMART子程序之阀门控制
- S7-200 SMART熟能生巧之累加器的应用
- S7-200 SMART流量累积功能上篇---功能实现
- S7-200 SMART流量累积功能中篇---实数存储原理
- S7-200 SMART流量累积功能下篇---大小值相加问题
- S7-200 SMART顺序控制功能
专题内容抢先试看:西门子1847工业学习平台
除了上述系列视频在持续更新之外,我们也提供了一些库文件以及功能块方便客户直接下载以及使用:
S7-200 SMART Modbus RTU主站指令库
S7-200 SMART 用户自定义指令库
S7-200SMART模拟量比例换算
S7-200 SMART PLC 与 RFID 读写器的通信
S7-200 SMART自由口通信(1):设置参数——跟我学
S7-200 SMART自由口通信(2):编写发送程序——跟我学
S7-200 SMART自由口通信(3):编写接收程序——跟我学
S7-200 SMART精品课程推荐
学习完 “S7-200 SMART编程小技巧” 系列视频,如果还希望了解更多关于S7-200 SMART相关课程可以查看以下系列视频:
1. 快速了解S7-200SMART系统
2. 从S7-200到S7-200 SMART移植
3. S7-200 SMART串口通信精讲
4. S7-200 SMART软件及编程精讲
更多详细的有关S7-200 SMART编程的话题,您可以持续关注西门子工业1847平台,我们会及时给大家总结并分享最有价值的干货内容。
“PLC使用小窍门集锦”请速速查阅!
1847首页-技术视频免费看-西门子工业“1847会员”-西门子中国www.ad.siemens.com.cn/1847/?utm_term=articlelink&channel_link_type=web&utm_campaign=1847%E4%B8%BB%E9%A1%B5%E6%8E%A8%E5%B9%BF&sat_cf=1&utm_medium=articlelink&_channel_track_key=K54oYNVD&utm_source=Socialzhihu&utm_content=zhihuarticle正在上传…重新上传取消https://www.ad.siemens.com.cn/1847/?utm_term=1847&channel_link_type=web&utm_campaign=1847%E4%B8%BB%E9%A1%B5%E6%8E%A8%E5%B9%BF&sat_cf=1&utm_medium=article&_channel_track_key=xlxc5BrE&utm_source=csdn&utm_content=article
S7-200 SMART 编程技巧及实例分享相关推荐
- s7 200 smart编程软件是款功能强大的plc编程工具
s7 200 smart编程软件是款功能强大的plc编程工具;它是由大家都比较熟悉的西门子官方进行研发推出,还对新款的编程软件进行支持,包括了CP243-1等;软件还可进行远程的编程.数据传输的功能也 ...
- 西门子S7—200 Smart恒压供水控制程序
西门子S7-200 Smart恒压供水控制程序!带2台泵!无模拟量模块!用的是变频器的内置PID!变频器使用的是ABB 510!是和变频器通讯使用的! id=617902236233&
- S7 200 smart高速计数功能应用
高速计数功能应用 https://ke.qq.com/course/package/26452 单相:只有一个输入(I0.0)进高速计数端.用于频率比较高的场景 双相:有两个输入(I0.0.I0.1) ...
- 组态王与西门子S7 200 SMART连接
一.多个组态王连接一台PLC 最多3台组态王可以连接一个PLC,使用网口连接,需要更改组态王驱动的配置文件.配置文件在组态王安装目录下Driver文件夹下,配置文件叫 kvS7200.ini . 找到 ...
- VB.NET编程技巧与实例集粹 Module5_输入简单表达式并求值
Module Module5_输入简单表达式并求值 Sub Main() REM 定义存放表达式的字符串变量 Dim Expression As Stri ...
- smart200 写入1500db_S7 200 SMART 通讯问题—以太网设置
一: TCP 协议通讯 (一) S7 200 SMART 之间的 TCP 通讯 TCP 是一个因特网核心协议. 在通过以太网通信的主机上运行的应用程序之间, TCP 提 供了可靠.有序并能够进行错误校 ...
- 200smart实现C语言编程,有关S7-200 SMART的编程示例-工业支持中心-西门子中国
回答者: weiyt - 资深顾问  第13级 2018-01-03 16:19:16 你参考这个,西门子 S7-200 SMART PLUS V2.0 技术参考,ht ...
- iPhone游戏编程实例:分享成功游戏开发人员的锦囊妙计
iPhone游戏编程实例:分享成功游戏开发人员的锦囊妙计 基本信息 原书名: iPhone Games Projects 原出版社: Apress 作者: (美)Dave Mark PJ Cab ...
- java数据和窗口怎么结合_卖jsp编程技巧的那个垃圾的所有实例的答案全部
卖jsp编程技巧的那个垃圾的所有实例的答案全部 发布时间:2016-09-14 来源: 点击: 次 1. 如何让选中的一行记录高亮显示? http://topic.csdn.net/t/2005010 ...
最新文章
- 随笔-通过session判断用户密码输入错误三次,输入验证码
- python dlib学习(十一):眨眼检测
- 【SICP练习】57 练习2.27
- java通过jni调用C程序接口
- show open tables命令 mysql查看哪些表加锁了
- 数据结构之中缀表达式实现计算器
- netmiko检测linux基线,网络设备自动巡检工具
- 可信赖的服务器监控系统,可信赖的网络监控系统,源于专业和专注.PDF
- CRC校验算法——C语言实现
- 7天快速掌握MySQL-DAY6
- 图像处理 灰度世界算法
- Oracle、聚石塔
- Charles注册、破解(避免30分钟自动kill掉)
- 如何在安装时备份sis文件
- html文件用ppt打开,Win10如何打开html文件课件.ppt
- 人大金仓KingbaseES大小写敏感性专题
- 提醒大家有关越狱组it学院vip会员有猫腻,要小心。。。
- FreeType使用
- Robin登顶《时代周刊》丨 我们为『男神』打Call
- 装机U盘制作教程(图文并茂)
热门文章
- 世界各国谷歌(Google)网址大全
- Unity Spine动画中Complete 委托 、事件、缓存 += -= 委托
- 图片预览,且鼠标滚轮缩放
- 关于视频中的速率问题,海思视频速率(高速信号与高频信号区分与解释)
- 设置阿里云镜像(registry.cn-beijing.aliyuncs.com)登录凭证
- include的头文件中include其他头文件时的路径问题
- Clock Gating cell 与 Integrated Clock Gating cell(ICG)
- ICMP协议探测记录
- JavaWeb项目管理工具————Maven的使用
- Echarts升级2:柱状图头部显示百分比、同时内容在弹框显示