搜档网
当前位置:搜档网 › 如何使用断点功能调试 STEP 7 程序

如何使用断点功能调试 STEP 7 程序

如何使用断点功能调试 STEP 7 程序
如何使用断点功能调试 STEP 7 程序

Visual Studio调试之断点进阶篇

在上一篇文章Visual Studio调试之断点基础篇里面介绍了什么是断点,INT 是Intel 系列CPU的一个指令,可以让程序产生一个中断或者异常。程序中如果有中断或者异常发生了以后,CPU会中断程序的执行,去一个叫做IDT的部件查找处理这个中断(或者异常)的例程(Handler)。IDT是操作系统在启动的时候初始化的,至于IDT的细节问题,例如什么是IDT,怎样编写一个IDT的例程,怎样初始化IDT,可以去网上搜索一些资料。 总之,这里我们只要知道,CPU在执行程序指令过程中,碰到INT 3中断程序的执行,CPU 然后去IDT表里面找到处理断点的例程入口。这个例程要做的事情就是: 1.先看看机器里面是不是安装了一个调试器—记住,这一步很重要,之所以重要以 后的文章里面会介绍。 2.如果机器里面没有安装调试器,那么操作系统就会终止程序的执行。 3.否则操作系统启动调试器,并将调试器附到进程上。 4.这样,我们才能在调试器里面检查程序内部变量的值。 前面文章里面的INT 3 (或者DebugBreak(),或者Debugger.Break())指令是我们自己在代码里面硬编码进去的,因此我们在Visual Studio里,在相应的代码行里面点一下,出现一个小红球,也就是说Visual Studio在程序指令集某个地方动态地添加了一个INT 3指令。现在的问题来了,Visual Studio是如何在程序中正确找到插入INT 3指令的位置的? 或者更具体一些,我们在源代码(文本文件)里面设置断点的,Visual Studio需要把代码行翻译成在程序指令集中的位置。Visual Studio之所以需要做翻译,是因为通常一行C++或者C#代码都会对应好几行汇编指令。 因此,Visual Studio需要一个额外的文件来执行这个翻译过程,这个额外的文件叫做调试符号文件(Symbols),是由编译器生成的。Visual Studio系列的编译器,不论是C#、https://www.sodocs.net/doc/3611654496.html,还是C++编译器都会生成这个调试符号文件,.pdb 文件。所以如果你花一点时间看看Debug文件夹的话,你就会发现这个文件。 因此我们来看看Visual Studio支持的各种断点,并解释各种断点的实现方式 条件断点 首先我们先看看如何设置条件断点,条件断点有两种,一种是根据触发的次数来设置,另外一种是根据一条预置的条件来设置。 根据触发次数设置 比如说,你有一个循环,循环1000次,你知道有一个BUG总是在500次之后才会出现,因此肯定希望在循环内设置一个断点,但是前面500次都不会触发这个断点,否则连续按500次的F5的确不是一件轻松的差事。

如何高效使用GDB断点

在gdb中,断点通常有三种形式 断点(BreakPoint): 在代码的指定位置中断,这个是我们用得最多的一种。设置断点的命令是break,它通常有如下方式: 可以通过info breakpoints [n]命令查看当前断点信息。此外,还有如下几个配套的常用命令: 观察点(WatchPoint): 在变量读、写或变化时中断,这类方式常用来定位bug。

捕捉点(CatchPoint): 捕捉点用来补捉程序运行时的一些事件。如:载入共享库(动态链接库)、C++的异常等。通常也是用来定位bug。 捕捉点的命令格式是:catch ,event可以是下面的内容 自动删除。 捕捉点信息的查看方式和代码断点的命令是一样的,这里就不多介绍了。 在特定线程中中断 你可以定义你的断点是否在所有的线程上,或是在某个特定的线程。GDB很容易帮你完成这一工作。

break thread break thread if ... linespec指定了断点设置在的源程序的行号。threadno指定了线程的ID,注意,这个ID是GDB分配的,你可以通过"info threads"命令来查看正在运行程序中的线程信息。如果你不指定thread 则表示你的断点设在所有线程上面。你还可以为某线程指定断点条件。如: (gdb) break frik.c:13 thread 28 if bartab > lim 当你的程序被GDB停住时,所有的运行线程都会被停住。这方便你你查看运行程序的总体情况。而在你恢复程序运行时,所有的线程也会被恢复运行。那怕是主进程在被单步调试时。 在特定条件下中断 条件断点的一种特殊场景是在断点命中指定次数后停下来。事实上每个断点都有一个 ignore count, 他是一个正整数。通常情况下它的值为0,所以看不出来它的存在。但是如果它是一个非0值, 那么它将在每次命中后都将 count 减 1,直到它为 0. ignore bnum count 恢复程序运行和单步调试 在gdb中,和调试步进相关的命令主要有如下几条: 参考资料

eclipse断点调试指导

