远动传输规约之IEC60870-5-104篇

1)IEC-60870-5-104的规约结构
IEC-60870-5-104远动规约使用的参考模型源出于开放式系统互联的ISO-OSI参考模型,但它只采用其中的5层,其结构如图所示:
 远动传输规约之IEC60870-5-104篇
IEC60870-5-104实际上是将IEC60870-5-101与TCP/IP(Transmission Control Protocol/Internet Protocol)提供的网络传输功能相组合,使得IEC60870-5-101在TCP/IP内各种网络类型都可使用,在上图的5层参考模型中,IEC60870-5-104实际上处于应用层协议的位置;基于TCP/IP的应用层协议很多,每一种应用层协议都对应着一个网络端口号,根据其在传输层上使用的是TCP协议(传输控制协议)还是UDP协议(用户数据报文协议),端口号又分为TCP端口号和UDP端口号,其中TCP协议是一种面向连接的协议,为用户提供可靠的、全双工的字节流服务,具有确认、流控制、多路复用和同步等功能,适用于数据传输,而UDP协议则是无连接的,每个分组都携带完整的目的地址,各分组在系统中独立地从数据源走到终点,它不保证数据的可靠传输,也不提供重新排列次序或重新请求功能,为了保证可靠地传输远动数据,IEC60870-5-104规定传输层使用的是TCP协议,因此其对应的端口号是TCP端口。IEC60870-5-104规定本标准使用的端口号为2404,并且此端口号已经得到IANA(互联网地址分配机构,Internet Assigned Numbers Authority)的确认。对于基于TCP的应用程序来说,存在两种工作模式,即服务器模式和客户机模式。服务器模式和客户机模式的区别是,在建立TCP连接时,服务器从不主动发起连接请求,它一直处于侦听状态,当侦听到来自客户机的连接请求后,则接受此请求,由此建立一个TCP连接,服务器和客户机就可以通过这个虚拟的通信链路进行数据的收发。IEC60870-5-104规定控制站(即调度系统)作为客户机,而被控站(即站端RTU)作为服务器。
 
2)IEC-60870-5-104的应用规约数据单元的结构
IEC-60870-5-104的应用规约数据单元(APDU)的结构如图所示,
远动传输规约之IEC60870-5-104篇
它由应用规约控制信息(APCI)和应用服务数据单元(ASDU)组成,和IEC-60870-5-101的帧结构相比,其中应用服务数据单元是相同的,相异之处在于,IEC-60870-5-104使用应用规约控制信息(APCI),而IEC-60870-5-101使用链路规约控制信息(LPCI)。在APDU中,启动字符68H定义了数据流内的起始点,应用规约数据单元的长度定义了APDU主体的长度; 需要注意的是,IEC 60870-5-104规定一个APDU报文(包括启动字符和长度标识)不能超过255个字节,因此APDU最大长度为253(等于255减去启动和长度标识共两个8位位组),ASDU的最大长度为249,这个要求限制了一个APDU报文最多能发送121个不带品质描述的归一化测量值或243个不带时标的单点遥信信息,若RTU采集的信息量超过此数目,则必须分成多个APDU进行发送。
 
3)IEC-60870-5-104的数据帧类型
APDU控制域包括4个8位位组,根据其定义,可以将APDU分成3种报文格式,即I格式、S格式和U格式。
①I格式用于编号的信息传输,包含ASDU。
远动传输规约之IEC60870-5-104篇
②S格式用于编号的监视功能,用于确认I格式的数据帧。
远动传输规约之IEC60870-5-104篇
③U格式未编号的控制功能,用于启动数据传输,停止数据传输,测试链路。
远动传输规约之IEC60870-5-104篇
控制域的第一个8位位组的第1比特=0定义了I格式,它表明APDU中包含应用服务数据单元ASDU;控制域的第一个8位位组的第1比特为1,第2比特为0定义了S格式,此种格式的APDU不包含ASDU,当报文接收方收到发送方的I格式报文后,如果没有I格式报文需要发送给对方,可以向对方发送S格式报文以对所接收到的报文进行确认;控制域的第一个8位位组的第1比特=1,第2比特=1定义了U格式,此种格式的APDU也不含ASDU,其作用主要在于实现3种控制功能,即启动子站进行数据传输(STARTDT)、停止子站的数据传输(STOPDT)和TCP链路测试(TESTFR)。
 
