找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
{{itemCategory}}
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
1、
“MB_SERVER” 的管脚参数“MB_HOLD_REG”,用于存储保持寄存器的通信数据,需要注意的是该数据块必须为非优化数据块(支持绝对寻址),在该数据块的属性中不勾选“优化的块访问”选项。
我们知道,保持寄存器的单位是字,换算成字节,则是一个偶数,你的图中保持寄存器中的字节数为单数,则是错误的。可改为 P#DB15.DBX0.0 BYTE 220,这样就有110个保持寄存器。
其地址从 40001-40110
2、
关于保持寄存器区的数据,这是由你自己根据与上位机数据交互定义的。你可以将与上位交换的数据组织到保持寄存器区。
比如:
保持寄存器第一部分:
系统中用到10个传感器,要求可以灵活根据实际传感器的量程设置,PLC 在做模拟量转换时要用到。
则可以在 DB15 的最前面,定义一个数组,ARRAY[1..10]OF INT,每一个数组元素对应一个传感器的量程。占用10个字空间,则它们的地址为
40001 是第1个量程,上位机输入时用整型输入,程序中用时需要转换成浮点数
40002 是第2个量程,上位机输入时用整型输入,程序中用时需要转换成浮点数
依此类推
40010 是第10个量程,上位机输入时用整型输入,程序中用时需要转换成浮点数
保持寄存器第二部分:
模拟量转换后的值,用于上位机显示
那你可以接着定义一个数组,ARRAY[1..10]OF INT,每一个对应一个实测值。
40011 则为第1个实测值,要求PLC将实测的浮点数转成整数,上位机进行线性变换。
40012 则为第2个实测值,要求PLC将实测的浮点数转成整数,上位机进行线性变换。
依此类推
40020 则为第10个实测值,要求PLC将实测的浮点数转成整数,上位机进行线性变换。
总之这个保持区的数据是双方约定后组织的。
2、
上面提到的变换,在PLC侧主要就是整数与浮点数之间的转换,PLC 是有这样的指令的,比如 CONVERT指令;
在上位上面的变换,一般上位提供了线性缩放选项,它自已按你的要求缩放来自PLC的数据。
3、
因为设定的参数是要保持的,那这个数据块整体就要设成保持的。对PLC没有影响,不要担心
4、通讯程序的资料可参考
https://support.industry.siemens.com/cs/cn/zh/view/90974593
补充:
不完全正确
对于PLC自有的 I/Q 点它是有MODBUS 地址的,不需要组织
比如 I0.0 10001
I0.1 10002
Q0.0 00001
Q0.1 00002
IW0 30001
IW2 30002 如附图
除这些以外的,要组织在保持寄存器中的数据,理解是对的
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!