1.进入debug模式(基础知识列表) 1、设置断点 2、启动servers端的debug模式 3、运行程序,在后台遇到断点时,进入debug调试状态 ============================= 作用域功能快捷键 全局单步返回F7 全局单步跳过F6 全局单步跳入F5 全局单步跳入选择Ctrl+F5 全局调试上次启动F11 全局继续F8 全局使用过滤器单步执行Shift+F5 全局添加/去除断点Ctrl+Shift+B 全局显示Ctrl+D 全局运行上次启动Ctrl+F11 全局运行至行Ctrl+R 全局执行Ctrl+U ============================= 1.Step Into (also F5) 跳入 2.Step Over (also F6) 跳过 3.Step Return (also F7) 执行完当前method,然后return跳出此

method 4.step Filter 逐步过滤一直执行直到遇到未经过滤的位置或断点(设置Filter:window-preferences-java-Debug-step Filtering) 5.resume 重新开始执行debug,一直运行直到遇到breakpoint。 例如:A和B两个断点,debug过程中发现A断点已经无用,去除A 断点,运行resume就会跳过A直接到达B断点。 6.hit count 设置执行次数适合程序中的for循环(设置breakpoint view-右键hit count) 7.inspect 检查运算。执行一个表达式显示执行值 8.watch 实时地监视对象、方法或变量的变化 9.我们常说的断点(breakpoints)是指line breakpoints,除了line breakpoints,还有其他的断点类型:field(watchpoint)breakpoint,method breakpoint ,exception breakpoint. 10.field breakpoint 也叫watchpoint(监视点) 当成员变量被读取或修改时暂挂 11.添加method breakpoint 进入/离开此方法时暂挂(Run-method breakpoint) 12.添加Exception breakpoint 捕抓到Execption时暂挂(待续...) 断点属性: 1.hit count 执行多少次数后暂挂用于循环 2.enable condition 遇到符合你输入条件(为ture\改变时)就暂挂 3.suspend thread 多线程时暂挂此线程 4.suspend VM 暂挂虚拟机 13.variables 视图里的变量可以改变变量值,在variables 视图选择变

STEP7常用功能块FC105等介绍

Step7编程常用功能块的使用介绍 1、FC105是处理模拟量(1~5V、4~20MA等常规信号)输入的功能块,在中,打开Libraries\standard library\ Ti-S7 Converting Blocks\fc105,将其调入OB1中,给各个管脚输入地址;如下: 其中,管脚的定义如下: IN---------模拟量模块的输入通道地址,在硬件组态时分配; HI_LIM---现场信号的最大量程值; LO_LIM--现场信号的最小量程值; BIPOLAR—极性设置,如果现场信号为+10V~-10V(有极性信号),则设置为1, 如果现场信号为4MA~20MA(无极性信号);则设置为0;

OUT-------现场信号值(带工程量单位);信号类型是实数,所以要用MD200来存放; RET_V AL-FC105功能块的故障字,可存放在一个字里面。如:MW50; 2、热电偶、热电阻信号的处理,该类信号实际值是通道整数值的1/10; 3、FB41 PID控制模块的使用; PID模块是进行模拟量控制的模块,可以完成恒压、恒温等控制功能在中,打开Libraries\standard library\ PID Control block\FB41,将其调入OB1中,首先分配背景数据块DB41,再给各个管脚输入地址;如下: 4、脉冲输出模块FB43,该模块是将模拟量转换成比率的脉冲输出。Libraries\standard library\ PID Control block\FB43,将其调入OB1中,首先分配背景数据块DB43,再给各个管脚输入地址;如下:

断点回归设计的步骤

