什么是485通讯协议
1、什么是485通讯协议
2、台达PLC通讯协议
篇一:RS485通讯协议介绍
第九章 串行口RS485通讯协议
9.1通讯概述
本公司系列变频器向用户提供工业控制中通用的RS485通讯接口。通讯协议采用MODBUS标准通讯协议,该变频器可以作为从机与具有相同通讯接口并采用相同通讯协议的上位机(如PLC控制器、PC机)通讯,实现对变频器的集中监控,另外用户也可以使用一台变频器作为主机,通过RS485接口连接数台本公司的变频器作为从机。以实现变频器的多机联动。通过该通讯口也可以接远控键盘。实现用户对变频器的远程操作。
本变频器的MODBUS通讯协议支持两种传送方式:RTU方式和ASCII方式,用户可以根据情况选择其中的一种方式通讯。下文是该变频器通讯协议的详细说明。
9.2通讯协议说明
9.2.1通讯组网方式
(1) 变频器作为从机组网方式:
单主机多从机
图9-1 从机组网方式示意图
单主机单从机
(2) 多机联动组网方式:
- 107 -
图9-2 多机联动组网示意图
9.2.2通信协议方式
该变频器在RS485网络中既可以作为主机使用,也可以作为从机使用,作为主机使用时,可以控制其它本公司变频器,实现多级联动,作为从机时,PC机或PLC可以作为主机控制变频器工作。具体通讯方式如下:
(1) 变频器为从机,主从式点对点通信。主机使用广播地址发送命令时,从机不应答。
(2) 变频器作为主机,使用广播地址发送命令到从机,从机不应答。
(3) 用户可以通过用键盘或串行通信方式设置变频器的本机地址、波特率、数据格式。
(4) 从机在最近一次对主机轮询的应答帧中上报当前故障信息。 9.2.3通讯接口方式
通讯为RS485接口,异步串行,半双工传输。默认通讯协议方式采用ASCII方式。
默认数据格式为:1位起始位,7位数据位,2位停止位。
默认速率为9600bps,通讯参数设置参见P3.09~P3.12功能码。
9.3 ASCII通讯协议 字符结构:
10位字符框(For ASCII)
(1-7-2格式,无校验)
(1-7-1格式,奇校验)
- 108 -
(1-7-1格式,偶校验)
11位字符框(For RTU)
(1-8-2格式,无校验)
(1-8-1格式,奇校验)
(1-8-1格式,偶校验)
通讯资料结构: ASCII模式
- 109 -
通讯地址:
00H:所有变频器广播(broadcast) 01H:对01地址变频器通讯。 0FH:对15地址变频器通讯。
10H:对16地址变频器通讯。以此类推……….,最大可到254(FEH)。 功能码(Function)与资料内容(DATA): 03H:读出寄存器内容。 06H:写入一笔资料到寄存器。 08H:回路侦测。
功能码03H:读出一个寄存器内容:
例如:读出寄存器地址2104H内容(输出电流): ASCII模式:
- 110 -
RTU模式:
功能码06H:写入一笔资料到寄存器。
例如:对变频器地址01H,写P0.02=50.00HZ功能码。 ASCII模式: - 111 -
篇二:485通讯协议标准
编号: 密级: 内 部页数:__________
基于RS485接口的DGL通信协议(修改)
编写:____________________ 校对:____________________ 审核:____________________ 批准:____________________
北京华美特科贸有限公司 二○○二年十二月六日
1. 前言
在常见的数字式磁致伸缩液位计中,多采用RS485通信方式。但RS485标准仅对物理层接口进行了明确定义,并没有制定通信协议标准。因此,在RS485的基础上,派生出很多不同的协议,不同公司均可根据自身需要设计符合实际情况的通信协议。并且,RS485允许单总线多机通信,如果通信协议设计不好,就会造成相互干扰和总线闭锁等现象。如果在一条总线上挂接不同类型的产品,由于协议不一样,很容易造成误触发,造成总线阻塞,使得不同产品对总线的兼容性很差。
随着RS485的发展,Modicon公司提出的MODBUS协议逐步得到广泛认可,已在工业领域得到广泛应用。而MODBUS的协议规范比较烦琐,并且每字节数据仅用低4位(范围:0~15),在信息量相同时,对总线占用时间较长。
DGL协议是根据以上问题提出的一种通信协议。在制定该协议时已充分考虑以下几点要求: a. 兼容于MODBUS 。也就是说,符合该协议的从机均可挂接到同一总线上。 b. 要适应大数据量的通信。如:满足产品在线程序更新的需要(未来功能)。 c. 数据传输需稳定可靠。对不确定因素应加入必要的冗错措施。 d. 降低总线的占用率,保证数据传输的通畅。
2. 协议描述
为了兼容其它协议,现做以下定义:
通信数据均用1字节的16进制数表示。从机
的地址范围为:0x80~0xFD,即:MSB=1;命令和数据的数值范围均应控制在0~0x7F之间。即:MSB=0,以区别地址和其它数据。 液位计的编码地址为:0x82~0x9F。其初始地址(出厂默认值)为:0x81。 罐旁表的编织地址为:0xA2~0xBF。其初始地址(出厂默认值)为:0xA1。
其它地址用于连接其它类型的设备,也可用于液位计、罐区表地址不够时的扩充。
液位计的命令范围为:0x01~0x2F,共47条,将分别用于参数设定、实时测量、诊断测试、在线编程等。
通信的基本参数为:4800波特率,1个起始位,1个结束位。字节校验为奇校验。
本协议的数据包是参照MODBUS RTU 通信格式编写,并对其进行了部分修改,以提高数据传输的速度。另外,还部分参照了HART协议。其具体格式如下:
表中,数据的最大字节数为16个。也就是说,整个数据包最长为20个字节。
“校验和”是其前面所有数据异或得到的数值,然后将该数值MSB位清零,使其满足0~7F的要求。在验证接收数据包的“校验和”是否正确时,可将所有接收数据(包括“校验和”)进行异或操作,得到的数据应=0x80。这是因为,只有“地址”的MSB=1,所以异或结果的MSB也必然等于1。
本协议不支持MODBUS中所规定的广播模式。
3. 时序安排
在上电后,液位计将先延迟10秒,等待电源稳定。然后,用5秒的时间进行自检和测试数据。
接着产品进入待机状态并打开RS485通信接口,等待主机的请求。因此,主机应在液位计上电20秒后,再将液位计置为工作状态,进行测量操作。
液位控制器(HMT-900或H-1000)主要用于液位计的供电和防爆安全隔离。主机可通过RTS信号控制(HMT-900或H-1000)供给液位计的电源。当RTS有效时,电源将被打开。因此,液位计的电源是可以通过主机软件控制的。
在现场应用中,主机软件的工作时序一般应遵循以下几个步骤。 1) 在开主机前,并认真检查各相关设备的电源和电缆连接情况。
2) 在启动主机软件时,打开相应串行端口。使能RTS信号,给液位计上电。 3) 软件初始化操作,延迟20秒。
4) 读液位计的相应参数,然后将液位计置为工作状态。
5) 此时,主机可进入正常的轮训、记录、显示、报警等工作。
主机软件的主要工作是通过RS485总线和各个液位计进行DGL格式的数据包通信。因此,通信时序安排的好坏显得很重要。在本协议中,主机只能有1个,并完全控制总线,任何从机在没有主机请求时,必需保持接收状态。在设计从机电路时,应保证从机在上电时不能出现对总线的占用(发送状态),哪怕是很短的时间。以免增加系统功耗,影响其“本质安全”性能。
虽然主机控制着总线,但在总线空闲状态,主机也应处于接收状态。只有在向指定的从机发送请求数据包时,才进入发送状态。主机的发送接收状态切换由其串口的DTR信号控制,可称为MDTR
MDTR在在T5(T7时刻)T5-T3=8~18ms, T6-T5=1.9~3.5ms, T7-T6=10~60ms, T8-T7=1~3.5ms。一次通信的最长时间将控制在160ms以内。两次数据包通信的间隔应≥20ms。
根据以上描述和规定,我们就可以精确地进行主机和从机的通信控制。并根据可能出现的各种通信错误和故障,进行冗错设计。
4. 命令定义
命令0x01通信协议识别码
请求数据: 0byte
应答数据: 3byte字符串“DGL” 44,47,4C 命令0x02地址更改
请求数据: 1byteNewAdr-0x80 应答数据: 1byteNewAdr-0x80
注:应答数据中仍保留为原来地址不变
命令0x03, 0x4 保留
命令0x05读厂家名
请求数据: 0byte
应答数据: 10byte字符串“ALMRT Ltd.” 命令0x06读产品类型
请求数据: 0byte无 应答数据: 8byteDT0~7
浮子数 温度测点 外管类型 测杆材料 安装形式 防爆类型 x x
命令0x07读产品杆长
请求数据: 0byte无
应答数据: 2byteDT0,DT1
基数:2mm,范围:≤20m,GL= (DT1*128+DT0)*2mm
命令0x08读温度测点位置
请求数据: 0byte
应答数据: 5byteDT0~4 对应于VT1~5位置相对杆长的百分数(0~99)。 命令0x09读产品序列号 请求数据: 0byte无
应答数据: 4byte具体待定,存于MCU EEPROM中。 命令0x0A读电路和程序的版本号
请求数据: 0byte
应答数据: 2byteDT0 电路版本 , DT1程序版本 命令0x0B读零点校准参数数据
请求数据: 0byte
应答数据: 8byteDT0~7
Level1Zero=((DT2*128+DT1)*128+DT0)*0.01mmDT3<>0, 数据求反 Level2Zero=((DT6*128+DT5)*128+DT4)*0.01mmDT7<>0, 数据求反
命令0x0F设置产品工作状态
请求数据: 1byte DT0=0,产品工作; DT0<>0,产品待机; 应答数据: 1byte 和请求数据相同。 命令0x10读液位1(Level1,油面)数据
请求数据: 0byte
应答数据: 3byteDT0, DT1, DT2
分辨率:0.01mm,范围:30mm~20m(0x1E8480, DT2=7A, DT1=09, DT0=0)。 当DT2=DT1=DT=0时,液位下溢出;当DT2=DT1=DT=7F时,液位上溢出; Level1=((DT2*128+DT1)*128+DT0)*0.01mm
命令0x11读液位2(Level2,界面)数据
请求数据: 0byte
应答数据: 3byteDT0, DT1, DT2
Level2=((DT2*128+DT1)*128+DT0)*0.01mm
命令0x12读两个液位数据
请求数据: 0byte
应答数据: 6byteDT0, DT1, DT2, DT3, DT4, DT5
Level1=((DT2*128+DT1)*128+DT0)*0.01mm Level2=((DT5*128+DT4)*128+DT3)*0.01mm
建议:如需读液面2的数据时,应采用该命令。这样,可同时得到液位1的值,
提高了通信速度。
命令0x13~0x14 保留
命令0x15读各测杆测点温度(只有一个温度测点)
请求数据: 0byte
应答数据: 10byteDT0~9
分辨率(刻度):KD=0.015625℃(2^-6), 范围:-56~130℃
VT1=(DT1*128+DT0)*KD-56,VT2=(DT3*128+DT2) *KD-56, ??
命令0x16 保留
从以上协议可知,每个通信数据都用1Byte的16进制数表示,数据包中的地址(ADDRESS)字段长度为1Byte,当HT-1000(主机)向uPSD3200(从机)发送数据时,数据包中的地址(ADDRESS)字段中MSB应为1,因为此时数据包要到达的地址是从机, 从机的地址范围为:0x80~0xFD,即:MSB=1。主机(HT-1000)没有地址(也许理论上应该有),主从机通信过程是这样的:主机不断发出4个字节的数据包(地址,命令,字节数,校验和)去查询从机的测量情况,其中字节数为0,则没有数据字节,只需4个字节就可构成一个数据包。如下:
81 16 00 17 88 16 00 1E 84 16 00 12 87 16 00 11 8F 16 00 19
以上5个数据包就是主机发往从机的数据包,第一个字节是地址,共有5个地址,即发往5个从机,每发一个数据包,主机会等待从机的回应,然后再发下一个数据包,如果等待超时,则认为通信错误(HT-1000上会显示XX号罐通信错误)。若有回应,则主机进行数据处理,在友好的人机界面上显示相关测量信息。第二个字节16是命令字,16的具体含义可查询具体命令字信息。第三个00代表数据位是零个,第四个字节是校验和。(这里设计协议的原则是尽可能是通信的字节数变少,减少信息在传输过程中的丢失,当然也要考虑扩展性)
篇三:485通讯协议
485通讯协议及D16D数据结构和指令描述
2008-11-19
1. 通讯数据结构
第1字节:目的地址
分站地址
分站终端地址
第2 字节:数据长度N
该字节的数据代表每3~N+2字节为传送的数据 当=0时,表示第3字节是控制命令字
第3字节:数据或命令
传送数据的第1字节数据或控制命令 1.4 第4~N+2字节:数据 传送数据的第2~N字节数据 1.5 第N+3字节:源地址
分站地址
分站终端地址
1.6 第N+4字节:数据校验
暂定义为:将通讯字节1~N+3数据累加后的残值
2. 地址分配
图像卡: 0FH
伺服通讯卡: 05H 供墨控制卡:11H 主梁/车头升降卡:12H UV控制卡: 21H 车头IO控制卡: 31H 车头卡: 33H
通讯转接:00H
3. 控制数据定义
3.1 图像卡控制伺服卡(PCI-TX TO SF)[7CH:7~0bit]
目的地址:05H
源地址:0FH 数据长度:01H 第1数据:[7CH:7~0bit]
X_ON(O:ON;1:OFF)_ON(O:ON;1:OFF)
X_脉冲禁止(0:禁止;1:允许)_脉冲禁止(0:禁止;1:允许)
辅助电机正向转动(0:禁止;1:允许)辅助电机反向转动(0:禁止;1:允许)
电源控制(0:禁止;1:允许)电源控制(0:禁止;1:允许)
3.2 伺服卡反馈图像卡(SF TO PCI_TX) [8CH:15~0bit] 目的地址:0FH 源地址:05H 数据长度:02H 第1数据:[8CH:7~0bit]
左限位(右限位(
限位)
限位;1:无效)
前限位(0:限位;1:无效)后限位(0:限位;1:无效)
停机;1:无效)
门控(0:有效;
1:无效)伺服报警(0:报警;1:无效)伺服报警(0:报警;1:无效)
第2数据:[8CH:15~8bit]
3.3 图像卡控制供墨控制卡(PCI-TX TO GM)[7CH:15~8bit] 目的地址:11H 源地址:0FH 数据长度:01H
第1数据:[7CH:15~8bit]
供墨禁止(禁止)
清洗液泵(0:ON;1:OFF)
3.4 供墨控制卡反馈图像卡(GM TO PCI_TX)[90H:23~8bit] 目的地址:0FH 源地址:11H 数据长度 :03H
每1数据:[90H:7~0bit]
(0:缺墨)(0:超
高位
):缺墨)超高位
(
缺墨)
(超高位)
(0:缺墨)超高位)
第2数据:[90H:15~8bit]
第3数据:[90H:23~16bit]
3.5 车头IO控制卡控制供墨控制卡(CTIO TO GM) 目的地址:11H 源地址:31H 数据长度:02H 第1数据:
(0:缺墨)
(0:超高位):缺墨)超高位)
(
缺墨)
(超高位)(0:缺墨)超高位)
第2数据:
(0:缺墨)(0:超高位):缺墨)超高位)
(
废墨瓶
缺墨)
(超高位)(0:缺墨)
循环0:ON;1:OFF)
第3数据:
3.6 图像卡控制车头IO控制卡(PCI_TX TO CTIO)[80H、84H、88H:15~0bit] 目的地址:31H 源地址:0FH 数据长度:0AH
台达PLC通讯协议
篇一:台达PLC的通讯协议
台達PLC的通讯协议是公开的,只要对该协议有清楚理解,所有台达产品的通讯问题迎刃而解,下面是协议全文:
1. Communication Interface: RS-232C
2. Communication Protocol ASCII mode, 9600(Baud rate), EVEN(Parity), 1(Start bit),1(Stop bit)
3. Communication Data Frame
STX Start character ?:?(3AH)
ADR 1 Communication address:
ADR 0 8-bit address consists of 2 ASCII codes
CMD 1 Command code:
CMD 0 8-bit command consists of 2 ASCII codes
DATA(0) Contents of data:
DATA(1) n′8-bit data consist of 2n ASCII codes.
………. n£37, maximum of 74 ASCII codes
DATA(n-1)
LRC CHK 1 LRC check sum:
LRC CHK 0 8-bit check sum consists of 2 ASCII codes
END 1 End character:
END 0 END 1 = CR(0DH),END 0 = LF(0AH)
n ADR(Communication Address)
Valid communication addresses are in the range of 0…31. Communication address equals to 0 means broadcast to all PLC,
the PLC will reply normal message to the master device. For example, communication to PLC with address 16 decimal: (ADR 1, ADR 0)=?1?,?0?e?1?=31H, ?0? = 30H
n CMD (Command code) and DATA (data characters)
The format of data characters depends on the command code. For example, reading continuous 8 words form starting device address 0614H of PLC with address 01H.
Field Name Example (Hex)
Heading 3A
Slave Address 01
Command code 03
Starting Address Hi 06
Starting Address Lo 14
Number of Points Hi 00
Number of Points Lo 08
Error Check ( LRC ) DA
Number of Points(max)
= 18(for 16 bit register)
= 9(for 32 bit register)
Example:Reading Coils T20~T27 from slave device 01 PC→PLC
“:01 03 06 14 00 08 DA CR LF”
PLC→PC
“:01 03 10 00 01 00 02 00 03 00 04 00 05 00 06 00 07 00 08 B8 CR LF”
Field Name Example (Hex)
Slave Address 01
Command code 03
Bytes Count 10
Data Hi(T20) 00
Data Lo(T20) 01
Data Hi(T21) 00
Data Lo(T21) 02
Data Hi(T22) 00
Data Lo(T22) 03
Data Hi(T23) 00
Data Lo(T23) 04
Data Hi(T24) 00
Data Lo(T24) 05
Data Hi(T25) 00
Data Lo(T25) 06
Data Hi(T26) 00
Data Lo(T26) 07
Data Hi(T27) 00
Data Lo(T27) 08
Error Check(LRC) C8
n LRC CHK(check sum)
LRC (Longitudinal Redundancy Check) is calculated by summing up, module 256, the values of the bytes from ADR1 to last data character then calculating the hexadecimal representation of the 2?s-complement negation of the sum.
For example, reading 1 word form address 0401H of the PLC with address 01H
STX ?:?
ADR 1 ?0?
ADR 0 ?1?
CMD 1 ?0?
CMD 0 ?3?
Starting data address ?0?
?4?
?0?
?1?
Number of data ?0?
?0?
?0?
?1?
LRC CHK 1 ?F?
LRC CHK 0 ?6?
END 1 CR
END 0 LF
01H+03H+04H+01H+00+01H = 0AH
the 2?s-complement negation of 0AH is F6H
Exception response:
The PLC is been expected to return a normal response after receiving command messages from the master device. The following depicts the conditions that no normal response is replied to the master device.
The PLC does not receive the messages due to a communication error; thus the PLC has no response. The master device will eventually process a timeout condition.
The PLC receives the messages without a communication error, but cannot handle it, an exception response will return to the master device. In the exception response, the most significant bit of the original command code is set to 1, and an exception code explains the condition that caused the exception is returned.
篇二:基于VB实现台达PLC与PC 机串行通讯
基于VB实现台达PLC与PC串行通讯
随着工业自动化控制技术的不断发展,可编程逻辑控制器(PLC)与上位机之间通讯的应用越来越广泛。在PLC与上位机组成的集散控制系统中,PLC作为下位机完成现场各种信号和数据的采集
、运算和完成对系统的底层控制,上位机则可提供人机交互界面,实现数据的处理以及现场数据的实时显示等监视和远程控制等功能。为实现面向产品全生命周期的数字化远程服务经营理念的制造装备的远程监测、诊断与维护技术,随着移动通讯市场的迅速扩大,GSM 无线数字蜂窝通讯网络在我国得到了高速的发展,不但拥有较高的覆盖率,而且相继开放了SMS(短消息)、FAX(传真)、DATA(数据)等业务,为选择高效、廉价的数据传输提供了新的思路。各种组态软件,如:iFix、MCGS、组态王等虽然可以实现PLC的远程监控,但不能实现PLC Modbus通讯协议与GSM模块的通讯协议的转换。本文就是基于这点考虑,运用VB编制操作界面和通信功能,完成台达PLC与PC机串行通讯,这是实现GSM模块与PLC通讯的关键技术所在。
1 通讯硬件及协议简介
1.1通讯硬件组成
台达PLC自带有两个通讯串口(EH系列可扩展第三个通讯口RS-485或RS-422)COM1和COM2。COM1采用标准RS-232接口,它是一种近距离、低干扰、点对点的通讯协议。该接口在下载完PLC程序后一般都处于闲置状态。COM2是标准RS-485接口,可用于用抗干扰能力强、可多台串接组网的通讯方式。在该生产线的控制系统中,COM2已用于PLC与变频器之间的通讯,而一般PC机都自带标准RS-232接口。因此PC机与PLC之间通讯采用COM1(RS-232)接口,连接线采用台达PLC的编程电缆DVPACAB230。
1.2通讯协议介绍
Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。控制器能设置为两种传输模式(ASCII或RTU)中的任何一种在标准的Modbus网络通信。
PLC与上位机通讯时,通常由上位计算机发出命令给PLC,PLC处于被动状态。台达PLC所有通讯口都遵循Modbus通讯协议,出厂默认的通讯格式为“9600,7,E,1”、ASCII模式。波特率为9600,数据长度为7位,数据校验方式为偶校验,结束字元长度为1位,以上参数可以通过WPL编程软件修改。本文仅以ASCII通讯模式为例实现台达PLC与PC机的通讯。ASCII通讯格式如表1所示:
表1:ASCII通讯格式
地址:地址栈号范围为01~FF十六进制数
功能码:” 01”读多个S、 Y、M、T、C的状态,PLC返回一串数据,其中包含了
读出的一系列装置的十六进制数。
“02”读取S、Y、M、T、C输入状态,PLC返回一串数据,其中包含了
读出的一系列装置的十六进制数。
“03”读取 D、T、C寄存器的值,返回数据串中包含寄存器值的十六进
制数。
“05”强制使S、 Y、M、T、C置位或复位,当数据内容为“FF00”置位,
当为“0000”则复位。
“06”向PLC 的D、T、C寄存器写值, 值应为十六进制的。
LRC校验码: LRC(Longitudinal Redundancy Check)错误校验用于ASCII模式。这个错误校验是一个8位二进制数,可作为2个ASCII十六进制字节传送。把十六进制字符转换成二进制,加上无循环进位的二进制字符和二进制补码结果生成LRC错误校验(参见图)。这个LRC在接收设备进行核验,并与被传送的LRC进行比较,冒号(:)、回车符号(CR)及置入的其他任何非ASCII十六进制字符在运算时忽略不计。范例如表2所示:
表2:LRC校验码计算示例
Address + Function + Data1 + Data2 + Data3 + Data4 = 01 + 03 + 04 + 01 + 00 + 01 =0A 将0A 的值周转换成2 的补数, 0A 的2 补数 = F6。
2 软件实现
我们采用的是基于VB(Visual Basic)平台编写的驱动程序。VB是一个可视化的高级语言,为用户提供直观的工作环境,为监控系统建立良好的用户界面奠定了基础。VB采用事件驱动,编程与调试方便,可以快速地编制出性能良好的应用程序, 通过对串行通信控件MSComm的简单配置,就可以完成串行口的读写操作,是上位机监控系统常用的开发工具。在PLC与上位机通信之前,必须对RS一232通讯端口进行初始化,包括波特率、起始位、数据位、停止位、奇偶校验等,使两者按照相同的格式通讯.C200HX的RS一232C通讯口一般设置为9 600 bps,7位数据位,1个停止位,偶校验,I位起始位.可对VB的MSComm控件的setting属性进行设置来实现对串口的初始化。
2.1 MSComm控件
MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通信功能。常用通信属性如下:
CommPort属性:用来设置或返回通信端口号码。
Settings属性:用来设置波特率、奇偶校验、数据位和停止位。
PortOpen属性:用来设置或返回通信连接口的状态。
Input属性:用于从输^缓存区返回并删除字符。
Output属性:用于将一个字符串写入输出缓存区。
CommEvent属性:在通信错误或事件发生时会产生OnComm事件,CommEvent
属性存有该错误事件的数值码。
2.2通信程序的编写
此程序只涉及PC机与台达PLC通讯部分,计算机对外部信号处理本文稍后介绍 MSComm1.CommPort = 1 ?设置COM1通讯端口 If MSComm1.PortOpen = False Then?打开串口
MSComm1.PortOpen = True
End If
MSComm1 .Settings = "9600,E,7,1"'.Settings:设置并返回波特率
9600、偶校验、数据位7位、
停止位1位的通讯格式
MSComm1 .InBufferCount = 0 ?清空接收缓冲区
MSComm1.OutBufferCount = 0 ?清空发送缓冲区
MSComm1 .InputMode = 0 ?设置数据格式为字符形式 MSComm1.RTSEnable = True ?串口通讯使能
MSComm1.Output =符合协议的字符命令串?PC向PLC发送数据 Text1.Text= MSComm1.Input?PLC 向PC机返回数据 MSComm1.PortOpen = False?数据发送后关闭串口 End Sub
3通信示例
预设PLC站号地址为“01”,以下若没有特殊说明PLC站号地址均为“01”。 “CR”表示回车
3.1 对辅助继电器M0操作
1)置位M0
入地址的低8位,“FF00”表示置位放入Data3 、Data4,LRC为校验码 PC向PLC发送字符命令串=“:01050800FF00F3CR”
PLC向PC返回字符串=“:01050800FF00F3CR”
PC向PLC发送字符命令串=“:010508000000F3CR”
PLC向PC返回字符串=“:010508000000F2CR”
若第三个数据位变为8,则通讯出现错误。
3.2 对文件寄存器D512操作
1)向D512写入一个十进制数,如把D512设定为32, 先将十进制数值转换为四位的十六进制数,32转换为0020,高低8位分别放入Data3 ,Data4
PLC向PC返回字符串=“:010612000020C7CR
”
此值最大值为7(由通讯格式中数据位决定),若该数据内容为0002,则表示读取连续两个寄存器的值,依次类推。1200表示D512的地址。
PC向PLC发送字符命令串=“:010312000001E9CR”
PLC向PC返回字符串“:01030204B046CR”
02表示返回值字节总数为2(一个寄存器的字节数为2),04B0表示目标寄存器D512的数据内容(十六进制)即十进制数1200,46表示校验码。
若第三个数据位变为8,则通讯出现错误。
4 结束语
台达PLC与PC通讯的实现使PLC与GSM模块通讯成为可能。PC机作为中转站完成Modbus通讯协议与GSM通讯协议的转换,使GSM 无线数字蜂窝通讯网络运用于基于PLC的工业控制系统,实现制造装备的远程监测、诊断与维护技术。
参考资料
[1] 杨久红,王小增.MSCOmm控件实现PC与PLC串行通讯[J] .现代电子技术.2005,196(5):
114-115
[2] 林伧意DVP通讯协定V1.1.pdf .台达PLC工程技术部文件 编号:C-PLC-A003
[3] 范逸之.Visual Basical与分布式监控系统—RS-232/485串行通讯[M] .清华大学出版社.2002
篇三:台达PLC与PC机串行通讯以及相应地址
基于VB实现台达PLC与PC串行通讯
随着工业自动化控制技术的不断发展,可编程逻辑控制器(PLC)与上位机之间通讯的应用越来越广泛。在PLC与上位机组成的集散控制系统中,PLC作为下位机完成现场各种信号和数据的采集、运算和完成对系统的底层控制,上位机则可提供人机交互界面,实现数据的处理以及现场数据的实时显示等监视和远程控制等功能。为实现面向产品全生命周期的数字化远程服务经营理念的制造装备的远程监测、诊断与维护技术,随着移动通讯市场的迅速扩大,GSM 无线数字蜂窝通讯网络在我国得到了高速的发展,不但拥有较高的覆盖率,而且相继开放了SMS(短消息)、FAX(传真)、DATA(数据)等业务,为选择高效、廉价的数据传输提供了新的思路。各种组态软件,如:iFix、MCGS、组态王等虽然可以实现PLC的远程监控,但不能实现PLC Modbus通讯协议与GSM模块的通讯协议的转换。本文就是基于这点考虑,运用VB编制操作界面和通信功能,完成台达PLC与PC机串行通讯,这是实现GSM模块与PLC通讯的关键技术所在。
1 通讯硬件及协议简介
1.1通讯硬件组成
台达PLC自带有两个通讯串口(EH系列可扩展第三个通讯口RS-485或RS-422)COM1和COM2。COM1采用标准RS-232接口,它是一种近距离、低干扰、点对点的通讯协议。该接口在下载完PLC程序后一般都处于闲置状态。COM2是标准RS-485接口,可用于用抗干扰能力强、可多台串接组网的通讯方式。在该生产线的控制系统中,COM2已用于PLC与变频器之间的通讯,而一般PC机都自带标准RS-232接口。因此PC机与PLC之间通讯采用COM1(RS-232)接口,连接线采用台达PLC的编程电缆DVPACAB230。
1.2通讯协议介绍
Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。控制器能设置为两种传输模式(ASCII或RTU)中的任何一种在标准的Modbus网络通信。
PLC与上位机通讯时,通常由上位计算机发出命令给PLC,PLC处于被动状态。台达PLC所有通讯口都遵循Modbus通讯协议,出厂默认的通讯格式为“9600,7,E,1”、ASCII模式。波特率为9600,数据长度为7位,数据校验方式为偶校验,结束字元长度为1位,以上参数可以通过WPL编程软件修改。本文仅以ASCII通讯模式为例实现台达PLC与PC机的通讯。ASCII通讯格式如表1所示:
表1:ASCII通讯格式
地址:地址栈号范围为01~FF十六进制数(PLC站号地址)
功能码:” 01”读多个S、 Y、M、T、C的状态,PLC返回一串数据,其中包含了
读出的一系列装置的十六进制数。
“02”读取S、Y、M、T、C输入状态,PLC返回一串数据,其中包含了
读出的一系列装置的十六进制数。
“03”读取 D、T、C寄存器的值,返回数据串中包含寄存器值的十六进
制数。
“05”强制使S、 Y、M、T、C置位或复位,当数据内容为“FF00”置位,
当为“0000”则复位。
“06”向PLC 的D、T、C寄存器写值, 值应为十六进制的。
LRC校验码: LRC(Longitudinal Redundancy Check)错误校验用于ASCII模式。这个错误校验是一个8位二进制数,可作为2个ASCII十六进制字节传送。把十六进制字符转换成二进制,加上无循环进位的二进制字符和二进制补码结果生成LRC错误校验(参见图)。这个LRC在接收设备进行核验,并与被传送的LRC进行比较,冒号(:)、回车符号(CR)及置入的其他任何非ASCII十六进制字符在运算时忽略不计。范例如表2所示:
表2:LRC校验码计算示例
Address + Function + Data1 + Data2 + Data3 + Data4 = 01 + 03 + 04 + 01 + 00 + 01 =0A 将0A 的值周转换成2 的补数, 0A 的2 补数 = F6。
2補數的求法:(1補數再加1)
0A(H) = 0000 1010(B)先取1補數(將b0~b7反相)得1111 0101(B),再加1為 1111 0110(B) = F6(H)即為0A(H)的2補數。
2 软件实现
我们采用的是基于VB(Visual Basic)平台编写的驱动程序。VB是一个可视化的高级语言,为用户提供直观的工作环境,为监控系统建立良好的用户界面奠定了基础。VB采用事件驱动,编程与调试方便,可以快速地编制出性能良好的应用程序, 通过对串行通信控件MSComm的简单配置,就可以完成串行口的读写操作,是上位机监控系统常用的开发工具。在PLC与上位机通信之前,必须对RS一232通讯端口进行初始化,包括波特率、起始位、数据位、停止位、奇偶校验等,使两者按照相同的格式通讯.C200HX的RS一232C通讯口一般设置为9 600 bps,7位数据位,1个停止位,偶校验,I位起始位.可对VB的MSComm控件的setting属性进行设置来实现对串口的初始化。
2.1 MSComm控件
MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通信功能。常用通信属性如下:
CommPort属性:用来设置或返回通信端口号码。
Settings属性:用来设置波特率、奇偶校验、数据位和停止位。
PortOpen属性:用来设置或返回通信连接口的状态。
Input属性:用于从输^缓存区返回并删除字符。
Output属性:用于将一个字符串写入输出缓存区。
CommEvent属性:在通信错误或事件发生时会产生OnComm事件,CommEvent
属性存有该错误事件的数值码。
2.2通信程序的编写
此程序只涉及PC机与台达PLC通讯部分,计算机对外部信号处理本文稍后介绍 MSComm1.CommPort = 1 ?设置COM1通讯端口 If MSComm1.PortOpen = False Then?打开串口
MSComm1.PortOpen = True
End If
MSComm1 .Settings = "9600,E,7,1"'.Settings:设置并返回波特率
9600、偶校验、数据位7位、
停止位1位的通讯格式
MSComm1 .InBufferCount = 0 ?清空接收缓冲区
MSComm1.OutBufferCount = 0 ?清空发送缓冲区
MSComm1 .InputMode = 0 ?设置数据格式为字符形式 MSComm1.RTSEnable = True ?串口通讯使能
MSComm1.Output =符合协议的字符命令串?PC向PLC发送数据 Text1.Text= MSComm1.Input?PLC 向PC机返回数据 MSComm1.PortOpen = False?数据发送后关闭串口 End Sub
3通信示例
预设PLC站号地址为“01”,以下若没有特殊说明PLC站号地址均为“01”。 “CR”表示回车
3.1 对辅助继电器M0操作
1)置位M0
入地址的低8位,“FF00”表示置位放入Data3 、Data4,LRC为校验码 PC向PLC发送字符命令串=“:01050800FF00F3CR”
PLC向PC返回字符串=“:01050800FF00F3CR”
PC向PLC发送字符命令串=“:010508000000F3CR”
PLC向PC返回字符串=“:010508000000F2CR”
若第三个数据位变为8,则通讯出现错误。
3.2 对文件寄存器D512操作
1)向D512写入一个十进制数,如把D512设定为32, 先将十进制数值转换为四位的十六进制数,32转换为0020,高低8位分别放入Data3 ,Data4
PLC向PC返回字符串=“:010612000020C7CR
”
此值最大值为7(由通讯格式中数据位决定),若该数据内容为0002,则表示读取连续两个寄存器的值,依次类推。1200表示D512的地址。
PC向PLC发送字符命令串=“:010312000001E9CR”
PLC向PC返回字符串“:01030204B046CR”
02表示返回值字节总数为2(一个寄存器的字节数为2),04B0表示目标寄存器D512的数据内容(十六进制)即十进制数1200,46表示校验码。
若第三个数据位变为8,则通讯出现错误。
4 结束语
台达PLC与PC通讯的实现使PLC与GSM模块通讯成为可能。PC机作为中转站完成Modbus通讯协议与GSM通讯协议的转换,使GSM 无线数字蜂窝通讯网络运用于基于PLC的工业控制系统,实现制造装备的远程监测、诊断与维护技术。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1156092664@qq.com 举报,一经查实,本站将立刻删除。