4)应用规约数据单元(APDU)的发送和接收序号的维护
IEC 60870-5-104采用RFC 793/RFC791(即TCP/IP)协议。IP协议负责将数据从一处传往另一处,TCP负责控制数据流量,并保证传输的正确性。 由于在最底层的计算机通信网络提供的服务是不可靠的分组传送,所以当传送过程中出现错误以及在网络硬件失效或网络负荷太重时,数据包有可能丢失、延迟、重复和乱序,因此应用层协议必须使用超时和重传机构。为了防止I格式报文在传送过程中丢失或重复传送,IEC 60870-5-104的I格式报文的控制域定义了发送序号N(S)和接收序号R(S), 发送方每发送一个I格式报文,其发送序号应加1,接收方每接收到一个与其接收序号相等的I格式报文后,其接收序号也应加1。 需要注意的是,每次重新建立TCP连接后,调度主站和子站RTU的接收序号和发送序号都应清零,因此在双方开始数据传送后,接收方若收到一个I格式报文,应判断此I格式报文的发送序号是否等于自己的接收序号。若相等则应将自己接收序号加1,若此I格式报文的发送序号大于自己的接收序号,这说明发送方发送的一些报文出现了丢失;若此I格式报文的发送序号小于自己的接收序号,这意味着发送方出现了重复传送。此外,I格式和S格式报文的接收序号表明了发送该报文的一方对已接收到的I格式报文的确认,若发送方发送的某一I格式报文后长时间无法在对方的接收序号中得到确认,这就意味着发生了报文丢失。当出现上述这些报文丢失、错序的情况时,通常意味着TCP连接出现了问题,发送方或接收方应关闭现在的TCP连接然后再重新建立新的TCP连接,并在新的TCP连接上重新开始会话过程。
    在主站端和子站RTU端进行通信时,接收方可以使用S格式报文(当有应用服务单元需要发送给对方时,可使用I格式报文)对已接收到的I格式报文进行确认,以免发送方超时收不到确认信息而重新建立TCP连接。这就存在一个接收方收到多少个I格式报文进行一次确认的问题,以及发送方应在多少个I格式报文未得到确认时停止发送数据。IEC 60870-5-104规定了两个参数k和w,其取值范围为1到32767( 注:当溢出时重新计数),其中k表示发送方在有k个I格式报文未得到对方的确认时,将停止数据传送,w表示接收方最迟在接收了w个I格式报文后应发出认可;IEC 60870-5-104规定k和w的默认值分别为12个APDU和8个APDU。在实际中,k和w的具体取值可以根据TCP连接双方的数据通信量来加以确定,对于子站RTU端来说,每收到一个调度端的I格式报文都应立即进行响应,其w的取值实际上为1,由于RTU端可以循环向调度端发送遥信、遥测等信息,因此k的取值与其循环发送的定时周期有关,通常12到20个APDU就足够了;对于主站端,由于不停接收到RTU的数据,因此应及时地给以确认,通常w取小于8个APDU的值。
 
5)关于超时时间的理解
为了能对TCP连接进行检查和维护,IEC 60870-5-104规定了几个超时时间,即t0、t1、t2、t3,它们的取值范围为1~255s,准确度为1s,其缺省定义如图所示:
远动传输规约之IEC60870-5-104篇
 
