1、最近编程出现一个问题:S7-200程序下载不了,检查程序发现:程序13120字节超过224xp的存储区了,如图:
2、所以我们就在系统块里设置:禁止“运行模式编辑”程序来增加存储区,如下图所示:
3、增加存储区后,发现程序编译无错了,但仍旧下载不了程序,下载过程中依旧报错,如图所示:
4、然后,新建一个空程序用以测试,结果发现可以下载,只有这个程序无法下载,按照如下步骤检查下载报错后的plc-信息:
5、打开PLC信息我们会发现:错误代码:9D,在SDB0中检测到非法参数,在主程序中,位于网络1,如图所示:
查《S7-200可编程系统手册》附录C部分,编译规则错误009D,组态SDB出错。
6、再来检查下系统块里的断电数据保持,重点检查定时器部分,因为如果这里选择错误,是会报9D错误的。如图:
检查发现:
断电数据保持区域有没有改过,T、C、V区数据也没有超,然后再次检查程序是否有编译错误,如上升沿下降沿超过256个等编程隐患,发现都没有问题,增加存储区也没有用,删除部分程序还是无法下载,甚至删光程序仍旧无法下载。
后来考虑重点应该是断电数据保持那一页,试探性的点击“全部还原”后,竟然可以下载了!
仔细对比还原前后的截图就发现错误在哪里了:因为MB区的单元数目不能是0,变为1后就可以了!
总结:
200软件系统块中断电数据保持中M区的单元个数不能设置为0,偏移量和个数也不能设置超限,否则就会报错:组态信息中指定了一个无效参数,在PLC菜单的信息下查看错误类型为:非致命错误9D,在SDB0中检测到非法参数。