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 编程技巧及实例分享相关推荐

  1. s7 200 smart编程软件是款功能强大的plc编程工具

    s7 200 smart编程软件是款功能强大的plc编程工具;它是由大家都比较熟悉的西门子官方进行研发推出,还对新款的编程软件进行支持,包括了CP243-1等;软件还可进行远程的编程.数据传输的功能也 ...

  2. 西门子S7—200 Smart恒压供水控制程序

    西门子S7-200 Smart恒压供水控制程序!带2台泵!无模拟量模块!用的是变频器的内置PID!变频器使用的是ABB 510!是和变频器通讯使用的! id=617902236233&

  3. S7 200 smart高速计数功能应用

    高速计数功能应用 https://ke.qq.com/course/package/26452 单相:只有一个输入(I0.0)进高速计数端.用于频率比较高的场景 双相:有两个输入(I0.0.I0.1) ...

  4. 组态王与西门子S7 200 SMART连接

    一.多个组态王连接一台PLC 最多3台组态王可以连接一个PLC,使用网口连接,需要更改组态王驱动的配置文件.配置文件在组态王安装目录下Driver文件夹下,配置文件叫 kvS7200.ini . 找到 ...

  5. VB.NET编程技巧与实例集粹 Module5_输入简单表达式并求值

     Module Module5_输入简单表达式并求值     Sub Main()         REM 定义存放表达式的字符串变量         Dim Expression As Stri ...

  6. smart200 写入1500db_S7 200 SMART 通讯问题—以太网设置

    一: TCP 协议通讯 (一) S7 200 SMART 之间的 TCP 通讯 TCP 是一个因特网核心协议. 在通过以太网通信的主机上运行的应用程序之间, TCP 提 供了可靠.有序并能够进行错误校 ...

  7. 200smart实现C语言编程,有关S7-200 SMART的编程示例-工业支持中心-西门子中国

    回答者: weiyt - 资深顾问&nbsp&nbsp第13级 2018-01-03 16:19:16 你参考这个,西门子 S7-200 SMART PLUS V2.0 技术参考,ht ...

  8. iPhone游戏编程实例:分享成功游戏开发人员的锦囊妙计

    iPhone游戏编程实例:分享成功游戏开发人员的锦囊妙计 基本信息 原书名: iPhone Games Projects 原出版社: Apress 作者: (美)Dave Mark    PJ Cab ...

  9. java数据和窗口怎么结合_卖jsp编程技巧的那个垃圾的所有实例的答案全部

    卖jsp编程技巧的那个垃圾的所有实例的答案全部 发布时间:2016-09-14 来源: 点击: 次 1. 如何让选中的一行记录高亮显示? http://topic.csdn.net/t/2005010 ...

最新文章

  1. 随笔-通过session判断用户密码输入错误三次,输入验证码
  2. python dlib学习(十一):眨眼检测
  3. 【SICP练习】57 练习2.27
  4. java通过jni调用C程序接口
  5. show open tables命令 mysql查看哪些表加锁了
  6. 数据结构之中缀表达式实现计算器
  7. netmiko检测linux基线,网络设备自动巡检工具
  8. 可信赖的服务器监控系统,可信赖的网络监控系统,源于专业和专注.PDF
  9. CRC校验算法——C语言实现
  10. 7天快速掌握MySQL-DAY6
  11. 图像处理 灰度世界算法
  12. Oracle、聚石塔
  13. Charles注册、破解(避免30分钟自动kill掉)
  14. 如何在安装时备份sis文件
  15. html文件用ppt打开,Win10如何打开html文件课件.ppt
  16. 人大金仓KingbaseES大小写敏感性专题
  17. 提醒大家有关越狱组it学院vip会员有猫腻,要小心。。。
  18. FreeType使用
  19. Robin登顶《时代周刊》丨 我们为『男神』打Call
  20. 装机U盘制作教程(图文并茂)

热门文章

  1. 世界各国谷歌(Google)网址大全
  2. Unity Spine动画中Complete 委托 、事件、缓存 += -= 委托
  3. 图片预览,且鼠标滚轮缩放
  4. 关于视频中的速率问题,海思视频速率(高速信号与高频信号区分与解释)
  5. 设置阿里云镜像(registry.cn-beijing.aliyuncs.com)登录凭证
  6. include的头文件中include其他头文件时的路径问题
  7. Clock Gating cell 与 Integrated Clock Gating cell(ICG)
  8. ICMP协议探测记录
  9. JavaWeb项目管理工具————Maven的使用
  10. Echarts升级2:柱状图头部显示百分比、同时内容在弹框显示