设备在运行,在线调试时Login提示The program has changed!要求下载程序,如果下载设备就会停止,如果不下载又无法继续调试。本次测试的目的就是找出该问题出现的原因,以及如何避免出现这个问题。
测试目的:
设备在运行,在线调试时Login提示The program has changed!要求下载程序,如果下载设备就会停止,如果不下载又无法继续调试。本次测试的目的就是找出该问题出现的原因,以及如何避免出现这个问题。
测试条件:
CX1020-0112,TwinCAT, WinCE
PLC代码:写NOVRAM数据,让CPU利用率超过75%。因为CPU利用率高时,Login时间较长。进行各种操作,包括:修改个别数字、增加几行代码、增加变量、增加数组甚至功能块等等,在线修改次数也达到了19次之多也没有出现Online Change不可用或者要求程序重新Load的情况。
测试结果:
没有找到Online Change的次数或者代码改动量触发The program has changed!问题的临界点,但找到了中间文件.ri和.ci与该问题的关联,并小结出“TwinCAT 2的.ci和.ri文件的作用”,以及“如何缩短Online Change后再Login的时间”。
Online Change的次数或者代码改动量的影响
本次测试没有找到Online Change的次数限制或者代码改动量的限制,比如做了哪些修改,程序就会要求重新下载。
能克服Online Change的操作
在CPU利用率75%以上的情况下,这些Online Change操作仍然无法触发The program has changed!问题。包括:修改个别数字、增加几行代码、增加变量、增加数组甚至功能块等等。
不能克服Online Change的操作
由于各种测试都不能重现问题,因此在原Pro的基础上导入另一个PLC的源代码。
编译后Login,提示要Load程序,而没有Online Change的选项了。报警代码1302,提示信息:New externally referenced functions inserted. Online Change is therefore no longer possible!
在TC2帮助文件中显示,报警1302的原因是:引用了上次没有在控制器里面引用过的库,所以要下载完整的项目。
- 如何缩短Online Change时编译和下载的时间
通常代码只是很小的改动量,但是程序稍微大一点,下载前就要花时间去编译以及Preparing Symbols和Download Symbols,修改Project Option中的TwinCAT选项可以改善这个问题,
为了不影响与PLC通讯的其它设备,第一次下载以及最后调试完毕时,可以再还原默认设置。
- 如何避免重新编译及重新下载
- TwinCAT 2的.ci和.ri文件的作用
中间文件.ri和.ci与程序重新下载问题的关联,以及“TwinCAT 2的.ci和.ri文件的作用”:
PLC Control操作 | 产生和更新的 文件后辍 | 文件的作用 |
Build及Rebuild时, | .SDB;.SYM;.tpy; | 变量名,任务,端口,地址分配等信息 |
Save时 | .pro和.ci文件 | . ci文件保留历史编译信息,但是即使.pro文件中有无法编译通过的错误,Save时也会产生.ci文件。它总是与.pro文件同时产生和更新。如果没有.ci文件,Login就会触发重新编译。 |
Login后Download Program时 | .ri文件 | .ri文件保留的是Download信息。如果没有Save或者Create Boot Project操作,.ri文件就是唯一可靠的对应当前控制器内存运行程序的文件。如果没有.ri文件,Login时就会触发Program has changed,Download the program的要求。 |
Create Boot Project | TCPLC_P_x.wbp | 控制器上电后的PLC引导程序 |
所以避免出现程序下载报警的原则是保持.pro、.ci、.ri和TCPLC_P_x.wbp的互相匹配。
通常控制器里的代码和路径都不会变,只有编程电脑侧的文件会变。为了备份,重命名、另存为、换台电脑调试都有可能。再次登陆时都有可能出现警告“The program has changed!Download the program?”。这时如果选择下载,PLC程序肯定会停止,如果选择不下载,就没法Login继续调试。
为了避免这种问题出现,推荐操作如下:
- 现场调试做备份时,不要用另存为,而是复制当前文件,把备份按日期重命名。
这是为了使所有中间文件继续可用。
- 换电脑或者换人调试时,要整个文件夹复制,尤其是.pro、.ci和.ri文件要配套。
- 项目归档时,.pro、.ci、.ri和TCPLC_P_x.wbp文件,要一致保留最新版本。
推荐做法是收工前依次执行:Login——Create Boot Project——Save
然后编程PC上整个项目文件夹备份;控制器的\TwinCAT\Boot也整个文件夹备份。
- Online Change引起停机的可能性
此前有客户反馈,现场调试时Online Change更改一点点代码PLC就会停机,同时CPU配置较低而CPU利用率偏高。为了深入分析导致这个问题的原因,请反馈此类问题时先根据前面的描述,先确认以下3点:
- 确认编程电脑上的PLC程序没有更换名字或者路径,ri和ci文件也没有移动或者删除
- 确认TwinCAT PLC Control的Project | Option中的TwinCAT已经设置为Static Symbol并取消所有Global、Local的勾选
- 换台电脑重试操作,以排除编程电脑本身的问题
- 扩展阅读:TwinCAT 3中关于FB的Online Change内存指定
在TC3的帮助文件中找到了Online Change的相关内容,但TC2中并无类似的设置。
Twincat 3提供了为功能块的Online Change配置内存预留的选项。这意味着,如果内存储备足够大,在随后的Online Change期间对功能块的声明进行更改后,不必将功能块的实例复制到新的内存位置。这主要是指在线变更,其中一个或多个新变量被添加到一个功能块中。如果由于内存保留而不必将功能块实例复制到新的存储位置,则Online Change更快,出现的问题也更少。当内存储备耗尽时,在执行Online Change之前会显示一条消息。
建议:为功能块配置Online配置的预留内存,理想情况下,是在当前项目下载到控制器之前配置菜单和设置界面:PLC|Windows|Online Change Memory Reserve Settings.