您现在所在的是:

三菱Mitsubishi

回帖:3个,阅读:5041 [上一页] [1] [下一页]
843
huyingbo0123
文章数:10
年度积分:50
历史总积分:843
注册时间:2012/9/14
发站内信
发表于:2012/11/12 12:27:55
#0楼
  各位大侠,本人初学PLC,现在碰到一个问题解决不了,希望哪位高手可以给我指点,小弟万分感谢。
  我现在手头上有一个FX2N的PLC,使用FX2N-485-BD模块与一台整流电源连接,电源使用485通讯,modbus-RTU协议,由于FX2N没有MODBUS,所以只能用自由协议RS指令来实现他们的通讯,可是小弟试了很长时间都没有成功,就是我按照电源通讯说明书上的例子给电源发了数据,通过串口工具显示发送,接收的数据均正确,但是返回到PLC的D区的数据却是乱的,不知道怎么回事。希望各位指点,如果哪位能够给我写一个通讯例程的话真感激不敬了!!

2楼是电源的通讯协议说明
[此贴子已经被作者于2012/11/12 12:31:13编辑过]
843
huyingbo0123
文章数:10
年度积分:50
历史总积分:843
注册时间:2012/9/14
发站内信
发表于:2012/11/12 12:30:11
#1楼
一、本机相关协议细节

本数字控制系统仅支持03、06命令。系统设定使用了自定义的私有命令。具体协议细节请参见附件的国标。支持4800、9600、19200和38400波特率的通讯速度,仅支持8位无奇偶校验格式。

(一)、读保持寄存器命令(03)

共15个保持寄存器,MODBUS协议地址号0000H~000EH。细节如下:
1.0000H:实时采样电流,以百分数表示,具体使用定点数,对应0~10000;
2.0001H:实时采样电压,以百分数表示,具体使用定点数,对应0~10000;
3.0002H:安培小时计电量总累积量高位,为无符号整形;
4.0003H:总累积量低位,为无符号整形,需要与高位组合使用;
5.0004H:安培小时计当前累积量高位,为无符号整形;
6.0005H:安培小时计当前累积量低位,为无符号整形,需要与高位组合使用;
7.0006H:添加剂继电器输出控制时间;
8.0007H:当前工作状态。其中D0:0=STOP,1=RUN;D1:1=CC,0=CV;D2:0=无安培小时计功能,1=使用此功能;D3:0=AH,1=AM;D4:0=就地操作,1=远程通讯控制;D5:0=定时工作不使用,1=使用定时工作方式;D6:0=无报警,1=有;D7:0=如果使用定时功能,定时到自动关机,1=定时时间到不关机;D8:用于设定系统掉电后再上电时的工作状态。0=默认STOP,1=恢复掉电前状态;D14、D15固定=1;其它位保留。
9.0008H:电流满量程设定;
10.0009H:电压满量程设定;
11.000AH:当前输出电流给定值,以百分数表示,具体使用定点数,对应0~10000;
12.000BH:当前输出电压给定值,以百分数表示,具体使用定点数,对应0~10000;
13.000CH:安培小时计控制用电量累积设定高位,为无符号整形;
14.000DH:安培小时计控制用电量累积设定低位,为无符号整形,需要与高位组合使用;
15.000EH:定时工作设定的工作时间。

(二)、写保持寄存器命令(06)

命令必须在远程控制条件下,在STOP状态下才可以设定。仅START/STOP与电流电压给定三条命令可以在STOP状态下使用。命令寄存器与03命令寄存器地址一致。其中0000H~0005H为只读寄存器,不可写。其它如下:
1.0006H:添加剂继电器输出控制时间,单位“秒”,范围1~3600;
2.0007H:其中D0:0=STOP,1=RUN;D1:1=CC,0=CV;D2:0=无添加剂控制功能,1=使用此功能;D3:0=AH,1=AM;D4:只读,不可写;D5:0=定时工作不使用,1=使用定时工作方式;D6:只读,不可写;D7:0=如果使用定时功能,定时到自动关机,1=不关机;D8:0=上电默认STOP,1=恢复掉电前状态;D14=0为总累计量清零;D15=0为添加剂累计零清零;其它位保留。
3.0008H:电流满量程设定;
4.0009H:电压满量程设定;
5.000AH:当前输出电流给定值,可以在运行时给定,以百分数表示,具体使用定点数,对应0~10000;
6.000BH:当前输出电压给定值,可以在运行时给定,以百分数表示,具体使用定点数,对应0~10000;
7.000CH:安培小时计控制用电量累积设定高位;
8.000DH:安培小时计控制用电量累积设定低位。范围1~99999999;
9.000EH:定时工作设定的工作时间,单位“秒”,范围1~60000。

