C#上位机序列5: 三菱通信(FX-3U SerialOverTcp)
C#上位机序列1: 多线程(线程同步,事件触发,信号量,互斥锁,共享内存,消息队列)
设备信息
测试结果
D值测试
Y值写入后读取测试
一、注意事项
1. 每次给PLC发送指令后,必须等待PLC的应答完成才能发送下一条指令;
2. 报文都是十六进制ASCII码的形式
3. 相关指令
指令 命令码(ASCII码) 操作原件
读 0(30H) X,Y,M,S,T,C,D
写 1(31H) X,Y,M,S,T,C,D
置位 7(37H) X,Y,M,S,T,C
复位 8(38H) X,Y,M,S,T,C
二、通信格式
读指令
请求:STX(1) + CMD(1) + Address(4) + Length(2) + ETX(1) + SUM(2,从cmd到etx)
PLC响应:STX(1) + 值(n字节) + ETX(1) + SUM(2)
写指令
请求:STX(1) + CMD(1) + Address(4) + Length(2) + Data(4*n)+ ETX(1) + SUM(2,从cmd到etx)
PLC响应:STX(1) + 值(1字节 正确:06H;错误:15H) + ETX(1) + SUM(2)
三、通信说明(Y类型)
地址换算规则
Y0 内部地址位 00A0->转ascii码 30 30 41 30 Y00/Y01/Y02/Y03/Y04/Y05/Y06/Y07,只是其中的一个位
Y1 内部地址位 00A1->转ascii码 30 30 41 31 同上
Y2 内部地址位 00A2->转ascii码 30 30 41 32 同上
读取Y0,范围(Y00-Y07)
读取Y1,范围(Y10-Y17)
请求:02 30 30 30 41 31 30 31 03 36 36
读取Y2,范围(Y20-Y27)
请求:02 30 30 30 41 32 30 31 03 36 37
报文:读取Y0,范围(Y00-Y07)
请求:02 30 30 30 41 30 30 31 03 36 35
响应:02 32 30 03 36 35(32 30 -> 20H -> 转二进制 0010 0000 表示:5亮 )
响应:02 36 30 03 36 39(36 30 -> 60H -> 转二进制 0110 0000 表示:5,6亮 )
报文:写入bool(设置Y006 1)
请求:02 37 30 36 30 35 03 30 35
响应:06
报文:写入bool(设置Y006 0)
请求:02 38 30 36 30 35 03 30 36
响应:06
四、通信说明(D类型)
地址换算规则
D123 地址为: address = 123*2 + 4096 = 4342 = 10F6 -> 转ascii码 31 30 46 36
报文:读取D123 short类型(2个字节)
请求:02 30 31 30 46 36 30 32 03 37 32
响应:02 30 30 30 30 03 43 33 -- 值为0
响应:02 30 31 30 30 03 43 34 -- 值为1
报文:写入D123 short类型(2个字节),值1
请求:02 31 31 30 46 36 30 32 30 31 30 30 03 33 34
响应:06