用西门子226cpuPORT0做modbus从站时发现的问题,请教时怎么回事? 点击:116 | 回复:1



mqwkp

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:29帖 | 172回
  • 年度积分:0
  • 历史总积分:250
  • 注册:2004年11月30日
发表于:2020-09-17 14:54:14
楼主

我用西门子200的cpu,具体型号是226,port0做modbus从站通讯。

程序在附件中,不知道大家能不能看到?

测试时用modscan做主站,可以读取VB0开始的所有寄存器数据。

但是我用modscan往VD300中写入一个实数,也就是浮点数的时候,地址与西门子地址换算不一致。VD300按照西门子modbus地址换算后应该是40151,40152,。我在40151写入3.0,实际上监视PLC状态表可以发现,VD300的数还是零。而我将数据格式均改为整数时,在40152中写2222,40151中写1111时状态表监视VD300与实际写入时一致。但写实数时(申明数据格式我都是一致的),需要再40150中写3.0,VD300才显示为3.0

我又测试了VD100,与这个一样,需要写到40050中才行。

这是怎么回事?有朋友解答一下吧~谢谢

11.jpg

正在下载,请等待……
下载附件需0积分!



楼主最近还看过



Allen010

  • 精华:0帖
  • 求助:0帖
  • 帖子:30帖 | 544回
  • 年度积分:73
  • 历史总积分:17753
  • 注册:2010年8月04日
发表于:2020-09-21 17:27:32
1楼

可能的原因:

Modscan 使用Modbus RTU通信协议时,处理存储在数据保持寄存器中的实数(浮点数)的方式  可能与西门子的实数保存格式不同。西门子的PLC遵循"高字节低地址、低字节高地址"的规律。

Modbus RTU的保持寄存器总是以"字(双字节)"为单位,而一个实数需要4个字节(双字)表示。通过 Modscan 输入数值时 ,可能会把保持寄存器的两个"字"互换位置(高低不同),也就是modscan的 40151  40150   对应了 西门子的 40151  40152  ,这就导致 40150输入时,VD300有输出。




热门招聘
相关主题

官方公众号

智造工程师