开源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
监控软件能否共享?
谢。
继续关注楼主的更新。。。。 oldbeginner 发表于 2013-11-27 17:19
谢谢。
不是modbus协议? {:shocked:} 古老的是 明码 ,后面的吸取教训,改加密传输了 向楼主学习了 谢谢,好东西 支持楼主,学习中
页:
[1]