s7-200程序编译通过,却下不了

s7-200程序编译通过,却下不了,第1张

S7-200非致命错误是隐好指用户程序结构问题,用户程序指令执行问题和扩展I/O模块问题。可以用STEP7 – Micro/WIN来得到所产生错误的错误代码。非致命错误有三种基本分类。

(1)程序编译错误。当下载程序时,S7 - 200 PLC会编译程序,如果S7 - 200 PLC发现程序违反了编译规则,会停止下载并产生一个错误代码(已经下载到S7 - 200 PLC中的程序将仍然在永久存储区中存在,并不会丢失)。可以在修正错误后再次下载程序。

(2) I/O错误。启动时,S7 - 200 PLC从每一个模块读取I/O配置,正常运行过程中,S7 -200 PLC周期性地检测每一个模块的状态与启动时得到的配置相比较。如果S7 - 200 PLC检测到差别,会将模块错误寄存器中的配置错误标志位置位。除非此模块的组态再次和启动时得到的组态相匹配,否则S7 - 200 PLC不会从此模块中读输人数据或者写输出数据到此模块。

(3)程序执行错误。在程序执行过程中有可能产生错误.这类错误有可能来自使用了不正确的指令或者在过程中产生了非法数据。例扰亩如,一个编译正确的间接寻址指针,在程序执行过程中,可能会改为指向一个非法地址。程序执行缓携森错误信息存储在特殊寄存器( SM)标注位置中,应用程序可以监视这些标志位。

当S7 - 200 PLC发生非致命错误时,S7 - 200 PLC并不切换到STOP模式,它仅仅是把事件记录到SM存储器中并继续执行应用程序,但是如果用户希望在发生非致命错误时,将CPU切换到STOP模式,可以通过编程实现。

问题出在输入函数scanf,当输入字符串内容链袭时,不需要加取地址符&,而其他数据类型则需要加。

你的代码棚答兄中前三个输入都举衫是字符串,不应该加,而你加了,最后一个是浮点数,应该加,而你没加。

按照上述规则调整一下程序应该就好了。

这是逻辑错误,就是说代码在语法上没有错误,但是在逻辑上有问题,因此没办法执行。

处理这顷局种问题,可以通过调试,来看看哪一块代码雀键让逻辑上有问题(就是说没有达到亮举预期的效果)。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12530904.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存