命令:结帐 象征: 功能 :该命令打开 查看 对话。在那里,您可以签出存储在 SVN 存储库中的项目作为工作副本。 称呼 : 项目 → SVN 菜单 对话框:结帐 表 6 . SVN 仓库的 URL SVN 仓库中项目的 URL 例子: https://svnserver/repository/trunk/ControlABC.project 提示:一旦指定了有效的 SVN 存储库,您可以单击相邻
入门 程序 PLC_PRG PROGRAM PLC_PRG VAR iVar : INT; rSin : REAL; rVar : REAL; END_VAR iVar := iVar + 1; iVar := iVar MOD 33; rVar := rVar + 0.1; rSin := 30 * SIN(rVar); 要求:应用程序正在运行 PLC_PRG PLC 上的程序。 在设备树中,选
对话框:选项 - SVN 设置 标签:常规 象征: 功能 :该选项卡包括基本设置 CODESYS SVN . 称呼 : 工具 → 选项 菜单 表 37 . 自动锁定和合并 合并 . 命令的行为 更新 , 合并 , 或者 转变 , 当双方(工作副本和 SVN 存储库)都从基本版本更改时 将所有冲突的更改标记为冲突 :对象不会自动合并。所有有冲突的更改都被标记为“冲突”,即使其中一些可以自动合并。 合
对象:SVN_VERSION_INFO 象征: 该对象包含项目的 SVN 元数据作为变量列表中的全局常量或变量。它位于 POU 看法。您可以从全局常量或变量中调用应用程序中的特定数据。通过调用特定的数据,还可以减少控制器上的内存使用。 . 为此目的提供了 SVN 元数据,细分为多个全局变量列表 (GVL): SVN_VERSION_INFO SVN_Info_Summary SVN_Info_Su
SA0021:传输临时变量的地址 检测临时变量(在堆栈上)到非临时变量的地址分配 理由:函数或方法的局部变量是在堆栈上创建的,它们仅在处理函数或方法时才存在。如果一个指针在处理完方法或函数后指向这种变量,那么你可以使用这个指针访问未定义的内存,或者访问另一个函数中不正确的变量。应不惜一切代价避免这种情况。 重要性:高 例 32 . 例子 FUNCTION TempVarInFUNC : DWORD
属性:nameprefix 该属性为结构化数据类型的变量定义前缀。前缀必须添加到此类型声明的变量的标识符之前。这 静态分析 检查此命名约定。 插入位置 :在声明结构化数据类型之前的行中 句法 : {attribute 'nameprefix' := '<prefix>'} 例子 在以下示例中,Static Analysis 为 pB 发出一条消息,因为变量名称不以“point”开头。 {attri
SA0026: 可能的截断字符串 检测未使用足够字符串长度的字符串分配和字符串初始化 理由:当分配不同长度的字符串时,字符串可能会被截断。这可能会产生意想不到的结果。 重要性:中等 例 37 . 例子 PROGRAM PLC_PRG VAR strVar1 : STRING[10]; strVar2 : STRING[6]; strVar3 : STRING[6] := 'abcdefghi';
SA0073:使用不充分的计数器变量 检测非临时变量的使用 FOR 循环。 理由:这是一个性能警告。每次调用 POU 时都会初始化一个计数器变量。您可以将此变量创建为临时变量 ( VAR_TEMP )。访问它可能会更快,并且该变量不会占用任何永久内存。 重要性:中等 PLCopen规则:CP21/L13 例 80 . 例子 PROGRAM PLC_PRG VAR nIndex : INT; iVa
SA0076: 缺少枚举常量 确定每个枚举常量是否用作条件 CASE 语句并在 a 中查询 CASE 分支。 理由:防御性编程需要处理枚举的所有可能值。如果特定枚举值不需要执行操作,则应添加注释以明确指出这一点。然后,代码的读者很清楚,该值并没有被简单地遗忘。 重要性:低 例 82 . 例子 TYPE My_Enum : ( red := 1, blue := 2, green := 3, bla
SA0077:类型与 CASE 表达式不匹配 检测条件数据类型与条件数据类型不匹配的代码位置 CASE 分支 理由:如果数据类型之间 CASE 变量和 CASE 本身不匹配,则这可能表示错误。 重要性:低 例 83 . 例子 TYPE My_Enum : ( eins := 1, zwei := 2, drei := 3, vier := 4 ); END_TYPE PROGRAM PLC_PRG