登录
首页 PLC论坛 西门子SIEMENS
回帖 发帖
正文

主题:S7-300 数据块数据类型问题 麻烦高手么解决下,在此谢谢了

点击:1139 回复:9

S7-300中  DB2数据块中建立的 名称“A的数据类型是DINT”,但是为什么程序中浮点数加法运算时候,他的浮点数加法引脚是浮点数类型,为什么DB2.DBD2是DINT类型,还可以填进去,还可以传送浮点数??????
为什么呢?按我想的数据类型不匹配就会报错啊?
大神么解释下谢谢了
附件 DB2.jpg
附件 DB2-2.jpg
最后修改:2020/10/29 17:36:07
20-10-29 17:34
它认为你双整当浮点用.
20-10-29 19:50

引用 pqsh 在 2020/10/29 19:50:34 发言【内容省略】

双整数问题与浮点数数据类型都不一样呢,双整数写不了浮点数!
s7-200里数据类型不同就是报错,
20-10-29 21:01
输入接口给的是地址,双字地址
20-10-29 22:56

引用 yinguiyao 在 2020/10/29 22:56:07 发言【内容省略】

虽然是双字存储,但是我DB1.DBD2已经定义为双整数类型了,而ADD-R加法是需要浮点数类型,即便去做加法现在是双整数不是浮点数,为什么不报错呢?
哪怕是DB1.DBD2转换为浮点数再计算也可以理解,因为数据类型一致了,但是问题没有转换现在
最后修改:2020/10/30 8:32:11
20-10-30 08:30

引用 byf394127375 在 2020/10/29 21:01:14 发言【内容省略】

编程里有一种叫强类型检验.看似高大上,但是少了灵活性.对比的是C和后现代编程语言.
提2个问题,你当怎么解决:
1.不是你说的db.dbd, md没类型定义, 既作为dword,又是dint,还可以是real(float). 当然有的地方区分了, dword写成mdw, dint写成mdi, 浮点写成mf.
2.当我把一个dword组装成一个浮点, 记住组装和转换是不一样的, 那就得增加一条move(dword,real)的指令, 要不然实现不了.
20-10-30 09:17
最近玩欧姆龙NJ,全局变量定义一个变量D_0,WORD,如果我想用其中一个位还不行,在CJ CP编程是随意的,感觉太严格好麻烦的.
只有做个联合体,表情
还是比较怀念CP CJ 编程,绝对地址编程,bit word dword随意组合用
20-10-31 10:48
数据类型的隐形转换吧。梯形图的PLC程序指令很多支持变量数据类型的自动隐形转换功能。这大概与PLC操作系统有关。
S7-300/400、1200、1500好像都支持。
20-10-31 20:05
这是地址编程的方式,DB2.DBD2当成绝对地址在使用,只要符合它的长度类型,它都可以使用的。
如果你使用符号编程"aa".A,我想它不会让你编译通过或者直接显示红色吧。
20-11-02 18:28
建议按照要求的数据类型。好像又有碰到过这种情况:有时候更改了东西或者什么操作,再保存,就会变成“红色”框了。
20-11-03 16:24

工控新闻

更多新闻资讯