ErrorCode.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace OmronFinsTCP.Net
  6. {
  7. class ErrorCode
  8. {
  9. /// <summary>
  10. /// (若返回的头指令为3)检查命令头中的错误代码
  11. /// </summary>
  12. /// <param name="Code">错误代码</param>
  13. /// <returns>指示程序是否可以继续进行</returns>
  14. internal static bool CheckHeadError(byte Code)
  15. {
  16. switch (Code)
  17. {
  18. case 0x00: return true;
  19. case 0x01: return false;//RaiseException("the head is not 'FINS'");
  20. case 0x02: return false;//RaiseException("the data length is too long");
  21. case 0x03: return false;//RaiseException("the command is not supported");
  22. }
  23. //no hit
  24. return false;//RaiseException("unknown exception");
  25. }
  26. /// <summary>
  27. /// 检查命令帧中的EndCode
  28. /// </summary>
  29. /// <param name="Main">主码</param>
  30. /// <param name="Sub">副码</param>
  31. /// <returns>指示程序是否可以继续进行</returns>
  32. internal static bool CheckEndCode(byte Main, byte Sub)
  33. {
  34. switch (Main)
  35. {
  36. case 0x00:
  37. switch (Sub)
  38. {
  39. case 0x00: return true;//the only situation of success
  40. case 0x40: return true;//错误码64,是因为PLC中产生了报警,但是数据还是能正常读到的,屏蔽64报警或清除plc错误可解决
  41. case 0x01: return false;//RaiseException("service canceled");
  42. }
  43. break;
  44. case 0x01:
  45. switch (Sub)
  46. {
  47. case 0x01: return false;//RaiseException("local node not in network");
  48. case 0x02: return false;//RaiseException("token timeout");
  49. case 0x03: return false;//RaiseException("retries failed");
  50. case 0x04: return false;//RaiseException("too many send frames");
  51. case 0x05: return false;//RaiseException("node address range error");
  52. case 0x06: return false;//RaiseException("node address duplication");
  53. }
  54. break;
  55. case 0x02:
  56. switch (Sub)
  57. {
  58. case 0x01: return false;//RaiseException("destination node not in network");
  59. case 0x02: return false;//RaiseException("unit missing");
  60. case 0x03: return false;//RaiseException("third node missing");
  61. case 0x04: return false;//RaiseException("destination node busy");
  62. case 0x05: return false;//RaiseException("response timeout");
  63. }
  64. break;
  65. case 0x03:
  66. switch (Sub)
  67. {
  68. case 0x01: return false;//RaiseException("communications controller error");
  69. case 0x02: return false;//RaiseException("CPU unit error");
  70. case 0x03: return false;//RaiseException("controller error");
  71. case 0x04: return false;//RaiseException("unit number error");
  72. }
  73. break;
  74. case 0x04:
  75. switch (Sub)
  76. {
  77. case 0x01: return false;//RaiseException("undefined command");
  78. case 0x02: return false;//RaiseException("not supported by model/version");
  79. }
  80. break;
  81. case 0x05:
  82. switch (Sub)
  83. {
  84. case 0x01: return false;//RaiseException("destination address setting error");
  85. case 0x02: return false;//RaiseException("no routing tables");
  86. case 0x03: return false;//RaiseException("routing table error");
  87. case 0x04: return false;//RaiseException("too many relays");
  88. }
  89. break;
  90. case 0x10:
  91. switch (Sub)
  92. {
  93. case 0x01: return false;//RaiseException("command too long");
  94. case 0x02: return false;//RaiseException("command too short");
  95. case 0x03: return false;//RaiseException("elements/data don't match");
  96. case 0x04: return false;//RaiseException("command format error");
  97. case 0x05: return false;//RaiseException("header error");
  98. }
  99. break;
  100. case 0x11:
  101. switch (Sub)
  102. {
  103. case 0x01: return false;//RaiseException("area classification missing");
  104. case 0x02: return false;//RaiseException("access size error");
  105. case 0x03: return false;//RaiseException("address range error");
  106. case 0x04: return false;//RaiseException("address range exceeded");
  107. case 0x06: return false;//RaiseException("program missing");
  108. case 0x09: return false;//RaiseException("relational error");
  109. case 0x0a: return false;//RaiseException("duplicate data access");
  110. case 0x0b: return false;//RaiseException("response too long");
  111. case 0x0c: return false;//RaiseException("parameter error");
  112. }
  113. break;
  114. case 0x20:
  115. switch (Sub)
  116. {
  117. case 0x02: return false;//RaiseException("protected");
  118. case 0x03: return false;//RaiseException("table missing");
  119. case 0x04: return false;//RaiseException("data missing");
  120. case 0x05: return false;//RaiseException("program missing");
  121. case 0x06: return false;//RaiseException("file missing");
  122. case 0x07: return false;//RaiseException("data mismatch");
  123. }
  124. break;
  125. case 0x21:
  126. switch (Sub)
  127. {
  128. case 0x01: return false;//RaiseException("read-only");
  129. case 0x02: return false;//RaiseException("protected , cannot write data link table");
  130. case 0x03: return false;//RaiseException("cannot register");
  131. case 0x05: return false;//RaiseException("program missing");
  132. case 0x06: return false;//RaiseException("file missing");
  133. case 0x07: return false;//RaiseException("file name already exists");
  134. case 0x08: return false;//RaiseException("cannot change");
  135. }
  136. break;
  137. case 0x22:
  138. switch (Sub)
  139. {
  140. case 0x01: return false;//RaiseException("not possible during execution");
  141. case 0x02: return false;//RaiseException("not possible while running");
  142. case 0x03: return false;//RaiseException("wrong PLC mode");
  143. case 0x04: return false;//RaiseException("wrong PLC mode");
  144. case 0x05: return false;//RaiseException("wrong PLC mode");
  145. case 0x06: return false;//RaiseException("wrong PLC mode");
  146. case 0x07: return false;//RaiseException("specified node not polling node");
  147. case 0x08: return false;//RaiseException("step cannot be executed");
  148. }
  149. break;
  150. case 0x23:
  151. switch (Sub)
  152. {
  153. case 0x01: return false;//RaiseException("file device missing");
  154. case 0x02: return false;//RaiseException("memory missing");
  155. case 0x03: return false;//RaiseException("clock missing");
  156. }
  157. break;
  158. case 0x24:
  159. switch (Sub)
  160. {
  161. case 0x01: return false;//RaiseException("table missing");
  162. }
  163. break;
  164. case 0x25:
  165. switch (Sub)
  166. {
  167. case 0x02: return false;//RaiseException("memory error");
  168. case 0x03: return false;//RaiseException("I/O setting error");
  169. case 0x04: return false;//RaiseException("too many I/O points");
  170. case 0x05: return false;//RaiseException("CPU bus error");
  171. case 0x06: return false;//RaiseException("I/O duplication");
  172. case 0x07: return false;//RaiseException("CPU bus error");
  173. case 0x09: return false;//RaiseException("SYSMAC BUS/2 error");
  174. case 0x0a: return false;//RaiseException("CPU bus unit error");
  175. case 0x0d: return false;//RaiseException("SYSMAC BUS No. duplication");
  176. case 0x0f: return false;//RaiseException("memory error");
  177. case 0x10: return false;//RaiseException("SYSMAC BUS terminator missing");
  178. }
  179. break;
  180. case 0x26:
  181. switch (Sub)
  182. {
  183. case 0x01: return false;//RaiseException("no protection");
  184. case 0x02: return false;//RaiseException("incorrect password");
  185. case 0x04: return false;//RaiseException("protected");
  186. case 0x05: return false;//RaiseException("service already executing");
  187. case 0x06: return false;//RaiseException("service stopped");
  188. case 0x07: return false;//RaiseException("no execution right");
  189. case 0x08: return false;//RaiseException("settings required before execution");
  190. case 0x09: return false;//RaiseException("necessary items not set");
  191. case 0x0a: return false;//RaiseException("number already defined");
  192. case 0x0b: return false;//RaiseException("error will not clear");
  193. }
  194. break;
  195. case 0x30:
  196. switch (Sub)
  197. {
  198. case 0x01: return false;//RaiseException("no access right");
  199. }
  200. break;
  201. case 0x40:
  202. switch (Sub)
  203. {
  204. case 0x01: return false;//RaiseException("service aborted");
  205. }
  206. break;
  207. }
  208. //no hit
  209. return false;//RaiseException("unknown exception");
  210. }
  211. }
  212. }