近在做一个需要利用断点回归设计的研究。为了保证实践的规范性,并且避免未来审稿中可能面对的质疑,花了几天时间梳理了一下断点回归设计的标准操作,整理出来,供来人参考。本文参考了三篇文献,先摆在这里,建议大家去读原文: 第一篇:Lee, and Lemieux, 2010," Regression Discontinuity Designs in Economics ",Journal of Economic Literature, Vol. 48: 281–355. 第二篇:Pinotti, Paolo. "Clicking on heaven's door: The effect of immigrant legalization on crime." American Economic Review107.1 (2017): 138-68. 第三篇:Thoemmes, Felix, Wang Liao, and Ze Jin. "The Analysis of the Regression-Discontinuity Design in R." Journal of Educational and Behavioral Statistics 42.3 (2017): 341-360. 1.断点回归常规操作流程 第1步检查配置变量(assignment variable,又叫running variable、forcing variable)是否被操纵。这里的配置变量,其实就是RD中决定是否进入实验的分数(Score),是否被操纵的意思就是,是否存在某种跳跃性的变化。在实际操作中有两种方式来检验,一是画出配置变量的分布图。最直接的方法,是使用一定数量的箱体(bin),画出配置变量的历史直方图(histogrm)。为了观察出分布的总体形状,箱体的宽度要尽量小。频数(frequencies)在箱体间的跳跃式变化,能就断点处的跳跃是否正常给我们一些启发。从这个角度来说,最好利用核密度估计做出一个光滑的函数曲线。二是利用McCrary(2008)的核密度函数检验。(命令是DCdensity,介绍见陈强编著的《高级计量经济学及Stata应用》(第二版)第569页), Frandsen (2013)提出了一种新的检验方法,但目前被使用 的并不多。 第2步画因变量均值对配置变量的散点图,并选择带宽(bandwidth selection)。首先,挑选出一定数目的箱体,求因变量在每个箱体内的均值,画出均值对箱体中间点的散点图。一定要画每个箱体平均值的图。如果直接画原始数据的散点图,那么噪音太大,看不出潜在函数的形状。不要画非参数估计的连续统,因为这个方法自然地倾向于给出存在断点的印象,尽管总体中本来不存在这样的断点。然后,选择第三步骤中需要的带宽。Lee和Lemieux(2010)介绍了两种确定最优带宽的方法:拇指规则法(rule of thumb)和交叉验证法(CV)。还有另外两种比较受关注的方法:IK法和CCT法。IK法以Imbens和Kalyanaraman两个人命名,对应着论文Imbens和Kalyanaraman(2012)。这篇论文发表在Review of Economic Studies,Lee和Lemieux(2010)文中提到过此文2009年的NBER工作论文版。CCT法以Calonico、Cattaneo和Titiunik三个人命名,对应着论文Calonico、Cattaneo和Titiunik(2014a)。用非参数法做断点回归估计时的stata命令rd,就是用IK发确定最优带宽。stata命令rdrobust、rdbwselect,提供CV、IK、CCT三种不同的最优带宽计算方法选项。但是实际上rdrobust中已经更新了IK带宽选择函数,更新的算法与IK算法的区别有待考证,后续会补充。实际操作中一般是两种算法都会采纳,并汇报参数估计对带宽选择是不敏感的。

STEP7常用功能块FC105、FB41、FB43

目的:FC105的使用 1、FC105是处理模拟量(1~5V、4~20MA等常规信号)输入的功能块,在中,打开Libraries\standard library\ Ti-S7 Converting Blocks\fc105,将其调入OB1中,给各个管脚输入地址;如下: 其中,管脚的定义如下: IN---------模拟量模块的输入通道地址,在硬件组态时分配; HI_LIM---现场信号的最大量程值; LO_LIM--现场信号的最小量程值; BIPOLAR—极性设置,如果现场信号为+10V~-10V(有极性信号),则设置为1, 如果现场信号为4MA~20MA(无极性信号);则设置为0;

OUT-------现场信号值(带工程量单位);信号类型是实数,所以要用MD200来存放; RET_V AL-FC105功能块的故障字,可存放在一个字里面。如:MW50; 2、热电偶、热电阻信号的处理,该类信号实际值是通道整数值的1/10; 3、FB41 PID控制模块的使用; PID模块是进行模拟量控制的模块,可以完成恒压、恒温等控制功能在中,打开Libraries\standard library\ PID Control block\FB41,将其调入OB1中,首先分配背景数据块DB41,再给各个管脚输入地址;如下: 4、脉冲输出模块FB43,该模块是将模拟量转换成比率的脉冲输出。Libraries\standard library\ PID Control block\FB43,将其调入OB1中,首先分配背景数据块DB43,再给各个管脚输入地址;如下:

5、果现场是阀门等执行机构,只需要将通道地址输入PID的输出通道,如下:

WinDBG技巧:设断点命令详解

WinDBG技巧:设断点命令详解(bp, bu, bm, ba 以及bl, bc, bd, be) WinDBG 提供了多种设断点的命令:bp, bu, bm, ba bp命令是在某个地址下断点,可以bp 0x7783FEB 也可以bp MyApp!SomeFuncti on。对于后者,WinDBG 会自动找到MyApp!SomeFunction对应的地址并设置断点。但是使用bp的问题在于:1)当代码修改之后,函数地址改变,该断点仍然保持在相同位置,不一定继续有效;2)WinDBG 不会把bp断点保存工作空间中。所以,我比较喜欢用bu 命令。 bu 命令是针对某个符号下断点。比如bu MyApp!SomeFunction。在代码被修改之后,该断点可以随着函数地址改变而自动更新到最新位置。而且bu 断点会保存在Win Dbg工作空间中,下次启动Windbg 的时候该断点会自动设置上去。 另外,在模块没有被加载的时候,bp 断点会失败(因为函数地址不存在),而bu 断点则可以成功。新版的WinDBG中bp失败后会自动被转成bu 。 bm命令也是针对符号下断点。但是它支持匹配表达式。很多时候你下好几个断点。比如,把MyClass 所有的成员函数都下断点:bu MyApp!MyClass::*,或者把所有以CreateWindow开头的函数都下断点:bu user32!CreateWindow* 。 以上三个命令是对代码下断点,我们还可以对数据下断点。 ba命令就是针对数据下断点的命令,该断点在指定内存被访问时触发。命令格式为 ba Access Size [地址] Access 是访问的方式,比如e(执行),r(读/写),w(写) Size是监控访问的位置的大小,以字节为单位。值为1、2或4,还可以是8(64位机)。 比如要对内存0x0483DFE进行写操作的时候下断点,可以用命令ba w4 0x0483DFE 这里顺便提以下其他断点命令: bl列出所有断点

