宜宾西门子PLC代理商|供货商
工作存储器:
工作存储器仅包含运行时使用的程序和数据。RAM 工作存储器集成在CPU中, RAM中的内容通过电源模块供电或后备电池保持。除了S7417-4 CPU可以通过插入的存储卡来扩展工作存储器外,其他PLC的工作存储器都无法扩展。
3. 装载存储器:
装载存储器是用于存放不包含符号地址分配或注释(这些保留在编程设备的存储器中)的用户程序。装载存储器可以是存储器卡、内部集成的RAM或内部集成的EPROM.
4. 保持存储器:
保持存储器是非易失性的RAM,通过组态可以在PLC掉电后没有安装后备电池的情况下,保存一部分位存储器(M)、定时器(T)、计数器(C)和数据块(DB)。在设置CPU参数时一定要要保持的区域。(注意:由于S7-400PLC没有非易失性RAM,组态了保持区域,再掉电时若没有后备电池,也将丢失所有数据。这是S7-300 PLC 与S7-400PLC 的重要区别)
1) 当在step7中执行下装(download)时,会把编程设备中的用户程序下装到CPU的装载存储区,会把运行时使用的程序和数据写入工作存储区(如OB1和数据块)。
2) 若CPU没有后备电池,当系统断电时,在工作存储器中定义了保持特性的数据块会把数据写入保持存储器中,上电后保持存储器会把断电时的数据写入到工作存储区,保证了运行数据断电不丢失(过程如图7-1中与箭头所示)。
3) 若CPU没有后备电池,当系统断电时,系统存储区中定义n的保持位存储器(M)、定时器(T)和计数器(C))断电时也会写入保持存储器,恢复上电时断电时的数据重新写入,保证了运行数据断电不丢失(如图7-1中与箭头所示)。
按照CPU 的装载存储器来分类:新型S7-300 CPU、标准型S7-300 CPU、带内置EPROM 的S7300CPU,具体描述如下:
新型S7-300CPU是指使用MMC卡作为其装载存储器的CPU,此类CPU不用安装后备电池,免维护。由于新型S7300-CPU它不含内置的装载存储器,必须使用MMC卡。新型的S7-300CPU包括紧凑型 (即CPU31xC系列)和由标准型更新的新型CPU。任何程序的下载方式都直接保存到卡中,没有MMC卡,是无法把程序下载到CPU中的
DEBUG调试串口方式
使用AHC工具(使用方法见本文下一节)配置AppHelper输出为DEBUG。连接板子的DEBUG串口,PC端使用任意串口工具,设置波特率115200,向DEBUG口输出任意三个字符,即可获得AppHelper打印的进程线程信息。
串口方式
将底板上引出,且客户应用程序未使用的串口连接上PC。使用AHC工具(使用方法见本文下一节)配置好串口号及波特率。PC端使用任意串口工具,用设定的波特率向该串口输出任意三个字符,即可获得AppHelper打印的进程线程信息。
AHC工具使用介绍
AHC工具即AppHelperConfig工具,用于设置AppHelper打印信息的输出位置。有两种办法进行设置。
控制面板方式
在板子控制面板中运行AHC工具。
选择好输出信息的串口及波特率(其中COM1为USBOTG),点击OK键保存配置,板子重启后配置生效。
telnet方式
通过telnet登录上板子,执行命令AHCport [baud]
参数port:串口号,值为0-6,0表示DEBUG串口,1表示USBOTG转虚拟串口,2-6分别表示板子的COM2-COM6。
参数baud:波特率,可选参数,如果不填表示保持原波特率,支持1200,2400,4800,9600,19200,38400,57600,115200。当port为0时,baud固定为115200,当port为1时,baud值不生效。
命令执行后,DEBUG口可以看到打印提示信息。
打印格式说明
打印结果为数行,其中每行的格式均为:类型ID号 占用情况 名称
以下图一次打印的部分截图为例:
命名线程后再使用AppHelper查看,启动接收线程后,就可以看到CommRecvTread这个线程,个没有命名的线程为SerialPort程序的主线程。
计算原理及误差说明
CPU占用时间是通过计算一段时间内(AppHelper设置为2000毫秒)CPU空闲tick值与这段时间里CPU运算周期tick值得出。
CPU空闲tick值= CPU空闲tick计数t2 – CPU空闲tick计数t1
CPU总周期tick值= CPU总周期tick计数t2 – CPU总周期tick计数t1
CPU占用 = 1– (CPU空闲tick值/CPU总周期tick值)×
进程或线程的CPU占用,是通过计算一段时间CPU运算周期tick值,和这段周期里Kernel或User运行线程或进程的tick值,通过相除得到。
进程/线程Kernel占用= (进程/线程Kernel运行tick值/CPU总周期tick值)×
进程/线程User占用= (进程/线程User运行tick值/CPU总周期tick值)×
进程/线程CPU占用= 进程/线程Kernel占用 + 进程/线程User占用
打印结果可能会有少量误差,可能由于以下原因:
1、实验值计算到个位,小数部分四舍五入,可能产生细微的误差。
2、理想中的测量情况如下图