基于MODBUS协议的上位机与PLC及智能仪表之间的通信实现方法文档格式.doc
- 文档编号:15407734
- 上传时间:2022-10-30
- 格式:DOC
- 页数:4
- 大小:20KB
基于MODBUS协议的上位机与PLC及智能仪表之间的通信实现方法文档格式.doc
《基于MODBUS协议的上位机与PLC及智能仪表之间的通信实现方法文档格式.doc》由会员分享,可在线阅读,更多相关《基于MODBUS协议的上位机与PLC及智能仪表之间的通信实现方法文档格式.doc(4页珍藏版)》请在冰豆网上搜索。
如果需要回应,控制器将生成应答并使用Modbus协议发送给询问方。
Modbus协议包括ASCII、RTU、TCP等,它需要对数据进行校验,其中RTU模式采用16位CRC校验.当控制器设为在Modbus网络上以RTU(远程终端单元)模式通信,在消息中的每个8bit字节包含两个4bit的十六进制字符.这种方式的主要优点是:
在同样的波特率下,可比ASCII码传送更多的数据.
三、电气接口:
本套系统采用RS-485作为电气接口.它具有干扰抑制性好、传输距离长、组网方便等特点,非常适合组成工业级的多机通信系统.网络采用总线型结构,半双工,终端加电阻.电缆选用带有金属网状屏蔽层的双绞线.它可以消除由于磁耦合引起的共模噪声,而金属屏蔽层可以阻断电容、电磁及高频磁耦合引起的噪声。
另选用RS232/RS485转换器。
通过转换器,我们就可以利用工控机的RS232串口,快速地开发基于RS485串口的上位机通信软件。
四、PLC程序设计:
本系统中的可编程控制器采用西门子S7-200系列.使用指令库中的MBUS_INIT和MBUS_SLAVE指令..以下是系统中用于PLC的通讯程序:
NETWORK1//首次扫描时初始化Modbus从属协议
//将从站地址设为1,将端口0设为9600波特,将校验设为偶数,//允许存取所有的I、Q和AI数值,允许存取1000台保存寄存器(2000个字节)//从VB0开始。
LDSM0.1
CALLMBUS_INIT,1,1,9600,2,+0,+128,+32,+1000,&
VB0,M0.1,MB1
NETWORK2
//每次扫描时执行Modbus从属协议
LDSM0.0
CALLMBUS_SLAVE,M0.2,MB2
五、上位机通讯软件的设计方案:
1初始化为加快开发速度,上位机通讯软件的编程可以使用MSCOMM控件,用控件对通讯软件进行设定需要使用的串口地址、波特率、校验方式、数据缓冲区等初始化操作.
2命令字发送MODBUS规定完整的命令应由从机地址、功能码、数据段和校验码组成。
命令字发送必须严格遵守该规定。
计算机发送命令:
[设备地址][命令号01][起始寄存器地址高8位][低8位][读取的寄存器数高8位][低8位][CRC校验的低8位][CRC校验的高8位]
3下表是Modbus支持的功能码:
功能码名称作用
01读取线圈状态取得一组逻辑线圈的当前状态(ON/OFF)
02读取输入状态取得一组开关输入的当前状态(ON/OFF)
03读取保持寄存器在一个或多个保持寄存器中取得当前的二进制值
04读取输入寄存器在一个或多个输入寄存器中取得当前的二进制值
05强置单线圈强置一个逻辑线圈的通断状态
06预置单寄存器把具体二进值装入一个保持寄存器
07读取异常状态取得8个内部线圈的通断状态,这8个线圈的地址由控制器决定
08回送诊断校验把诊断校验报文送从机,以对通信处理进行评鉴
09编程(只用于484)使主机模拟编程器作用,修改PC从机逻辑
10控询(只用于484)可使主机与一台正在执行长程序任务从机通信,探询该从机是否已完成其操作任务,仅在含有功能码9的报文发送后,本功能码才发送
11读取事件计数可使主机发出单询问,并随即判定操作是否成功,尤其是该命令或其他应答产生通信错误时
12读取通信事件记录可是主机检索每台从机的ModBus事务处理通信事件记录。
如果某项事务处理完成,记录会给出有关错误
13编程(184/384484584)可使主机模拟编程器功能修改PC从机逻辑
14探询(184/384484584)可使主机与正在执行任务的从机通信,定期控询该从机是否已完成其程序操作,仅在含有功能13的报文发送后,本功能码才得发送
15强置多线圈强置一串连续逻辑线圈的通断
16预置多寄存器把具体的二进制值装入一串连续的保持寄存器
17报告从机标识可使主机判断编址从机的类型及该从机运行指示灯的状态
18(884和MICRO84)可使主机模拟编程功能,修改PC状态逻辑
19重置通信链路发生非可修改错误后,是从机复位于已知状态,可重置顺序字节
20读取通用参数(584L)显示扩展存储器文件中的数据信息
21写入通用参数(584L)把通用参数写入扩展存储文件,或修改之
在这些功能码中较长使用的是1、2、3、4、5、6号功能码,使用它们即可实现对下位机的数字量和模拟量的读写操作。
4下表是MODBUS地址映射到S7-200的地址:
MODBUS地址S7-200地址MODBUS地址S7-200地址
000001Q0.1030001AIW0
000002Q0.2030002AIW2
000128Q15.7030032AIW62
010001I0.0040001VW0
010002I0.1040002VW2
010128I15.704xxxxVW2*(xxxx-1)
5CRC校验:
CRC编码校验误码率极低,是一种比较可靠的检验方式。
该校验码是通过数据序列对生成多项式进行二进制除法取余数得到的。
采用CRC-16校验,生成的多项式为X16↑+X15↑+X2↑+X1↑。
CRC域是两个字节,包含一16位的二进制值。
它由传输设备计算后加入到消息中。
接收设备重新计算收到消息的CRC,并与接收到的CRC域中的值比较,如果两值不同,则有误。
CRC是先调入一值是全“1”的16位寄存器,然后调用一过程将消息中连续的8位字节各当前寄存器中的值进行处理。
CRC产生过程中,每个8位字符都单独和寄存器内容相或(OR),结果向最低有效位方向移动,最高有效位以0填充。
LSB被提取出来检测,如果LSB为1,寄存器单独和预置的值或一下,如果LSB为0,则不进行。
整个过程要重复8次。
在最后一位(第8位)完成后,下一个8位字节又单独和寄存器的当前值相或。
最终寄存器中的值,是消息中所有的字节都执行之后的CRC值。
下面是它的VC代码:
WORDGetCheckCode(constchar*pSendBuf,intnEnd)//获得校验码
{
WORDwCrc=WORD(0xFFFF);
for(inti=0;
i
{
wCrc^=WORD(BYTE(pSendBuf[i]));
for(intj=0;
j
if(wCrc&
1)
wCrc>
>
=1;
wCrc^=0xA001;
}
else
returnwCrc;
六、上位机与智能仪表的通讯:
上位机的通讯程序可参照上位机与PLC的通讯程序进行设计,注意将上位机的串口地址设为其它的地址(例如2)。
在此不作过多介绍。
多台智能仪表作为MODBUS从站的网络,每个从站必须设为唯一的从站地址,并设定好波特率。
仪表要遵循MODBUS规约的通信帧结构对上位机的命令进行解析。
非呼叫对象要能及时重新恢复等待接受状态。
响应呼叫的仪表要解析命令并进行相应的功能处理,对非法的命令要能回报报错信息。
七、结束语:
该方法用于某污水处理厂。
由于采用智能仪表使系统对PLC的要求以及布线成本都大大降低。
监控程序的设计完全符合厂方的要求。
另因其设备分散、成本要求苛刻的特点,充分利用RS485总线和现有成熟而规范的通信协议能最大限度地节约成本。
实践表明,MODBUS具有开放性好、功能强、通讯效率高等特点。
来源:
[]机电之家·
机电行业电子商务平台!
4
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MODBUS 协议 上位 PLC 智能仪表 之间 通信 实现 方法