step7 PID功能块详解

PID控制软件包包括以下几部分 9 CONT_C、 CONT_S和PULSEGEN功能模块 PID控制的概念 PID控制软件包里的功能块包括连续控制功能块CONT_C,步进控制功能块CONT_S以及具有脉冲调制功能的PULSEGEN。控制模块利用其所提供的全部功能可以实现一个纯软件控制器。 循环扫描计算过程所需的全部数据存储在分配给FB的数据区里,这使得无限次调用FB变成可能。功能块PULSEGEN一般用来连接CONT_C,以使其可以产生提供给比例执行器的脉冲信号输出。 基本功能在功能块组成的控制器中,有一系列你可以通过设置使其有效或无效的子功能。除了实际采用PID算法的控制器外,还包括给定点值处理、过程变量处理以及调整操作值范围等功能。应用用两个控制模块组成控制器就可以突破局限的特定应用。控制器的性能和处理速度只与所采用的CPU性能有关。对于任意给定的CPU,控制器的数量和每个控制器被调用的频率是相互矛盾的。控制环执行的速度,或者说,在每个时间单元内操作值必须被更新的频率决定了可以安装的控制器的数量。对要控制的过程类型没有限制,迟延系统(温度、液位等)和快速系统(流量、电机转速等)都可以作为控制对象。过程分析注意:控制过程的静态性能(比例)和动态性能(时间延迟、死区和重设时间等)对被控过程控制器的构造和设计以及静态(比例)和动态参量(积分和微分)的维数选取有着很大的影响。准确地了解控制过程的类型和特性数据是非常必要的。控制器的选取注意:控制环的特性由被控过程或被控机械的物理特性决定,并且我们可以改变的程度不是很大。只有选用了最适合被控对象的控制器并使其适应过程的响应时间,才能得到较高的控制质量。生成控制器不用通过编程你就可以生成控制器的大部分功能(构造、参数设置和在程序中的调用等),前提是你掌握了STEP 7的编程知识。在线帮助 STEP 7的在线帮助同样也可以为你提供各种功能块的帮助信息进一步帮助 PID控制器是标准控制器的子集,想得到标准控制器进一步的资料,请参阅/350/参数设置调用参数分配用户界面在Windows95下按照下面的选项调用PID控制器的参数设置用户界面Start—SIMATIC_Step 7—PID Control ParameterAssignment 在第一个对话框中你可以打开一个已经存在的CONT_C或CONT_S的背景数据块,或者你新建一个数据块作为功能的背景数据块。如果你新建了一个新的背景数据块,你会被提示将这个数据块分配给某一个功能块。FB43 PULSEGEN没有参数设置的界面,你必须用STEP 7的工具给其分配参数。在线帮助当你给控制模块设置参数时可以使用参数设置用户界面的在线帮助,你可以以三种方式调用在线帮助 9 用菜单选项中的Help 9 按下F1键 9 按下参数设置用户界面里的帮助按钮用功能块FB41“CONT_C”实现连续控制简介 在SIMATIC S7 可编程控制器上,功能块FB41用来控制具有连续输入输出的技术过程。 在参数设置过程中,你可以通过参数设置来激活或取消激活PID控制的某些子功能来设计适应过程需要的控制器应用你可以将其作为一个给定点PID控制器,或者在多环路控制中作为串级、混合或比率控制器。控制器的算法是基于具有模拟输入信号的采样PID控制。如果扩展需要的话可以引入一个脉冲发生器,来产生具有脉宽调制的操作值输出,以提供给带有比例执行器的两级或三级步进控制器。描述除了给定点和过程变量分支的功能外,FB自己就可以实现一个完整的具有连续操作值输出并且具有手动改变操作值功能的PID控制器,下面你会找到各子功能的详细描述

STVD在调试的时候出现无法设置断点的问题

STVD在调试的时候出现无法设置断点的问题,提示One or more breakpoints are not positioned in valid files (no debug information or not a project file) --------------------------- ST Visual Develop --------------------------- One or more breakpoints are not positioned in valid files (no debug information or not a project file). These breakpoints have been removed. ---------------------------一个或多个断点未放置在有效文件(没有调试信息,或者不是一个项目文件)。这些断点已被删除(谷歌翻译)。 上图,如果点击确定,设置的断点便被清除,同时也会发现,右侧的反汇编窗口不能同时显示具体的汇编信息是由那句C语句生成的。 如果要设置断点,需要在Debug环境下才能放置断点。在Release环境下可以进行在线仿真,但是不能放置断点,并且仿真暂停的时候,也不知道程序停在了什么地方,不能进行单步调试等等。如下图:

