请教:用modbus poll软件怎么读FX2N PLC里面的输入输出点,以及寄存器数据?

现有硬件:FX2N PLC一台,FX2N-485BD板卡一块,USB转485接口数据线一条。软件modbus poll软件。之前用这个软件测试带RS485接口的鸿引电能表数据读写正常。但用这个接口接到FX2N-485BD时,modbus poll显示crc校验错误等,总这是通讯不上,我检查了通讯线连接无问题。PLC程序也设置了。通信格式:无校验,8位数据位,1个停止位。不知道怎么用modbus poll软件测试数据传输,有大师在吗?

程序注释没有改过,最后一段程序是与后面点对齐的。MODBUS POLL:

有2点原因:
1、modbus poll软件是作为主站使用的;而你的PLC程序是定时发送数据,属于主动发送,这不符合“主站请求——从站应答”的规则。所以,modbus poll与FX2N通信,FX2N首先应按从站应答方式去编程。
2、程序中 D207=H0B、D206=H0D0,这个校验码是不是根据D201~D205的值进行CRC16计算所得?若不是,校验码可能是错误的。追问

非常感谢你!校验码我是用其它软件通过d200~d205计算的,这个没有错。用从站方式编程,请问能细说下吗,我是想通过modbus-poll软件看PLC发送数据有无错误,然后再通过PLC的485BD板与仪表及变频器做modbus-rtu通讯。现在只想做PLC与一只表的通讯,结果就拦在了第一步上。能多指教下吗?校验采用CRC16校验。我直接用PLC连接仪表,返回数据又不对。

追答

从站方式编程的过程如下:

1、接收到数据后,与本机从站地址比较,若相等往下继续,否则退出并等待接收;
2、计算并比较CRC校验码,若相等往下继续,否则返回错误信息并退出;
3、检查功能码和地址值,若有效往下继续,否则返回错误信息并退出;
4、根据功能码和地址值进行事务处理:复位、置位、读/写数据等;
5、处理完毕后,发送处理结果信息给主站。

用FX2N实现完整的modbus程序,是要花费不少功夫。如果只想达到PLC读/写仪表固定寄存器的数值,那就简单了,你可以这样做:

1、用modbus poll软件先读/写仪表固定寄存器的数值,确认通信是OK的,记下此时的功能码、从站地址、寄存器地址等参数;
2、用modbus poll软件与串口工具软件(如串口助手)通信,确保通讯参数、功能码、从站地址、寄存器地址等参数与上述相同,modbus poll软件发送数据包后,串口助手软件接收到该数据包。
3、根据串口助手软件接收到的十六进制数据包,在FX2N程序中按顺序赋值给RS的发送寄存器,发送给仪表就OK。

追问

poll软件的发送代码填入PLC程序,PLC和仪表相连,仪表返回数据不对。后来,我用modbus slave软件,PLC作为主站,通过slave软件读取PLC发送出来的数据。结果数据没,不报错。modbus slave软件地址怎么和PLC地址对应起来呢,比如D200,在modbus slave软件里应该看哪个地址呢,我看程序里的东西了就是没有数据,下面是我最近修改PLC程序的数据

追答

图示数据包的长度为8个字节,若接收的长度不是固定为9,RS最好改为:[RS D200 K8 D300 K64]
01(D201):从站地址
03(D202):功能码
00(D203):寄存器地址(H)
02(D204):寄存器地址(L)
00(D205):数据长度(H)
02(D206):数据长度(L)
modbus slave软件的从站地址应与D201的值一致,设置为1。

温馨提示:答案为网友推荐,仅供参考