二、例程

(一)、读取保持寄存器

例1:读取当前电源板输出电流值,当前机器地址号为1号,当前电流为满量程的50%,占用0000H地址的保持寄存器。
1、命令发送信息共8个字节,细节如下:
1,3,0,0,0,1,132,10;
其中:第1个字节为1,表示呼叫对象为1号设备;第2个字节为3,表示发出的是3号命令,命令为读取保持寄存器;第3、4个字节为0、0,表示从保持寄存器的0000H地址开始读取;第5、6个字节为0、1,表示此次命令将读取1个寄存器(提示:寄存器为双字节);第7、8字节为132、10,为CRC16校验的高低字节。
2、1号设备应答信息共7个字节,细节如下:
1,3,2,19,136,181,18;
其中:第1个字节为1,表示呼叫对象为1号设备,设备直接返回此字节;第2个字节为3,表示发出的是3号命令,命令为读取保持寄存器,设备直接返回此字节;第3个字节为2、表示设备发送回两个字节数据(1个寄存器);第4、5个字节为19、136,为读回的第一个寄存器内容的高低字节,即当前电流值,它等于19*256+136=5000,实际为定点百分数表示的50%;6、7字节为181、18,为CRC16校验的高低字节。

例2:读取当前电源板输出电流值和电压值,当前机器地址号为1号,当前电流为满量程的50%,占用0000H地址的保持寄存器;当前电压为满量程的50%,占用0001H地址的保持寄存器。
1、命令发送信息共8个字节,细节如下:
1,3,0,0,0,2,196,11;
其中:第1个字节为1,表示呼叫对象为1号设备;第2个字节为3,表示发出的是3号命令,命令为读取保持寄存器;第3、4个字节为0、0,表示从保持寄存器的0000H地址开始读取;第5、6个字节为0、2,表示此次命令将读取2个寄存器(提示:寄存器为双字节);第7、8字节为196、11,为CRC16校验的高低字节。
2、1号设备应答信息共9个字节,细节如下:
1,3,4,19,136,19,136,115,203;
其中:第1个字节为1,表示呼叫对象为1号设备,设备直接返回此字节;第2个字节为3,表示发出的是3号命令,命令为读取保持寄存器,设备直接返回此字节;第3个字节为4、表示设备发送回4个字节数据(2个寄存器);第4、5个字节为19、136,为读回的第1个寄存器内容的高低字节,即当前电流值,它等于19*256+136=5000,实际为定点百分数表示的50%;第6、7个字节为19、136,为读回的第2个寄存器内容的高低字节,即当前电压值,它等于19*256+136=5000,实际为定点百分数表示的50%;8、9字节为115、203,为CRC16校验的高低字节。

(二)、写保持寄存器

例1:通过写保持寄存器000AH,更新当前电源板输出电流值到满量程的50%。当前机器地址号为1号。
1、命令发送信息共8个字节,细节如下:
1,6,0,10,19,136,164,158;
其中:第1个字节为1,表示呼叫对象为1号设备;第2个字节为6,表示发出的是6号命令,命令为写保持寄存器;第3、4个字节为0、10,表示写000AH地址的保持寄存器;第5、6个字节为19、136,表示此次命令写数据为5000,为给定电流百分数对应的定点数,为实际绝对值的50%;第7、8字节为164、158,为CRC16校验的高低字节。
2、1号设备应答信息共8个字节,命令报文原样返回,表示已经收到命令。

843
huyingbo0123
文章数:10
年度积分:50
历史总积分:843
注册时间:2012/9/14
发站内信
发表于:2012/11/13 8:28:40
#2楼
没人啊,哪位大侠给个回复吧。。。。
10298
339402782
文章数:3210
年度积分:56
历史总积分:10298
注册时间:2010/6/2
发站内信
2011国庆活动
发表于:2012/11/13 11:02:25
#3楼
贴出你的程序来让大家看下,有的串口软件也不行的

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

46.8003