1.一般情况下,我们新建的工程,都是在Release环境下建工程。并且project>settings中, 只在Release环境的设置,忽略了Debug的设置。如果在Release环境下进行了其他设置,同样的Debug下也要同样的设置。不然在调试环境下,无法通过编译,更不用提在线仿真,设置断点的问题。 2.一般进行程序编写编译的时候在Release环境中操作,此时可以进行在线仿真,但是无 法设置断点,给程序的调试带来很大的障碍,STVD环境下的设置方法如下,打开 project>settings,如下如: 此处默认设置,一般不做更改,是为了避免最后发行使用的程序忘记修改此处,避免编译的程序不是最优的。 在Debug环境下,如下图:

od破解调试秘籍断点

拦截窗口: bp CreateWindow 创建窗口 bp CreateWindowEx(A) 创建窗口 bp ShowWindow 显示窗口 bp UpdateWindow 更新窗口 bp GetWindowText(A) 获取窗口文本 拦截消息框: bp MessageBox(A) 创建消息框 bp MessageBoxExA 创建消息框 bp MessageBoxIndirect(A) 创建定制消息框 拦截警告声: bp MessageBeep 发出系统警告声(如果没有声卡就直接驱动系统喇叭发声) 拦截对话框: bp DialogBox 创建模态对话框 bp DialogBoxParam(A) 创建模态对话框 bp DialogBoxIndirect 创建模态对话框 bp DialogBoxIndirectParam(A) 创建模态对话框 bp CreateDialog 创建非模态对话框 bp CreateDialogParam(A) 创建非模态对话框 bp CreateDialogIndirect 创建非模态对话框 bp CreateDialogIndirectParam(A) 创建非模态对话框 bp GetDlgItemText(A) 获取对话框文本 bp GetDlgItemInt 获取对话框整数值 拦截剪贴板: bp GetClipboardData 获取剪贴板数据 拦截注册表: bp RegOpenKey(A) 打开子健 bp RegOpenKeyEx 打开子健 bp RegQueryValue(A) 查找子健 bp RegQueryValueEx 查找子健 bp RegSetValue(A) 设置子健 bp RegSetValueEx(A) 设置子健 功能限制拦截断点: bp EnableMenuItem 禁止或允许菜单项 bp EnableWindow 禁止或允许窗口 拦截时间:

STEP7 常用功能块(FC块)-推荐下载

常用功能块(FC105、FB41、FB43)课程 目的:FC105的使用 1、FC105是处理模拟量(1~5V、4~20MA等常规信号)输入的功能块,在中,打开Libraries\standard library\ 中,给各个管脚输入地址;如下: Ti-S7 Converting Blocks\fc105,将其调入OB1 IN---------模拟量模块的输入通道地址,在硬件组态时分配; HI_LIM---现场信号的最大量程值; LO_LIM--现场信号的最小量程值; BIPOLAR—极性设置,如果现场信号为+10V~-10V(有极性信号),则设置为1, 如果现场信号为4MA~20MA(无极性信号);则设置为0;

OUT-------现场信号值(带工程量单位);信号类型是实数,所以要用MD200来存放; RET_VAL-FC105功能块的故障字,可存放在一个字里面。如:MW50; ; 2、热电偶、热电阻信号的处理,该类信号实际值是通道整数值的1/10 PID模块是进行模拟量控制的模块,可以完成恒压、恒温等控制功能在中,打开Libraries\standard library\ ,再给各个管脚输入地址;如下: PID Control block\FB41,将其调入OB1中,首先分配背景数据块DB41 4、脉冲输出模块FB43,该模块是将模拟量转换成比率的脉冲输出。Libraries\standard library\ PID Control block\FB43,将其调入OB1中,首先分配背景数据块DB43,再给各个管脚输入地址;如下:

将程序下载调试,看PID 的温度调节作用如何?如果控制的不好,改变P 、I 参数!5、如果现场是阀门等执行机构,只需要将通道地址输入PID 的输出通道,如下:

西门子STEP7常用功能块说明

西门子STEP7常用功能块说明【工控老鬼】 (2012-10-26 09:02:55) 转载▼ 标签: 分类:PLC plc培训 plc实例 感悟人生 工控老鬼 深圳plc培训 1. SFB0 "CTU" SFB1 "CTD" SFB2 "CTUD" SFB4 "TON" SFB5 TOF 兼容IEC61131-3的计数和计时功能块 2. SFB41 "CONT_C" SFB42 "CONT_S" SFB43 "PULSEGEN" 用于PID控制 41---连续 42---离散 43---用于将一个模拟量转化为与之对应的周期性开关量脉冲信号,该脉冲的 占空比与模拟量的数值大小成正比. 3. SFC0 "SET_CLK" SFC1 "READ_CLK" 用于读写PLC中的系统时间 4. SFC14 "DPRD_DAT" SFC15 "DPWR_DAT" 用于读写DP从站中的一致性数据如:读写用DP通讯的变频器中的控制字 5. SFC20 "BLKMOV" SFC21 "FILL" 块拷贝,块填充 6. SFC46 "STP" SFC47 "WAIT" SFC46 使PLC进入STOP状态,挺有用的:可以当软件陷阱,或利用上位控制PLC停机7. SFC60 "GD_SND" SFC61 "GD_RCV" MPI的GD通讯 8.IEC Function Blocks FC22 "LIMIT" FC25 "MAX" FC27 "MIN" FC22 ---限幅输出 FC25,FC27 --- 3个数比大小 9.PID Control Blocks

