oldbeginner 发表于 2013-11-27 15:27:29

开源PLC学习笔记12(再从51开始 串口监视)——2013_11_27

本帖最后由 oldbeginner 于 2013-11-27 15:35 编辑

受到这篇文章启发,台达PLC程序破解方法也能用于三菱PLC
http://www.dqjsw.com.cn/dianqi/zhuanti/sanlingPLC/122883.html


首先,第一次让PROTEUS仿真和三菱梯形图软件通讯成功。利用淘宝上买的仿三菱工控板,然后利用串口精灵监视,分析通讯协议。


监视情况如下,发和收一清二楚。



实现通讯成功的代码非常简单
                if(Buffer==ENQ)      // 发送请求                                        ==== 1. 3. 5. 7. 10. 12. 14.(14开始下发数据)
                {
                        UartSendchar(ACK);
                }
                else if(STXETX)      // 可识别的                        
                {
                        if(sumdata==sumcheck((unsigned char *)(Buffer+1),(UartReceiveCounter-3)))
                        {
                              if(K00E0202)                                                
                              {
                                        UartSendByte((unsigned char *)OrderSend1,8);
                              }

                              else if(K00ECA02)                                                
                              {
                                        UartSendByte((unsigned char *)OrderSend2,8);
                              }
                              else if(K2480000F00)                                                
                              {
                                        UartSendchar(ACK);
                              }
                              。。。。
                        。。。
                        }
因为define不能定义以数字开头的变量,加了一个K。

用到的一些定义如下:
unsigned char code OrderSend1[]={0x02,0x36,0x32,0x36,0x36,0x03,0x44,0x37};      //      '6266'PLC型号 FX1N;'C256'PLC型号 FX1S.
unsigned char code OrderSend2[]={0x02,0x31,0x41,0X30,0X30,0x03,0x44,0x35};

#define ENQ         0x05                        //请求
#define ACK         0x06                         //PLC 接收正确响应
#define NACK         0x15                         //PLC 接收错误响应
#define STX         0x02                         //报文开始
#define ETX         0x03                         //报文结束

#define STXETX (Buffer==STX)&(Buffer==ETX)
#define E01 (Buffer==0x45)&&(Buffer ==0x30)&&(Buffer ==0x31)
#define E11 (Buffer==0x45)&&(Buffer ==0x31)&&(Buffer ==0x31)

#define K00E0202 (Buffer==0x30)\
                              &&(Buffer ==0x30)\
                              &&(Buffer ==0x45)\
                              &&(Buffer ==0x30)\
                              &&(Buffer ==0x32)\
                              &&(Buffer ==0x30)\
                              &&(Buffer ==0x32)
#define K00ECA02 (Buffer==0x30)\
                              &&(Buffer ==0x30)\
                              &&(Buffer ==0x45)\
                              &&(Buffer ==0x43)\
                              &&(Buffer ==0x41)\
                              &&(Buffer ==0x30)\
                              &&(Buffer ==0x32)
#define K2480000F00 (Buffer==0x32)\
                              &&(Buffer ==0x34)\
                              &&(Buffer ==0x38)\
                              &&(Buffer ==0x30)\
                              &&(Buffer ==0x30)\
                              &&(Buffer ==0x30)\
                              &&(Buffer ==0x46)\
                              &&(Buffer ==0x30)\
                              &&(Buffer ==0x30)

Excellence 发表于 2013-11-27 17:12:25

监控软件能否共享?
谢。

oldbeginner 发表于 2013-11-27 17:19:44

Excellence 发表于 2013-11-27 17:12
监控软件能否共享?
谢。



lmt50211 发表于 2013-11-28 08:25:24

继续关注楼主的更新。。。。

Excellence 发表于 2013-11-28 08:42:16

oldbeginner 发表于 2013-11-27 17:19


谢谢。
         
         

kingie2006 发表于 2013-11-28 08:52:47

不是modbus协议?

wkman 发表于 2013-11-28 17:28:57

{:shocked:} 古老的是 明码 ,后面的吸取教训,改加密传输了

lijunfeng 发表于 2013-12-16 17:14:35

向楼主学习了

hys668 发表于 2014-10-2 14:12:13

谢谢,好东西

yx20016 发表于 2015-6-23 11:35:04

支持楼主,学习中
页: [1]
查看完整版本: 开源PLC学习笔记12(再从51开始 串口监视)——2013_11_27