1,程序写完之后发现提示3803错误

codesys 地址 变量 数组 codesys怎么定义变量_CoDeSys

2,我把这个全局变量删了会提示另外一个全局变量错误

3,没有头绪,回到这个程序的前一个版本,一点点把后来写的程序加进去,写一点进去就全部编译一次,后来添加某个ton的时候,突然开始提示3808错误

codesys 地址 变量 数组 codesys怎么定义变量_错误3803_02

4,后来注意到一个地方,我在子程序,主程序里定义声明变量的时候,会占用一点内存,具体的可以在编译的时候看到,就是这个

codesys 地址 变量 数组 codesys怎么定义变量_和利时_03

看着好像还比较多,但是每次定义一个新变量的时候,上一项数据就会增加1bytes,而且定义一个新的ton的时候,会一口气增加近20个比特。

如果上面的比率超过百分百,那么就会出现3803错误

5,去手册查到的解释如下:

codesys 地址 变量 数组 codesys怎么定义变量_保持型变量_04

6,解决办法,检查一下程序,把没有用到的变量都删了,特别是ton型的变量


新建变量时,系统可以自动定义。但当变量被删除时,定义语句不会自动删除,继续保留


在编辑器中,因此要注意变量不能定义重复。可使用 “ 工程 ”/“ 查看 ”/“ 未使用变量 ” 命令查找


到这些无用的变量声明。具体使用方法请参见 8.2.3 章节。



7,把一些变量设置为保持类型变量,这个时候,就是第二排数据在变化了

codesys 地址 变量 数组 codesys怎么定义变量_和利时_03

具体来看定义变量时的选项框:就是定义好变量后把后面的保持勾选上

codesys 地址 变量 数组 codesys怎么定义变量_codesys 地址 变量 数组_06


自动定义变量对话框的各项含义,如下所述:


¾ 类别:类型选择。各类型区别请参见表 4-4-3 ,如:希望定义的变量在所有的 POU 中都能


使用,则定义为全局变量,选择类型 VAR_GLOBAL 。


¾ 名字:声明变量的名称,即标识符。关于变量命名的规则,请参见 4.4.1 章节。


¾ 类型:数据类型选择。可以直接在输入框中输入,也可以点击


按钮,然后在弹出的对


话框中选择数据类型。各类数据类型请参见 4.4.2 章节。


¾ 符号表:只有在 “ 类 别 ” 选 择 “VAR_GLOBAL” 时,符号表才可选。默认选项为


“Global_Variables” 。当定义一个全局变量时,在 “ 资源 ” 选项卡中打开 “ 全局变量 ” 文件夹,


可以看到 “Global_Variables” ,双击 “Global_Variables” ,刚定义的全局变量便显示在这里,


如图 4-4-2 所示。


¾ 初始值:变量的初始值。这里可以填入一个与变量数据类型对应的常量,完成变量的初始


化。


¾ 地址:定义变量的地址。


¾ 注释:变量的含义。


保持型变量和常量?


变量自动定义时,在自动定义对话框右下角有两个选项:常量和保持。当选择常量,则将


该变量作为一个常量,程序中无法再改变其数值。当选择保持型变量时,表示将该变量设


置为具有掉电保持功能,该变量存储在 R 存储区。





保持型变量?



在很多工程中,通常需要数据具有掉电保持功能,使 PLC 断电后数据不丢失。在定义变量时,



可以直接定义变量为保持型变量,此时变量自动保存于 R 存储区,具有掉电保持功能。



在自动定义时,在自动定义对话框的右下角,选择“保持”选项,变量就自动定义为保持型变



量。在手动定义时,将变量定义在 VAR_RETAIN 和 END_VAR 之间,也可以定义该变量为掉电保



持变量。



前面讲到存储区( 4.1 章节)时曾提到, M 区的部分地址( %MB300~%MB799 )同样具有掉电



保持功能。将变量定义为保持型变量与将数据放入地址在 %MB300~%MB799 的存储区内,具有相



同的效果。