FB41/42/43 同SFB41 "CONT_C" SFB42 "CONT_S" SFB43 "PULSEGEN" FB58 "TCON_CP" FB59 "TCONT_S" 用于温度控制PID 10.Ti-S7 Converting Blocks FC105 "SCALE" FC106 "UNSCALE" 模拟量输入输出的比例和数据类型转换 【工控老鬼】 (2012-10-26 09:02:55) 转载▼ 分类:PLC 标签: plc培训 plc实例 感悟人生 工控老鬼 深圳plc培训 1. SFB0 "CTU" SFB1 "CTD" SFB2 "CTUD" SFB4 "TON" SFB5 TOF 兼容IEC61131-3的计数和计时功能块 2. SFB41 "CONT_C" SFB42 "CONT_S" SFB43 "PULSEGEN" 用于PID控制 41---连续 42---离散 43---用于将一个模拟量转化为与之对应的周期性开关量脉冲信号,该脉冲的 占空比与模拟量的数值大小成正比. 3. SFC0 "SET_CLK" SFC1 "READ_CLK" 用于读写PLC中的系统时间 4. SFC14 "DPRD_DAT" SFC15 "DPWR_DAT" 用于读写DP从站中的一致性数据如:读写用DP通讯的变频器中的控制字 5. SFC20 "BLKMOV" SFC21 "FILL" 块拷贝,块填充 6. SFC46 "STP" SFC47 "WAIT" SFC46 使PLC进入STOP状态,挺有用的:可以当软件陷阱,或利用上位控制PLC停机7. SFC60 "GD_SND" SFC61 "GD_RCV" MPI的GD通讯

keil c 的在线调试与断点设置

Keil 的调试命令、在线汇编与断点设置 上一讲中我们学习了如何建立工程、汇编、连接工程,并获得目标代码,但是做到这一步仅仅代表你的源程序没有语法错误,至于源程序中存在着的其它错误,必须通过调试才能发现并解决,事实上,除了极简单的程序以外,绝大部份的程序都要通过反复调试才能得到正确的结果,因此,调试是软件开发中重要的一个环节,这一讲将介绍常用的调试命令、利用在线汇编、各种设置断点进行程序调试的方法,并通过实例介绍这些方法的使用。 一、常用调试命令 在对工程成功地进行汇编、连接以后,按Ctrl+F5 或者使用菜单 Debug->Start/Stop Debug Session 即可进入调试状态,Keil 内建了一个仿真CPU 用来模拟执行程序,该仿真CPU 功能强大,可以在没有硬件和仿真机的情况下进行程序的调试,下面将要学的就是该模拟调试功能。不过在学习之前必须明确,模拟毕竟只是模拟,与真实的硬件执行程序肯定还是有区别的,其中最明显的就是时序,软件模拟是不可能和真实的硬件具有相同的时序的,具体的表现就是程序执行的速度和各人使用的计算机有关,计算机性能越好,运行速度越快。 进入调试状态后,界面与编缉状态相比有明显的变化,Debug 菜单项中原来不能用的命令现在已可以使用了,工具栏会多出一个用于运行和调试的工具条,如图1 所示,Debug 菜单上的大部份命令可以在此找到对应的快捷按钮,从左到右依次是复位、运行、暂停、单步、过程单步、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析、工具按钮等命令。 接着执行下一行程序,中间不停止,这样程序执行的速度很快,并可以看到该 段程序执行的总体效果,即最终结果正确还是错误,但如果程序有错,则难 以确认错误出现在哪些程序行。单步执行是每次执行一行程序,执行完该行 程序以后即停止,等待命令执行下一行程序,此时可以观察该行程序执行完 以后得到的结果,是否与我们写该行程序所想要得到的结果相同,借此可以 找到程序中问题所在。程序调试中,这两种运行方式都要用到。 使用菜单STEP 或相应的命令按钮或使用快捷键F11 可以单步执行程序, 使用菜单STEP OVER 或功能键F10 可以以过程单步形式执行命令,所谓 过程单步,是指将汇编语言中的子程序或高级语言中的函数作为一个语句来

STEP7常用功能块说明