t0规定了主站端和子站RTU端建立一次TCP连接的最大允许时间,主站端和子站RTU端之间的TCP连接在实际运行中可能经常进行关闭和重建,这发生在4种情况下: 主站端和子站RTU端之间的I格式报文传送出现丢失、错序或者发送U格式报文得不到应答时,双方均可主动关闭TCP连接,然后进行重建; 主站系统重新启动后将与各个子站重新建立TCP连接; 子站RTU合上电源或由于自恢复而重新启动后,将重建连接; 子站RTU收到主站端的RESET_PROCESS(复位远方终端)信号后,将关闭连接并重新初始化,然后重建连接。每次建立连接时,RTU都调用socket的listen( )函数进行侦听,主站端调用socket的connect( )函数进行连接,如果在t0时间内未能成功建立连接,可能网络发生了故障,主站端应该向运行人员给出警告信息。 t1规定发送方发送一个I格式报文或U格式报文后,必须在t1的时间内得到接收方的认可,否则发送方认为TCP连接出现问题并应重新建立连接。 t2规定接收方在接收到I格式报文后,若经过t2时间未再收到新的I格式报文,则必须向发送方发送S格式帧对已经接收到的I格式报文进行认可,显然t2必须小于t1。 t3规定调度端或子站RTU端每接收一帧I帧、S帧或者U帧将重新触发计时器t3,若在t3内未接收到任何报文,将向对方发送测试链路帧TESTFR。
 
6)IEC-60870-5-104的实施过程
    TCP连接的建立过程。站端RTU作为服务器,在建立TCP连接前,应一直处于侦听状态并等待调度端的连接请求,当TCP连接已经建立,则应持续地监测TCP连接的状态,以便TCP连接被关闭后能重新进入侦听状态并初始化一些与TCP连接状态有关的程序变量;调度端作为客户机,在建立TCP连接前,应不断地向站端RTU发出连接请求,一旦连接请求被接收,则应监测TCP连接的状态,以便TCP连接被关闭后重新发出连接请求。需要注意的是,每次连接被建立后,调度端和站端RTU应将发送和接收序号清零,并且子站只有在收到了调度系统的STARTDT后,才能响应数据召唤以及循环上送数据,但在收到STARTDT之前,子站对于遥控、设点等命令仍然应进行响应。
    ②循环遥测数据传送。对于遥测量,可以使用类型标识为9(归一化值)、11(标度化值)和13(短浮点数)的ASDU定时循环向调度端发送。
    ③总召唤过程。调度主站向子站发送总召唤命令帧(类型标识为100,传输原因为6),子站向主站发送总召唤命令确认帧(类型标识为100,传输原因为7),然后子站向主站发送单点遥信帧(类型标识为1)和双点遥信帧(类型标识为3),最后向主站发送总召唤命令结束帧(类型标识为100,传输原因为10)。
    ④校时过程。调度主站向子站发送时间同步帧(类型标识为104,传输原因6),子站收到后立即更新系统时钟并向主站发送时间同步确认帧(类型标识为104,传输原因7)。需要注意的是,在以太网上进行时钟同步,要求最大的网络延时小于接收站时钟所要求的准确度,即如果网络提供者保证在网络中的延时不会超过400ms(典型的X.25 WAN值),在子站所要求的准确度为1s,这样时钟同步才有效。使用这个校时过程可以避免成百上千地在子站安装GPS卫星定位系统,但如果网络延时很大或者子站所要求的准确度很高(例如1ms),则变电站综合自动化系统必须安装精确度很高的全球定位系统(GPS),而以上的时钟同步过程实际上就没有意义了。
    ⑤子站事件主动上传。以太网对于调度端和子站端都是一个全双工高速网络,因此IEC6080-5-104必然使用平衡式传输。当子站发生了突发事件,子站将根据具体情况主动向主站发送下述报文:遥信变位帧(单点遥信类型标识为1, 双点遥信类型标识为3,传输原因为3)、遥信SOE帧(单点遥信类型标识为30, 双点遥信类型标识为31,传输原因为3)、调压变分接头状态变化帧(类型标识为32,传输原因为3)、继电保护装置事件(类型标识为38)、继电保护装置成组启动事件(类型标识为39)、继电保护装置成组输出电路信息(类型标识为40)。
    ⑥遥控/遥调过程。主站发送遥控/遥调选择命令(类型标识为46/47,传输原因为6,S/E=1),子站返回遥控/遥调返校(类型标识为46/47,传输原因为7,S/E=1),主站下发遥控/遥调执行命令(类型标识为46/47,传输原因为6,S/E=0),子站返回遥控/遥调执行确认(类型标识为46/47,传输原因为7,S/E=0),当遥控/遥调操作执行完毕后,子站返回遥控/遥调操作结束命令(类型标识为46/47,传输原因为10,S/E=0)。
    ⑦召唤电度过程。主站发送电度量冻结命令(类型标识为101,传输原因为6),子站返回电度量冻结确认(类型标识为101,传输原因为7),然后子站发送电度量数据(类型标识为15,传输原因为37),最后子站发送电度量召唤结束命令(类型标识为101,传输原因为10)。
 
