• «
  • 1
  • 2
  • »
  • Pages: 2/2     Go
wenliang
擡頭白雲悠悠,前竟一片黯愁……
级别: 家园常客
精华主题: 0
发帖数量: 692 个
工控威望: 880 点
下载积分: 42953 分
在线时间: 527(小时)
注册时间: 2014-04-04
最后登录: 2024-03-28
查看wenliang的 主题 / 回贴
12楼  发表于: 2021-12-03 20:36
今天问采购才知道485模块是在网上买的国产的,也不知道是不是国产模块产品质量问题,准备买个正品模块来试一下看是什么问题、、、
zhangqi_1234
级别: 略有小成
精华主题: 0
发帖数量: 335 个
工控威望: 486 点
下载积分: 3999 分
在线时间: 245(小时)
注册时间: 2013-03-22
最后登录: 2024-03-28
查看zhangqi_1234的 主题 / 回贴
13楼  发表于: 2021-12-04 00:02
MODBUS通信中,主站发起通信请求,从站被动响应;从站不会主动发起通信请求。从你的例子中看出,你把PLC作为主站,PC机作为从站。
1、PLC使用RS指令的目的是,指定数据发送区和接收区。
2、PLC用边沿触发指令使M8122置1,M8122置1后PLC会自动把数据发送区的数据(通信报文)通过串口顺序发送出去,用于发起对指定从站的通信请求。数据发送完毕后,M8122自动复位。因此通常用上升沿指令接[SET M8122],一般不用M8122作其它事情。另外,发送的通信报文,要包含CRC校验码,需要使用CRC校验码指令,并同时使M8161置1。
3、从站收到主站的通信请求,检查通信报文是否符合MODBUS协议,如果不符合协议要求,会向主站发送错误代码,但有些错误不会回复任何数据,例如CRC校验码错误。如果通信报文符合MODBUS协议,从站响应主站请求,执行主站的请求,并发送应答的通信报文。这个应答的通信报文会存储在RS指令指定的数据接收区中。
4、PLC作为主站接收完从站回复的数据后,M8123置1,M8123需要手动复位,为下一次接收数据做准备。PLC的M8123置1表示是主站接收完从站的回复数据,根据MODBUS通信协议,主站不会发送数据告诉从站,收到了回复数据。主站发送数据给从站,是向从站发起通信请求。

5、如果是PC机作为主站,PLC作为从站。则PLC既不需要使用RS指令,也不需要使用M8122和M8123,而是要设置一些参数,指定站号、通信速率、通信接口、MODBUS存储器(线圈、输入位元件、输入寄存器、保持寄存器)寻址等。

6、FX3U配备FX3U-385ADP-MB适配器作为主站,不使用RS指令、CRC校验码指令和M8122、M8123,而是使用ADPRW指令。7、FX3U的通信参数设置不使用D8120,如果用FX3U-485-BD,则是使用D8400、D8401、D8409-D8416。FX3G没使用过,不清楚是用D8400、还是D8120。
[ 此帖被zhangqi_1234在2021-12-04 00:17重新编辑 ]
  • «
  • 1
  • 2
  • »
  • Pages: 2/2     Go