STEP7常用功能块说明 STEP7 常用功能块说明 1. SFB0 "CTU" SFB1 "CTD" SFB2 "CTUD" SFB4 "TON" SFB5 TOF 兼容IEC61131-3的计数和计时功能块 2. SFB41 "CONT_C" SFB42 "CONT_S" SFB43 "PULSEGEN" 用于PID控制 41---连续 42---离散 43---用于将一个模拟量转化为与之对应的周期性开关量脉冲信号,该脉冲的占空比与模拟量的数值大小成正比. 3. SFC0 "SET_CLK" SFC1 "READ_CLK" 用于读写PLC中的系统时间 4. SFC14 "DPRD_DAT" SFC15 "DPWR_DA T" 用于读写DP从站中的一致性数据如:读写用DP通讯的变频器中的控制字 5. SFC20 "BLKMOV" SFC21 "FILL" 块拷贝,块填充 6. SFC46 "STP" SFC47 "WAIT" SFC46 使PLC进入STOP状态,挺有用的:可以当软件陷阱,或利用上位控制PLC停机 7. SFC60 "GD_SND" SFC61 "GD_RCV" MPI的GD通讯 8.IEC Function Blocks FC22 "LIMIT" FC25 "MAX" FC27 "MIN" FC22 ---限幅输出 FC25,FC27 --- 3个数比大小 9.PID Control Blocks FB41/42/43 同SFB41 "CONT_C" SFB42 "CONT_S" SFB43 "PULSEGEN" FB58 "TCON_CP" FB59 "TCONT_S" 用于温度控制PID 10.Ti-S7 Converting Blocks FC105 "SCALE" FC106 "UNSCALE" 模拟量输入输出的比例和数据类型转换 11、SFC1 读取系统时钟 12、SFC3 启动/停止运行时间定时器 13、OB1:主程序循环

PLC,step7 常用逻辑块,逻辑位

描述 ---| |--- 存储在指定<地址>的位值为"1"时,(常开触点)处于闭合状态。触点闭合时,梯形图轨道能流流过触点,逻辑运算结果(RLO) ="1"。 否则,如果指定<地址>的信号状态为"0",触点将处于断开状态。触点断开时,能流不流过触点,逻辑运算结果(RLO) ="0"。 串联使用时,通过AND逻辑将---| |--- 与RLO位进行链接。并联使用时,通过OR逻辑将其与RLO位进行链接。 描述 ---| / |--- 存储在指定<地址>的位值为"0"时,(常闭触点)处于闭合状态。触点闭合时,梯形图轨道能流流过触点,逻辑运算结果(RLO) ="1"。 否则,如果指定<地址>的信号状态为"1",将断开触点。触点断开时,能流不流过触点,逻辑运算结果(RLO) ="0"。 串联使用时,通过AND逻辑将---| / |--- 与RLO位进行链接。并联使用时,通过OR逻辑将其与RLO位进行链接。

描述 ---|NOT|--- (能流取反)取反RLO位。

描述 ---( ) (输出线圈)的工作方式与继电器逻辑图中线圈的工作方式类似。如果有能流通过线圈(RLO = 1),将置位<地址>位置的位为"1"。如果没有能流通过线圈(RLO = 0),将置位<地址>位置的位为"0"。只能将输出线圈置于梯级的右端。可以有多个(最多16个)输出单元(请参见实例)。使用---|NOT|--- (能流取反)单元可以创建取反输出。 描述

只有在前面指令的RLO为"1"(能流通过线圈)时,才会执行---( R ) (复位线圈)。如果能流通过线圈(RLO为"1"),将把单元的指定<地址>复位为"0"。RLO为"0"(没有能流通过线圈) 将不起作用,单元指定地址的状态将保持不变。<地址>也可以是值复位为"0"的定时器(T编号)或值复位为"0"的计数器(C编号)。 MCR (主控继电器)依存关系 只有将复位线圈置于激活的MCR区内时,才会激活MCR依存。在激活的MCR区内,如果MCR处于接通状态并且复位线圈有能流通过,将把寻址位状态复位为"0"。如果MCR处于断开状态,则无论能流状态如何,单元指定地址的当前状态均保持不变。

OD设置断点函数

常用断点 拦截窗口: bp CreateWindow 创建窗口 bp CreateWindowEx(A) 创建窗口 bp ShowWindow 显示窗口 bp UpdateWindow 更新窗口 bp GetWindowText(A) 获取窗口文本 bp ShellExecuteA获取网站转向地址 拦截消息框: bp MessageBox(A) 创建消息框 bp MessageBoxExA 创建消息框 bp MessageBoxIndirect(A) 创建定制消息框 bp IsDialogMessageW 拦截警告声: bp MessageBeep 发出系统警告声(如果没有声卡就直接驱动系统喇叭发声) 拦截对话框: bp DialogBox 创建模态对话框 bp DialogBoxParam(A) 创建模态对话框 bp DialogBoxIndirect 创建模态对话框 bp DialogBoxIndirectParam(A) 创建模态对话框 bp CreateDialog 创建非模态对话框 bp CreateDialogParam(A) 创建非模态对话框 bp CreateDialogIndirect 创建非模态对话框 bp CreateDialogIndirectParam(A) 创建非模态对话框 bp GetDlgItemText(A) 获取对话框文本 bp GetDlgItemInt 获取对话框整数值 拦截剪贴板: bp GetClipboardData 获取剪贴板数据 拦截注册表: bp RegOpenKey(A) 打开子健 bp RegOpenKeyEx 打开子健 bp RegQueryValue(A) 查找子健 bp RegQueryValueEx 查找子健 bp RegSetValue(A) 设置子健 bp RegSetValueEx(A) 设置子健 功能限制拦截断点: bp EnableMenuItem 禁止或允许菜单项 bp EnableWindow 禁止或允许窗口

