|
本帖最后由 oldbeginner 于 2013-11-27 15:35 编辑
受到这篇文章启发,台达PLC程序破解方法也能用于三菱PLC
http://www.dqjsw.com.cn/dianqi/zhuanti/sanlingPLC/122883.html
首先,第一次让PROTEUS仿真和三菱梯形图软件通讯成功。利用淘宝上买的仿三菱工控板,然后利用串口精灵监视,分析通讯协议。
监视情况如下,发和收一清二楚。
实现通讯成功的代码非常简单
- if(Buffer[0]==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[0]==STX)&(Buffer[UartReceiveCounter-3]==ETX)
- #define E01 (Buffer[1]==0x45)&&(Buffer[2] ==0x30)&&(Buffer[3] ==0x31)
- #define E11 (Buffer[1]==0x45)&&(Buffer[2] ==0x31)&&(Buffer[3] ==0x31)
- #define K00E0202 (Buffer[1]==0x30)\
- &&(Buffer[2] ==0x30)\
- &&(Buffer[3] ==0x45)\
- &&(Buffer[4] ==0x30)\
- &&(Buffer[5] ==0x32)\
- &&(Buffer[6] ==0x30)\
- &&(Buffer[7] ==0x32)
- #define K00ECA02 (Buffer[1]==0x30)\
- &&(Buffer[2] ==0x30)\
- &&(Buffer[3] ==0x45)\
- &&(Buffer[4] ==0x43)\
- &&(Buffer[5] ==0x41)\
- &&(Buffer[6] ==0x30)\
- &&(Buffer[7] ==0x32)
- #define K2480000F00 (Buffer[1]==0x32)\
- &&(Buffer[2] ==0x34)\
- &&(Buffer[3] ==0x38)\
- &&(Buffer[6] ==0x30)\
- &&(Buffer[6] ==0x30)\
- &&(Buffer[4] ==0x30)\
- &&(Buffer[5] ==0x46)\
- &&(Buffer[6] ==0x30)\
- &&(Buffer[7] ==0x30)
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|