| 作者 | 主题 |
|---|---|
|
老石 游民 经验值:93 发帖数:47 精华帖:3 |
楼主
主题:那位朋友手头也有CP341(RS485)以及MODBUS_MASTER硬件狗能否帮忙做个实验并解答我的问题??
我使用CP341(RS485)做MODBUS_MASTER通讯测试,按照文档“Modbus_Master.pdf”的方法和PC机运行仿真测试程序通讯实验了功能01--06,还有功能08都没有问题,但是功能16(写多个数据到对方寄存器)失败.我使用的文档版本是刚从西门子网站上下载的,产品号6ES7870-1AA00-0YA0,05/2003版.我PC机运行的测试程序是"ModbusSlave.exe".我还用"sscom32.exe"检验CP341发出的MODBUS代码.凡是能够做通的,"sscom32.exe"都可以看到CP341发出的代码,但是严格按上述文档组态数据块DB,调用功能16,收不到代码.自然也不能向"ModbusSlave.exe"创立的模拟数据区写入数据.为此,我多次给北京4008104288支持人员打电话,她们答复该文档正确,肯定能做通,又说"ModbusSlave.exe"不支持功能16,别的似乎爱莫能助.我希望那位能帮助判断问题在哪里?或者手头有这些东西,做个功能16的仿真实验,首先看"sscom32.exe"能否显示代码.
多谢! |
|
老石 游民 经验值:93 发帖数:47 精华帖:3 |
楼
主题:回复:那位朋友手头也有CP341(RS485)以及MODBUS_MASTER硬件狗能否帮忙做个实验并解答我的问题??
这两天有点时间.这个功能16已经通讯成功.
我的MODBUS通讯功能16实验比较曲折,当时一筹莫展,成功后回头看极其简单。 这里做个小结. 主要卡在FB8的管脚LEN应该设置多少,以及功能16第七个BYTE需不需要考虑。其他设置照例程来。这些地方生产商确实没有说清楚。 我实验的结果是: 这个LEN与FB8使用的共享数据块的数据长度有关。例如共享数据块DB1在需要写3个字全部命令BYTE是12,需要写6个字全部命令BYTE是18,DB1最下面一行给出总数,照这个填FB8的管脚LEN。 功MODBUS通讯能16第七个BYTE比较特殊,在此不需要考虑,模块已经自动添加。主要把FB8的管脚和共享数据块DB配置正确,即使把端子导线拔下,CP341的也一定会发第一组码,也就是说TXD灯一定会闪一下。设置不正确,CP341根本不发第一组码。这是判断通讯成败的一个方法。 我实验的硬件是314CPU,CP341,经过MOXA公司的两个光纤转换器(485接口,只接两根导线),与施耐德MICRO_3721PLC做MODBUS主从通讯,314CPU为主站。下边用两个MICRO_3721PLC分别做从站1,2。实验了常用的03,16功能。没有问题。03功能读的时候TXD灯和RXD灯亮,写功能16,由于有握手信号,同样可以看到这两个灯一先一后亮一下。 SSCOM32之类的串口实验软件完全能够实验MODBUS功能16。只要S7300设置正确,并且RS232/485转换器是CP341能够兼容的,软件SSCOM32设置HEX显示,可以看到完整的MODBUS代码(含CRC)。 西门子打包给的例程有一个SLAVE测试软件“ModbusSlave.exe”,试用期30天,每次只能用15分钟,也完全支持通讯能16。这个软件对MODBUS其他功能也支持的。我手头还有一个好用的SLAVE测试软件,不需要注册没有时间限制,如果其他朋友有需要,给个信箱可以发给你们。程序名字是ModSim32.exe,与常用的ModScan32.exe是一套,网上也许能搜索到,自己下载也可以。 在实验功能03,16基础上,实验了说明书“Modbus_Master.pdf”第五章所有功能代码,CP341都可以正确发码(在SSCOM32可以看到正确的代码)。 但是仍有问题。将另发一个帖子大家讨论,寻求帮助.。 |