各个品牌的plc使用的协议略有不同,除了各自的专用协议外(五花八门),常见的协议有:
1.
tcp/ip
2.
modbus
rtu
3.
modbus
tcp
4.
opc
da
5.
opc
ua
6.
ethernet/ip
7.
ethercat
8.
profibus
9.
profinet
10.
canopen
不同点,内容太多了,不好一一解答,可以度娘,有很多比较差异的文章
各个品牌的PLC使用的协议略有不同,除了各自的专用协议外(五花八门),常见的协议有:
1.
TCP/IP
2.
MODBUS
RTU
3.
MODBUS
TCP
4.
OPC
DA
5.
OPC
UA
6.
Ethernet/IP
7.
EtherCAT
8.
ProfiBUS
9.
Profinet
10.
CANopen
不同点,内容太多了,不好一一解答,可以度娘,有很多比较差异的文章
1、私有协议
- 每家PLC厂商使用的技术都不相同,为了性能、成本、扩展性和稳定性等因素,都会设计一套自己专用的通信协议。私有协议通常是保密或关键部分保密的,即使开放私有协议一般也不会有人愿意去开发相关的套件。可以认为私有协议是PLC厂商自己的产品专用的。它的效率和稳定性最好。
2、公共协议
- 公共协议有两种,一种是少数被开放的私有协议得到大家的认可后成为了行业的通例,一种是公共协议的制定组织专门设计的通信协议。前者具有很好的性能、稳定性、易用性,后者则具有更强大的功能,但使用起来不是很方便。
- 公共协议里最有名的是Modbus,而Modbus中最常用的是RTU格式(终端通常是485总线),其次是TCP/IP格式(终端通常是以太网接口),非常少用的是ASCII格式(用于485低性能设备,所以很少见)。Modbus在中国有对应的国家标准:GB/T 19582.1-2008 PDU部分、GB/T 19582.2-2008 RTU和ASCII部分、GB/T 19582.3-2008 TCP/IP部分。Modbus协议并不是中国制定的,它是引进标准实际上是某IEC标准的翻译。Modbus协议在国内非常流行,国内也有不少基于Modbus改造的私有协议(只是改造,不是改进或改良)。改造的操作无非是增加数据长度限制、增加一些附加信息、改变了流程机制、嵌套于开放性的网络传输协议(如MQTT)。除了Modbus协议的整体设计很优秀外,它的校验算法也非常有名。Modbus-CRC16校验在环境设备通信协议中也有借鉴。说是借鉴,事实上我不确定是借鉴还是另外那个标准抄错了。Modbus协议的校验是归零校验,即完整报文通过校验算法后得到的校验码总是0。这一特性可以很好地嵌入单片机电路中,利用校验码确定是否完成报文。STM32芯片就内置了Modbus-CRC16电路,这样就不需要使用软件进行校验码的计算了。Modbus-CRC16算法还是可迭代的。Modbus-TCP/IP支持异步流程,即可以高并发读写数据。
- Profibus是欧洲PLC供应商使用的一种公共通信协议,它是令牌网络,在485总线上实现了一定程度上的高并发能力,支持多主通信。它的缺点是有一个比较麻烦的状态机。自动化系统的状态机与IT系统的状态机有一个明显的不同,就是自动化系统的状态机不能保证稳定运行。这就意味着Profibus的状态机需要处理线路故障。使用Profibus不是看懂标准,然后开发一套解码器那么简单,状态机的存在使Profibus不可能作为通用的组件提供给二次开发人员,总会有什么限制使一套基于Profibus的设计只能用于特定的场景。
- CC-Link协议是日本PLC厂商使用的公共通信协议,由于是日本范围用的技术,所以竞争力不如Profibus。一般用于与人机界面连接。
- OPC-UA是一种类似工业数据库的协议,它的使用方法类似于SQL数据库,导入驱动组件,调用API,连接、登入、增删改查。但OPC-UA是非关系型数据库,类似于MongoDB,有权限的帐号可以直接创建一个数据单元,但OPC-UA保存数值,键的类型是一个路径,而ModgoDB保存的是文本文件,没有键的概念。OPC-UA是一种键值对非关系型数据库,功能也和数据库一样,用于不同系统之间的数据共享。它的性能据称优于SQL数据库,因为它只需要保存简单的几种类型,写操作以改写的方式为主,而且主要是数值,而SQL数据库需要维护复杂的二维表、多元化的类型甚至还有外键和索引表,其写操作以插入为主。关于OPC-UA是否有意义,我认为OPC-UA是大型系统使用的数据库,具有一定规模的工程其性能受限于多方面,往往SQL数据库性能并不成为瓶颈,OPC-UA并不是很有用。况且SQL数据库在高并发和热备份的技术上要更成熟,成本也更低(一些流行的SQL数据库是免费的,完全可以代替OPC-UA)。OPC-UA的优势也许在于它的使用场景限制更多,使得PLC也可以支持OPC-UA。如果PLC使用SQL数据库,又会遇到表结构的规范问题。对于上位机而言,各种SQL数据库都是万能的数据库,没有特殊需求的话最好别用OPC-UA。
3、开放性协议
- 所谓开放性协议指的是基于一个开放性的框架开发的私有协议。如Ether-CAT,其实是对以太网的硬件上的改造,使其响应时间缩短。它可以兼容普通网卡,只是连接普通网卡时性能会下降。开放性协议还有MQTT,通常一个供应商声称自己支持某个开放性协议的时候,他其实隐藏了一个关键要素,就是开放性协议没有数据定义,也就是无法仅根据供应商声称支持MQTT就确定这个设备是可以接入的,影响因素有很多。有的供应商在MQTT之下又增加了一层加密协议,这种情况就是无法简单接入的,受限于技术条件,有时即使供应商希望用户使用自己的MQTT协议,给出所有技术资料,也不能成功接入。