网站首页 > 基础教程 正文
工作中用的比较多的是三菱的PLC的 Fx5U和Fx3U,它们有多种通信协议,我们学习时先从1种入手,再扩展到其他的。三菱的说明书几百页,我们要把说明书读薄,只选其中通信协议部分看就好了。而上位机一开始只需要了解读写一个字元/位元就可以了。
三菱FX-3U 计算机专用协议通信方式,其通讯命令字和通讯格式介绍如下:
命令字 注释
BR 以1点为单位,读出位元件的状态
WR 以16点为单位,读出位元件的状态,或以1字为单位,读出字元件的值
BW 以1点为单位,写入位元件的状态
WW 以16点为单位,写入位元件的状态,或以1字为单位,写入值到字元件
PC发送给PLC的通信命令格式
约定说明:ENQ为请求标志,ASCII值5
ACK为正确标志,ASCII值6
STX为请求标志,ASCII值2
EXT为请求标志,ASCII值3
表格中粗体字为需要求和效验的部分;
和效验为每一项的ASCII值的总和转换成十六进制后,取其低两位;
站号、PLC号、元件数量、和效验都是以十六进制表示;
等待延时为0-150毫秒,以十六进制0H-FH表示,如100ms为AH
1) 批量读出位元件—BR指令格式
例如:要读出站号为5的PLC的X40到X44共5点的状态值,延时100毫秒,
假设PLC中X40与X43为OFF,其余为ON,则指令数据如下:
注释: 请求 站号 PLC号 命令 延时 元件首地址 元件数量 和校验
代码: ENQ 0 5FF B R A X 0 0 4 0 0 5 4 7
ASCII码: 05H 30H 35H 46H 46H 42H 52H 41H 58 30H 30H 34H 30H 30H 35H 34H 37H
只要将以上代码以字符串形式串口发送到PLC,就会有正确的回应信息,如下:
注释: 头 站号 PLC号 位元件状态值 尾 和校验
代码: STX 0 5 F F 0 1 1 0 1 EXT E 7
ASCII码: 02H 30H 35H 46H 46H 30H 31H 31H 30H 31H 03H 45H 37H
2) 批量读出字元件—WR指令格式
例如 读站号0的PLC的D10的字元值
注释: 请求 站号 PLC号 命令 延时 元件首地址 元件数量 和校验
代码: ENQ 0 0FF W R 0 D 0 0 1 0 0 2 2 C
ASCII码: 05H 30H 30H 46H 46H 57H 52H 30H 44H 30H 30H 31H 30H 30H 32H 32H 43H
3) 批量写入位元件—BW指令格式
...
4) 批量写入字元件—WW指令格式
例如 写入站号0的PLC的D10的字元值=11
注释: 请求 站号 PLC号 命令 延时 元件首地址 数量 写入值 和校验
代码: ENQ 0 0FF WW 0 D 0 0 1 0 0 1 000B 02
ASCII码: 05H 30H 30H 46H 46H 57H 57H 30H 44H 30H 30H 31H 30H 30H 31H 30H 30H 30H 42H 30H 32H
5U则是用MELSEC通讯协议(简称MC协议)通信,
但MC协议的通讯格式有很多种:3E、3C、4E,4C帧格式, 个人感觉3C比4C好用,3C是ASCII文本格式,3E是二进制格式
下次再举例讲一下3C格式。。。 TO BE CONTINUE...
猜你喜欢
- 2024-12-26 C#如何获取计算机或硬件信息 c#获取其他程序界面内容
- 2024-12-26 C#中把PDF导出为图片的方法分享 c# 生成 pdf
- 2024-12-26 C# 操作Excel文件之NPOI (一) c#操作excel文件读写
- 2024-12-26 解释C#中的任务并?库(TPL)及其?途
- 2024-12-26 解释 C# 中的任务并?库是如何?作的
- 2024-12-26 NPOI在C#中的用法 c++ npoi
- 2024-12-26 C#程序员参考手册 高清版 c#程序设计实用教程
- 2024-12-26 C#远程唤醒指定客户端代码 c#远程通讯
- 2024-12-26 一起来看看C#的圈复杂度 c# :?
- 2024-12-26 TCP网络编程中connect()、listen()和accept()三者之间的关系
- 05-24php实现三方支付的方法有哪些?
- 05-24CosmicSting 漏洞影响 75% 的 Adobe Commerce 和 Magento 网站
- 05-24Java接口默认方法的奇妙用途
- 05-24抽象类和接口
- 05-24详解Java抽象类和接口
- 05-24拒绝接口裸奔!开放API接口签名验证
- 05-24每天学Java!Java中的接口有什么作用
- 05-24Java:在Java中使用私有接口方法
- 最近发表
- 标签列表
-
- jsp (69)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- tail-f (79)
- deletesql (62)
- c++模板 (62)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- console.table (62)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)