在工作中难免遇到和别人对接的情况,遇到对方是个通情达理的高手那还好,双方通力合作很快能配合好,但是碰到菜鸟,而且还总是一口咬定是你的问题的错币,你是不是很恼火呢?这个时候就需要证据,来证明自己的清白(写个程序好难,还要证明自己)。我们写工控的和PLC合作的次数比较多。和PLC走的最多的协议是Modbus。
那么怎么确保自己的程序发送了正确的指令呢?PLC回复了正确的指令?
最好的办法就是做好数据日志记录。一切凭数据说话。
Modbus rtu send data :01 03 00 01 00 01 crc;
Modbus rtu receive data:01 03 02 00 01 crc
图片中的输入为16进制形式的字符串,如果直接输出打印则是乱码,是无法显示的。
1. 首先通过字符串至字节数据转换,得到字节数组,这样每个字节的数据就分离出来了;
2. 通过数值至16进制字符串转换,控制16进制字符为两位,比如1会自动输出01,方便阅读;
3. 提取的每个字节字符串加上空格(方便调试数据查看)进行字符串连接;
这样最终正常的字符串就可以得到了:01 03 61 9E 00 04 3A 1B ,自己再写个日志输出模块将字符串传入就能正常打印出了。