7)其它
104规约中应用服务数据单元结构(ASDU)的结构如图:
远动传输规约之IEC60870-5-104篇 
注1:应用服务数据单元结构(ASDU)结构如下:
①一个8位位组表示类型标识;
②一个8位位组表示可变结构限定词;
③两个8位位组表示传送原因;
④两个8位位组表示应用服务数据单元公共地址;
⑤三个8位位组表示信息体地址。
注2:104规约中,应用规约数据单元(APDU)没有校验、没有结束字符 (由于底层有TCP/IP,所以不需要额外判断一帧的正确与完整性)。
 
参考文献:
【1】赵渊 沈智健. 基于TCP/IP的IEC60870-5-104远动规约在电力系统中的应用.
### 机械臂通信协议和接口的IT技术实现 #### 常见工业通信协议的选择 对于机械臂控制系统而言,选择合适的通信协议至关重要。常见的工业自化环境中使用的通信协议包括但不限于MQTT协议、Modbus协议、OPC UA协议、自定义协议、IEC 104 协议(IEC 60870-5-104),以及特定厂商PLC协议如西门子S7协议、三菱MC协议及其FX编程口协议[^1]。 这些协议各有特点,在不同应用场景下具有不同的优势: - **MQTT**:适用于低带宽环境下的消息传输,特别适合物联网(IoT)设备之间的数据交换。 - **Modbus**:广泛应用于工业电子领域的一种串行通讯协议,易于理解和实施。 - **OPC UA**:提供了一个安全可靠的机制来访问实时生产过程中的信息和服务。 - **IEC 104 (IEC 60870-5-104)**:专为电力系统控制设计的标准规约- **PLC专用协议(如S7, MC)**:由各制造商开发用于其自家产品线间的高效互连互通方案。 针对机械手臂这类复杂运装置来说,通常会采用支持高精度同步功能且具备良好开放性的标准或半标准化协议作为主要交互手段;而对于现场级的数据采集,则可能更多依赖于简单易用的传统总线型协议。 #### 接口与硬件连接方式 除了软件层面的协议外,物理层面上也需要考虑如何建立稳定有效的电气连接。这涉及到选用恰当类型的接插件、电缆规格等因素,并确保遵循相应的国际/国家标准以保障兼容性和安全性。例如RS232/485串行端口、Ethernet RJ45网口等都是较为普遍的形式之一。 另外值得注意的是随着无线网络技术的发展进步,越来越多的新一代智能装备开始尝试通过Wi-Fi/ZigBee等方式来进行程操控管理,从而摆脱传统有线束缚带来的局限性并进一步拓展应用范围。 #### 实现案例分析 假设现在有一个基于ROS(Robot Operating System)框架构建的小型六轴关节式协作机器人项目需求,为了能够方便快捷地与其他外围传感器节点相联结,可以采取如下措施: 1. 使用带有USB转CAN模块的Arduino板卡充当简易网关角色; 2. 配置PC主机安装必要的驱程序以便识别上述新增加出来的虚拟COM端; 3. 开发Python脚本调用pyserial库读取来自外部设备传入的消息帧体内容; 4. 将解析后的有效载荷封装成话题形式发布到全局事件总线上供其他订阅者消费处理。 ```python import serial import rospy from std_msgs.msg import String def talker(): pub = rospy.Publisher('chatter', String, queue_size=10) ser = serial.Serial('/dev/ttyUSB0', baudrate=9600) while not rospy.is_shutdown(): data = ser.readline().decode().strip() if data: rospy.loginfo(data) pub.publish(data) if __name__ == '__main__': try: rospy.init_node('arduino_serial') talker() except rospy.ROSInterruptException: pass ``` 此段代码展示了怎样利用开源工具链快速搭建起一套完整的软硬一体化解决方案雏形,当然实际工程实践中还需要综合考量诸多细节之处才能达到预期效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值