如何设置断点

难怪很多前辈说调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。

{ int k = i * 10 - 2; //B SendTo(k); //C int tmp = DoSome(i); //D int j = i / tmp; //E } } 执行此函数,程序崩溃于E行,发现此时tmp为0,假设tmp本不应该为0,怎么这个时候为0呢?所以最好能够跟踪此次循环时DoSome函数是如何运行的,但由于是在循环体内,如果在E行设置断点,可能需要按F5(GO)许多次。这样手要不停的按,很痛苦。使用VC6断点修饰条件就可以轻易解决此问题。步骤如下。 1 Ctrl+B打开断点设置框,如下图: Figure 1设置高级位置断点 2 然后选择D行所在的断点,然后点击condition按钮,在弹出对话框的最下面一个编辑框中输入一个很大数目,具体视应用而定,这里1000就够了。 3 按F5重新运行程序,程序中断。Ctrl+B打开断点框,发现此断点后跟随一串说明:...487 times remaining。意思是还剩下487次没有执行,那就是说执行到513(1000-487)次时候出错的。因此,我们按步骤2所讲,更改此断点的skip 次数,将1000改为513。 4 再次重新运行程序,程序执行了513次循环,然后自动停在断点处。这时,我们就可以仔细查看DoSome是如何返 回0的。这样,你就避免了手指的痛苦,节省了时间。 再看位置断点其他修饰条件。如Figure 1所示,在“Enter the expression to be evaluated:”下面,可以输入一些条件,当这些条件满足时,断点才启动。譬如,刚才的程序,我们需要i为100时程序停下来,我们就可以输入在编辑框中输入“i==100”。另外,如果在此编辑框中如果只输入变量名称,则变量发生改变时,断点才会启动。这对检测一个变量何时被修改很

STEP7中功能块属性的说明

STEP7 Description of STEP7 function block property

IA&DT&BT Service & Support Page 2-8 Property STEP7 Key Words Property STEP7

STEP7 (1) DB is write-protected in the PLC: (4) Standard block: (4) Know-how protection: (5) Unlinked: (7) Non Retain: (7) Block read-only: (7) IA&DT&BT Service & Support Page 3-8

STEP7 OB FC FB DB OB FC FB DB “Object Property”, 1 FC DB is write-protected in the PLC: DB DB DB DB CPU OB121 CPU Standard block: Know how protection Name Version Family Author IA&DT&BT Service & Support Page 4-8

IA&DT&BT Service & Support Page 5-8 Know-how protection: “File” “Generate source” 2 “Sources” “Object name” 3 2 3 FC2 FC2 “Source” “BB” “BB” 4 “KNOW_HOW_PROTECT” “File” “Compile” “Block” FC2 FC2 “Block” FC2 FC2 FC2

STEP7常用功能块教程

STEP7常用功能块教程 1、 FC105是处理模拟量(1~5V、4~20MA等常规信号)输入的功能块,在 中,打开Libraries\stan dard library\ Ti-S7 Converting Blocks\fc105,将其调入OB1中,给各个管脚输入地址;如下:

其中,管脚的定义如下: IN---------模拟量模块的输入通道地址,在硬件组态时分配; HI_LIM---现场信号的最大量程值; LO_LIM--现场信号的最小量程值; BIPOLAR—极性设置,如果现场信号为+10V~-10V(有极性信号),则设置为1, 如果现场信号为4MA~20MA(无极性信号);则设置为0; OUT-------现场信号值(带工程量单位);信号类型是实数,所以要用MD200来存放; RET_VAL-FC105功能块的故障字,可存放在一个字里面。如:MW50; 2、 热电偶、热电阻信号的处理,该类信号实际值是通道整数值的1/10; 3、 FB41 PID控制模块的使用; PID模块是进行模拟量控制的模块,可以完成恒压、恒温等控制功能 在 中,打开Libraries\s tandard library\ PID Control block\FB41,将其调入OB1中,首先分配背景数据块DB41,再给各个管脚输入地址;如下:

4、脉冲输出模块FB43,该模块是将模拟量转换成比率的脉冲输出。Libraries\standard libra ry\ PID Control block\FB43,将其调入OB1中,首先分配背景数据块DB43,再给各个管脚输入地址; 如下:

相关主题