标签:des style blog io ar color os sp for
1 /*******************************************************************************
2 ********************************************************************************
3 **
4 ** File Name
5 ** ---------
6 **
7 ** aplink.c
8 **
9 ********************************************************************************
1270
1271 /*------------------------------------------------------------------------------
1272 ** aplink_RunCfgStateMachine()
1273 **------------------------------------------------------------------------------
1274 */
1275
1276 void aplink_RunCfgStateMachine( void )
1277 {
1278 UTIL_BufMsgType* psQEntry;
1279 static UINT16 iMapCntr;
1280 static UINT16 iSingleEntrySize;
1281 UINT16* piTemp;
1282
1283
1284 switch( aplink_s.eCfgState )
1285 {
1286 case APLINK_CFG_SM_INIT:
1287 /*
1288 ** Initialise variables etc.
1289 */
1290
1291 aplink_s.psReadCfg = NULL;
1292 aplink_s.psWriteCfg = NULL;
1293
1294 aplink_s.iReadPdLength = 0;
1295 aplink_s.iWritePdLength = 0;
1296
1297 aplink_s.eCfgState = APLINK_CFG_SM_READ_MODULE_TYPE;
1298
1299 ABCC_CbfDebugInfo( "APLINK/Configuration: In APLINK_CFG_SM_INIT." );
1300 ABCC_CbfDebugInfo( "APLINK/Configuration: In APLINK_CFG_SM_READ_MODULE_TYPE." );
1301
1302
1303 break; /* End case APLINK_CFG_SM_INIT: */
1304
1305
1306 case APLINK_CFG_SM_READ_MODULE_TYPE:
1307 /*
1308 ** Allocate a buffer.
1309 */
1310
1311 psQEntry = UTIL_AllocateMsgBuffer( &APLINK_asCmdToAbccBuf[ 0 ],
1312 ABCC_NBR_SIMULTANEOUS_APPL_COMMANDS );
1313
1314 if( psQEntry == NULL )
1315 {
1316 ABCC_CbfDriverError( ABCC_SEV_FATAL, ABCC_EC_OUT_OF_BUFFERS );
1317 }
1318
1319
1320 /*
1321 ** Read the module type of the ABCC module.
1322 */
1323
1324 psQEntry->sMsg.sHeader.bSourceId = (UINT8)0x01;
1325 psQEntry->sMsg.sHeader.bDestObj = (UINT8)ABP_OBJ_NUM_ANB;
1326 psQEntry->sMsg.sHeader.iInstance = 0x0001;
1327 psQEntry->sMsg.sHeader.bCmd = (UINT8)( ABP_CMD_GET_ATTR | ABP_MSG_HEADER_C_BIT );
1328 psQEntry->sMsg.sHeader.bDataSize = (UINT8)0x00;
1329 psQEntry->sMsg.sHeader.bCmdExt0 = (UINT8)ABP_ANB_IA_MODULE_TYPE;
1330 psQEntry->sMsg.sHeader.bCmdExt1 = (UINT8)0x00;
1331
1332 /*
1333 ** Post the message to the ABCC.
1334 */
1335
1336 (void)aplink_AddFragAndPostMsg( psQEntry );
1337
1338
1339 /*
1340 ** Wait for the response.
1341 */
1342
1343 aplink_s.eCfgState = APLINK_CFG_SM_WAIT_MODULE_TYPE_RSP;
1344
1345 ABCC_CbfDebugInfo( "APLINK/Configuration: In APLINK_CFG_SM_WAIT_MODULE_TYPE_RSP." );
1346
1347 break; /* End case APLINK_CFG_SM_READ_MODULE_TYPE */
1348
1349
1350 case APLINK_CFG_SM_WAIT_MODULE_TYPE_RSP:
1351 /*
1352 ** Check if theres a new response for us.
1353 */
1354
1355 if( UTIL_GetFirstMessageFromQueue( aplink_s.xMsgsFromAbccQueue, &psQEntry ) == UTIL_OK )
1356 {
1357 /*
1358 ** Decrease the number of messages that are processing...
1359 */
1360
1361 aplink_s.bNbrOfCmdsActiveToAbcc--;
1362
1363
1364 /*
1365 ** We have received a new message.
1366 */
1367
1368 if( ( psQEntry->sMsg.sHeader.bSourceId == (UINT8)0x01 ) &&
1369 ( psQEntry->sMsg.sHeader.bDestObj == (UINT8)ABP_OBJ_NUM_ANB ) &&
1370 ( psQEntry->sMsg.sHeader.iInstance == 0x0001 ) &&
1371 ( !( (BOOL8)( psQEntry->sMsg.sHeader.bCmd & (UINT8)ABP_MSG_HEADER_C_BIT ) ) ) &&
1372 ( !( (BOOL8)( psQEntry->sMsg.sHeader.bCmd & (UINT8)ABP_MSG_HEADER_E_BIT ) ) ) &&
1373 ( psQEntry->sMsg.sHeader.bDataSize == (UINT8)ABP_ANB_IA_MODULE_TYPE_DS ) &&
1374 ( psQEntry->sMsg.sHeader.bCmdExt0 == (UINT8)ABP_ANB_IA_MODULE_TYPE ) &&
1375 ( psQEntry->sMsg.sHeader.bCmdExt1 == (UINT8)0x00 ) )
1376 {
1377 /*
1378 ** Response is OK. Read the data attached.
1379 */
1380
1381 piTemp = (UINT16*)&psQEntry->sMsg.abData[ 0 ];
1382 aplink_s.iModuleType = UTIL_WordToNative( *piTemp );
1383
1384 ABCC_CbfDebugInfo( "APLINK/Configuration: Module type response received." );
1385
1386 /*
1387 ** Read the network data-type.
1388 */
1389
1390 aplink_s.eCfgState = APLINK_CFG_SM_READ_NW_TYPE;
1391
1392 ABCC_CbfDebugInfo( "APLINK/Configuration: In APLINK_CFG_SM_READ_NW_TYPE." );
1393 }
1394 else
1395 {
1396 /*
1397 ** There is some error in the response.
1398 */
1399
1400 ABCC_CbfDebugInfo( "APLINK/Configuration: Module type error response." );
1401
1402 /*
1403 ** Signal a fatal error to the application
1404 */
1405
1406 ABCC_CbfDriverError( ABCC_SEV_FATAL, ABCC_EC_INVALID_MODULE_TYPE_RECEIVED );
1407
1408 /*
1409 ** Change driver state, so the applicaton is able to send a RESET
1410 */
1411
1412 APLINK_ChangeDriverState( APLINK_SM_IN_RUN_NO_PD );
1413
1414 } /* End ( Response is not OK? ) */
1415
1416 /*
1417 ** Free the allocated buffer.
1418 */
1419
1420 UTIL_FreeMsgBuffer( psQEntry );
1421
1422 } /* End if( New message? ) */
1423
1424 break; /* End case APLINK_CFG_SM_WAIT_MODULE_TYPE_RSP: */
1425
1426
1427 case APLINK_CFG_SM_READ_NW_TYPE:
1428 /*
1429 ** Allocate a buffer.
1430 */
1431
1432 psQEntry = UTIL_AllocateMsgBuffer( &APLINK_asCmdToAbccBuf[ 0 ],
1433 ABCC_NBR_SIMULTANEOUS_APPL_COMMANDS );
1434
1435 if( psQEntry == NULL )
1436 {
1437 ABCC_CbfDriverError( ABCC_SEV_FATAL, ABCC_EC_OUT_OF_BUFFERS );
1438 }
1439
1440
1441 /*
1442 ** Read the network type of the ABCC module.
1443 */
1444
1445 psQEntry->sMsg.sHeader.bSourceId = (UINT8)0x01;
1446 psQEntry->sMsg.sHeader.bDestObj = (UINT8)ABP_OBJ_NUM_NW;
1447 psQEntry->sMsg.sHeader.iInstance = 0x0001;
1448 psQEntry->sMsg.sHeader.bCmd = (UINT8)( ABP_CMD_GET_ATTR | ABP_MSG_HEADER_C_BIT );
1449 psQEntry->sMsg.sHeader.bDataSize = (UINT8)0x00;
1450 psQEntry->sMsg.sHeader.bCmdExt0 = (UINT8)ABP_NW_IA_NW_TYPE;
1451 psQEntry->sMsg.sHeader.bCmdExt1 = (UINT8)0x00;
1452
1453
1454 /*
1455 ** Post the message to the ABCC module.
1456 */
1457
1458 (void)aplink_AddFragAndPostMsg( psQEntry );
1459
1460
1461 /*
1462 ** Fetch the response.
1463 */
1464
1465 aplink_s.eCfgState = APLINK_CFG_SM_READ_NW_TYPE_RSP;
1466
1467 ABCC_CbfDebugInfo( "APLINK/Configuration: In APLINK_CFG_SM_READ_NW_TYPE_RSP." );
1468
1469 break; /* End case APLINK_CFG_SM_READ_NW_TYPE: */
1470
1471
1472 case APLINK_CFG_SM_READ_NW_TYPE_RSP:
1473 /*
1474 ** Check if theres a new response for us.
1475 */
1476
1477 if( UTIL_GetFirstMessageFromQueue( aplink_s.xMsgsFromAbccQueue, &psQEntry ) == UTIL_OK )
1478 {
1479 /*
1480 ** Decrease the number of messages that are processing...
1481 */
1482
1483 aplink_s.bNbrOfCmdsActiveToAbcc--;
1484
1485
1486 /*
1487 ** We have received a new message.
1488 */
1489
1490 if( ( psQEntry->sMsg.sHeader.bSourceId == (UINT8)0x01 ) &&
1491 ( psQEntry->sMsg.sHeader.bDestObj == (UINT8)ABP_OBJ_NUM_NW ) &&
1492 ( psQEntry->sMsg.sHeader.iInstance == 0x0001 ) &&
1493 ( !( (BOOL8)( psQEntry->sMsg.sHeader.bCmd & (UINT8)ABP_MSG_HEADER_C_BIT ) ) ) &&
1494 ( !( (BOOL8)( psQEntry->sMsg.sHeader.bCmd & (UINT8)ABP_MSG_HEADER_E_BIT ) ) ) &&
1495 ( psQEntry->sMsg.sHeader.bDataSize == (UINT8)ABP_NW_IA_NW_TYPE_DS ) &&
1496 ( psQEntry->sMsg.sHeader.bCmdExt0 == (UINT8)ABP_NW_IA_NW_TYPE ) &&
1497 ( psQEntry->sMsg.sHeader.bCmdExt1 == (UINT8)0x00 ) )
1498 {
1499 /*
1500 ** Response is OK. Read the data attached.
1501 */
1502
1503 piTemp = (UINT16*)&psQEntry->sMsg.abData[ 0 ];
1504 aplink_s.iNetworkType = UTIL_WordToNative( *piTemp );
1505 // AT24CXX_WriteOneByte(10,aplink_s.iNetworkType);/* 引起死机 */
1506 fsmc_sram_test_write(aplink_s.iNetworkType,2);
1507
1508 ABCC_CbfDebugInfo( "APLINK/Configuration: Network type response received." );
1509
1510
1511
1512 /*
1513 ** Read the network parameter support.
1514 */
1515
1516 aplink_s.eCfgState = APLINK_CFG_SM_READ_NW_PARAM_SUPPORT;
1517
1518 ABCC_CbfDebugInfo( "APLINK/Configuration: In APLINK_CFG_SM_READ_NW_PARAM_SUPPORT." );
1519
1520 }
1521 else
1522 {
1523 /*
1524 ** There is some error in the response.
1525 */
1526
1527 ABCC_CbfDebugInfo( "APLINK/Configuration: Network Type error response." );
1528
1529 /*
1530 ** Signal a fatal error to the application
1531 */
1532
1533 ABCC_CbfDriverError( ABCC_SEV_FATAL, ABCC_EC_INVALID_NETWORK_TYPE_RECEIVED );
1534
1535 /*
1536 ** Change driver state, so the applicaton is able to send a RESET
1537 */
1538
1539 APLINK_ChangeDriverState( APLINK_SM_IN_RUN_NO_PD );
1540
1541 } /* End if( Response OK? ) */
1542
1543 /*
1544 ** Free the allocated buffer.
1545 */
1546
1547 UTIL_FreeMsgBuffer( psQEntry );
1548
1549 } /* End if( New message? ) */
1550
1551
1552 break; /* End case APLINK_CFG_SM_READ_NW_TYPE_RSP: */
1553
1554
1555 case APLINK_CFG_SM_READ_NW_PARAM_SUPPORT:
1556 /*
1557 ** Allocate a buffer.
1558 */
1559
1560 psQEntry = UTIL_AllocateMsgBuffer( &APLINK_asCmdToAbccBuf[ 0 ],
1561 ABCC_NBR_SIMULTANEOUS_APPL_COMMANDS );
1562
1563 if( psQEntry == NULL )
1564 {
1565 ABCC_CbfDriverError( ABCC_SEV_FATAL, ABCC_EC_OUT_OF_BUFFERS );
1566 }
1567
1568
1569 /*
1570 ** Read the network parameter support of the ABCC module.
1571 */
1572
1573 psQEntry->sMsg.sHeader.bSourceId = (UINT8)0x01;
1574 psQEntry->sMsg.sHeader.bDestObj = (UINT8)ABP_OBJ_NUM_NW;
1575 psQEntry->sMsg.sHeader.iInstance = 0x0001;
1576 psQEntry->sMsg.sHeader.bCmd = (UINT8)( ABP_CMD_GET_ATTR | ABP_MSG_HEADER_C_BIT );
1577 psQEntry->sMsg.sHeader.bDataSize = (UINT8)0x00;
1578 psQEntry->sMsg.sHeader.bCmdExt0 = (UINT8)ABP_NW_IA_PARAM_SUPPORT;
1579 psQEntry->sMsg.sHeader.bCmdExt1 = (UINT8)0x00;
1580
1581
1582 /*
1583 ** Post the message to the ABCC module.
1584 */
1585
1586 (void)aplink_AddFragAndPostMsg( psQEntry );
1587
1588
1589 /*
1590 ** Fetch the response.
1591 */
1592
1593 aplink_s.eCfgState = APLINK_CFG_SM_READ_NW_PARAM_SUPPORT_RSP;
1594
1595 ABCC_CbfDebugInfo( "APLINK/Configuration: In APLINK_CFG_SM_READ_NW_PARAM_SUPPORT_RSP." );
1596
1597 break; /* End case APLINK_CFG_SM_READ_NW_PARAM_SUPPORT: */
1598
1599
1600 case APLINK_CFG_SM_READ_NW_PARAM_SUPPORT_RSP:
1601 /*
1602 ** Check if theres a new response for us.
1603 */
1604
1605 if( UTIL_GetFirstMessageFromQueue( aplink_s.xMsgsFromAbccQueue, &psQEntry ) == UTIL_OK )
1606 {
1607 /*
1608 ** Decrease the number of messages that are processing...
1609 */
1610
1611 aplink_s.bNbrOfCmdsActiveToAbcc--;
1612
1613
1614 /*
1615 ** We have received a new message.
1616 */
1617
1618 if( ( psQEntry->sMsg.sHeader.bSourceId == (UINT8)0x01 ) &&
1619 ( psQEntry->sMsg.sHeader.bDestObj == (UINT8)ABP_OBJ_NUM_NW ) &&
1620 ( psQEntry->sMsg.sHeader.iInstance == 0x0001 ) &&
1621 ( !( (BOOL8)( psQEntry->sMsg.sHeader.bCmd & (UINT8)ABP_MSG_HEADER_C_BIT ) ) ) &&
1622 ( !( (BOOL8)( psQEntry->sMsg.sHeader.bCmd & (UINT8)ABP_MSG_HEADER_E_BIT ) ) ) &&
1623 ( psQEntry->sMsg.sHeader.bDataSize == (UINT8)ABP_NW_IA_PARAM_SUPPORT_DS ) &&
1624 ( psQEntry->sMsg.sHeader.bCmdExt0 == (UINT8)ABP_NW_IA_PARAM_SUPPORT ) &&
1625 ( psQEntry->sMsg.sHeader.bCmdExt1 == (UINT8)0x00 ) )
1626 {
1627 /*
1628 ** Response is OK. Read the data attached.
1629 */
1630
1631 aplink_s.bParamSupport = psQEntry->sMsg.abData[ 0 ];
1632
1633 ABCC_CbfDebugInfo( "APLINK/Configuration: Parameter support response received." );
1634
1635
1636 /*
1637 ** Request pointers for the configuration.
1638 */
1639
1640 ABCC_CbfAutoCfgRequest( aplink_s.iModuleType,
1641 aplink_s.iNetworkType,
1642 aplink_s.bParamSupport,
1643 &aplink_s.psReadCfg,
1644 &aplink_s.psWriteCfg );
1645
1646
1647 /*
1648 ** Read the network data format support.
1649 */
1650
1651 aplink_s.eCfgState = APLINK_CFG_SM_READ_NW_DATA_FORMAT;
1652
1653 ABCC_CbfDebugInfo( "APLINK/Configuration: In APLINK_CFG_SM_READ_NW_DATA_FORMAT." );
1654 }
1655 else
1656 {
1657 /*
1658 ** There is some error in the response.
1659 */
1660
1661 ABCC_CbfDebugInfo( "APLINK/Configuration: Parameter support error response." );
1662
1663 /*
1664 ** Signal a fatal error to the application
1665 */
1666
1667 ABCC_CbfDriverError( ABCC_SEV_FATAL, ABCC_EC_INVALID_PARAM_SUPPORT_RECEIVED );
1668
1669 /*
1670 ** Change driver state, so the applicaton is able to send a RESET
1671 */
1672
1673 APLINK_ChangeDriverState( APLINK_SM_IN_RUN_NO_PD );
1674
1675 } /* End if( Response OK? ) */
1676
1677 /*
1678 ** Free the allocated buffer.
1679 */
1680
1681 UTIL_FreeMsgBuffer( psQEntry );
1682
1683 } /* End if( New message? ) */
1684
1685
1686
1687 break; /* End case APLINK_CFG_SM_READ_NW_PARAM_SUPPORT_RSP: */
1688
1689
1690 case APLINK_CFG_SM_READ_NW_DATA_FORMAT:
1691 /*
1692 ** Allocate a buffer.
1693 */
1694
1695 psQEntry = UTIL_AllocateMsgBuffer( &APLINK_asCmdToAbccBuf[ 0 ],
1696 ABCC_NBR_SIMULTANEOUS_APPL_COMMANDS );
1697
1698 if( psQEntry == NULL )
1699 {
1700 ABCC_CbfDriverError( ABCC_SEV_FATAL, ABCC_EC_OUT_OF_BUFFERS );
1701 }
1702
1703
1704 /*
1705 ** Read the Network data format of the module.
1706 */
1707
1708 psQEntry->sMsg.sHeader.bSourceId = (UINT8)0x01;
1709 psQEntry->sMsg.sHeader.bDestObj = (UINT8)ABP_OBJ_NUM_NW;
1710 psQEntry->sMsg.sHeader.iInstance = 0x0001;
1711 psQEntry->sMsg.sHeader.bCmd = (UINT8)( ABP_CMD_GET_ATTR | ABP_MSG_HEADER_C_BIT );
1712 psQEntry->sMsg.sHeader.bDataSize = (UINT8)0x00;
1713 psQEntry->sMsg.sHeader.bCmdExt0 = (UINT8)ABP_NW_IA_DATA_FORMAT;
1714 psQEntry->sMsg.sHeader.bCmdExt1 = (UINT8)0x00;
1715
1716 /*
1717 ** Post the message to the ABCC.
1718 */
1719
1720 (void)aplink_AddFragAndPostMsg( psQEntry );
1721
1722
1723 /*
1724 ** Wait for the response.
1725 */
1726
1727 aplink_s.eCfgState = APLINK_CFG_SM_WAIT_NW_DATA_FORMAT_RSP;
1728
1729 ABCC_CbfDebugInfo( "APLINK/Configuration: In APLINK_CFG_SM_WAIT_NW_DATA_FORMAT_RSP." );
1730
1731 break; /* End case APLINK_CFG_SM_READ_NW_DATA_FORMAT: */
1732
1733
1734 case APLINK_CFG_SM_WAIT_NW_DATA_FORMAT_RSP:
1735 /*
1736 ** Check if theres a new response for us.
1737 */
1738
1739 if( UTIL_GetFirstMessageFromQueue( aplink_s.xMsgsFromAbccQueue, &psQEntry ) == UTIL_OK )
1740 {
1741 /*
1742 ** Decrease the number of messages that are processing...
1743 */
1744
1745 aplink_s.bNbrOfCmdsActiveToAbcc--;
1746
1747
1748 /*
1749 ** We have received a new message.
1750 */
1751
1752 if( ( psQEntry->sMsg.sHeader.bSourceId == (UINT8)0x01 ) &&
1753 ( psQEntry->sMsg.sHeader.bDestObj == (UINT8)ABP_OBJ_NUM_NW ) &&
1754 ( psQEntry->sMsg.sHeader.iInstance == 0x0001 ) &&
1755 ( !( (BOOL8)( psQEntry->sMsg.sHeader.bCmd & (UINT8)ABP_MSG_HEADER_C_BIT ) ) ) &&
1756 ( !( (BOOL8)( psQEntry->sMsg.sHeader.bCmd & (UINT8)ABP_MSG_HEADER_E_BIT ) ) ) &&
1757 ( psQEntry->sMsg.sHeader.bDataSize == (UINT8)ABP_NW_IA_DATA_FORMAT_DS ) &&
1758 ( psQEntry->sMsg.sHeader.bCmdExt0 == (UINT8)ABP_NW_IA_DATA_FORMAT ) &&
1759 ( psQEntry->sMsg.sHeader.bCmdExt1 == (UINT8)0x00 ) )
1760 {
1761 /*
1762 ** Signal the network data format to the application.
1763 */
1764
1765 ABCC_CbfNetworkDataFormat( (ABCC_DataFormatType)psQEntry->sMsg.abData[ 0 ] );
1766
1767 ABCC_CbfDebugInfo( "APLINK/Configuration: Network data-type response received." );
1768
1769 iMapCntr = 0;
1770
1771 /*
1772 ** Change state
1773 */
1774
1775 aplink_s.eCfgState = APLINK_CFG_SM_NEXT_READ;
1776
1777 }
1778 else
1779 {
1780 /*
1781 ** There is some error in the response.
1782 */
1783
1784 ABCC_CbfDebugInfo( "APLINK/Configuration: Network data-format error response." );
1785
1786 /*
1787 ** Signal a fatal error to the application
1788 */
1789
1790 ABCC_CbfDriverError( ABCC_SEV_FATAL, ABCC_EC_INVALID_DATA_FORMAT_RECEIVED );
1791
1792 /*
1793 ** Change driver state, so the applicaton is able to send a RESET
1794 */
1795
1796 APLINK_ChangeDriverState( APLINK_SM_IN_RUN_NO_PD );
1797
1798 } /* End if( New Message OK? ) */
1799
1800 /*
1801 ** Free the allocated buffer.
1802 */
1803
1804 UTIL_FreeMsgBuffer( psQEntry );
1805
1806 } /* End if( New message? ) */
1807
1808
1809 ABCC_CbfCfgSetAddress( Network_Address());
1810
1811 break; /* End case APLINK_CFG_SM_WAIT_NW_DATA_FORMAT_RSP: */
1812
1813
1814 case APLINK_CFG_SM_SEND_READ_MAPPING:
1815 /*
1816 ** Allocate a buffer.
1817 */
1818
1819 psQEntry = UTIL_AllocateMsgBuffer( &APLINK_asCmdToAbccBuf[ 0 ],
1820 ABCC_NBR_SIMULTANEOUS_APPL_COMMANDS );
1821
1822 if( psQEntry == NULL )
1823 {
1824 ABCC_CbfDriverError( ABCC_SEV_FATAL, ABCC_EC_OUT_OF_BUFFERS );
1825 }
1826
1827
1828 /*
1829 ** Send a Read mapping message
1830 */
1831
1832 psQEntry->sMsg.sHeader.bSourceId = (UINT8)0x01;
1833 psQEntry->sMsg.sHeader.bDestObj = (UINT8)ABP_OBJ_NUM_NW;
1834 psQEntry->sMsg.sHeader.iInstance = 0x0001;
1835 psQEntry->sMsg.sHeader.bCmd = (UINT8)( ABP_NW_CMD_MAP_ADI_READ_AREA | ABP_MSG_HEADER_C_BIT );
1836 psQEntry->sMsg.sHeader.bDataSize = (UINT8)0x04;
1837 psQEntry->sMsg.sHeader.bCmdExt0 = (UINT8)( aplink_s.psReadCfg->psMaps[ iMapCntr ].iAdiNbr & 0x00FF );
1838 psQEntry->sMsg.sHeader.bCmdExt1 = (UINT8)( ( aplink_s.psReadCfg->psMaps[ iMapCntr ].iAdiNbr >> 8 ) & 0x00FF );
1839
1840 /*
1841 ** Assign the data type and the number of elements.
1842 */
1843
1844 if(fsmc_sram_test_read(2) == 0X90)
1845 {
1846 aplink_s.psReadCfg->psMaps[ iMapCntr ].bDataType = 0;
1847 aplink_s.psReadCfg->psMaps[ iMapCntr ].bNbrElements = 16;
1848 psQEntry->sMsg.abData[ 0 ] = aplink_s.psReadCfg->psMaps[ iMapCntr ].bDataType;
1849 psQEntry->sMsg.abData[ 1 ] = aplink_s.psReadCfg->psMaps[ iMapCntr ].bNbrElements;
1850 }
1851 else
1852 {
1853 psQEntry->sMsg.abData[ 0 ] = aplink_s.psReadCfg->psMaps[ iMapCntr ].bDataType;
1854 psQEntry->sMsg.abData[ 1 ] = aplink_s.psReadCfg->psMaps[ iMapCntr ].bNbrElements;
1855 }
1856 // printf("%2X\r\n",psQEntry->sMsg.abData[ 0 ] );
1857 // printf("%2X\r\n",psQEntry->sMsg.abData[ 1 ] );
1858
1859 /*
1860 ** Assign the order number. Low byte first.
1861 */
1862
1863 psQEntry->sMsg.abData[ 2 ] = (UINT8)( aplink_s.psReadCfg->psMaps[ iMapCntr ].iOrderNumber & 0x00FF );
1864 psQEntry->sMsg.abData[ 3 ] = (UINT8)( ( aplink_s.psReadCfg->psMaps[ iMapCntr ].iOrderNumber >> 8 ) & 0x00FF );
1865
1866 /*
1867 ** Store the number of bytes of this mapping.
1868 */
1869
1870 iSingleEntrySize = ( aplink_GetSizeOfDataType( aplink_s.psReadCfg->psMaps[ iMapCntr ].bDataType ) *
1871 aplink_s.psReadCfg->psMaps[ iMapCntr ].bNbrElements );
1872
1873
1874 /*
1875 ** Post the message to the ABCC.
1876 */
1877
1878 (void)aplink_AddFragAndPostMsg( psQEntry );
1879
1880
1881 /*
1882 ** Change state
1883 */
1884
1885 aplink_s.eCfgState = APLINK_CFG_SM_WAIT_READ_MAPPING_RSP;
1886
1887 ABCC_CbfDebugInfo( "APLINK/Configuration: In APLINK_CFG_SM_WAIT_READ_MAPPING_RSP." );
1888
1889 break; /* End case APLINK_CFG_SM_SEND_READ_MAPPING: */
1890
1891
1892 case APLINK_CFG_SM_WAIT_READ_MAPPING_RSP:
1893 /*
1894 ** Waite for a response
1895 */
1896
1897 if( UTIL_GetFirstMessageFromQueue( aplink_s.xMsgsFromAbccQueue, &psQEntry ) == UTIL_OK )
1898 {
1899 /*
1900 ** Decrease the number of messages that are processing...
1901 */
1902
1903 aplink_s.bNbrOfCmdsActiveToAbcc--;
1904
1905
1906 /*
1907 ** We have received a new message.
1908 */
1909
1910 if( ( psQEntry->sMsg.sHeader.bSourceId == (UINT8)0x01 ) &&
1911 ( psQEntry->sMsg.sHeader.bDestObj == (UINT8)ABP_OBJ_NUM_NW ) &&
1912 ( psQEntry->sMsg.sHeader.iInstance == 0x0001 ) &&
1913 ( !( (BOOL8)( psQEntry->sMsg.sHeader.bCmd & (UINT8)ABP_MSG_HEADER_C_BIT ) ) ) &&
1914 ( !( (BOOL8)( psQEntry->sMsg.sHeader.bCmd & (UINT8)ABP_MSG_HEADER_E_BIT ) ) ) &&
1915 ( psQEntry->sMsg.sHeader.bDataSize == (UINT8)0x01 ) &&
1916 ( psQEntry->sMsg.sHeader.bCmdExt0 == (UINT8)( aplink_s.psReadCfg->psMaps[ iMapCntr ].iAdiNbr & 0x00FF ) ) &&
1917 ( psQEntry->sMsg.sHeader.bCmdExt1 == (UINT8)( ( aplink_s.psReadCfg->psMaps[ iMapCntr ].iAdiNbr >> 8 ) & 0x00FF ) ) )
1918 {
1919 ABCC_CbfDebugInfo( "APLINK/Configuration: Read map added OK." );
1920
1921 /*
1922 ** Response is OK. Read the data attached.
1923 */
1924
1925 aplink_s.psReadCfg->psMaps[ iMapCntr ].bAreaOffset = psQEntry->sMsg.abData[ 0 ];
1926 aplink_s.psReadCfg->psMaps[ iMapCntr ].bMapStatus = (UINT8)1;
1927
1928 /*
1929 ** Add the mapped data size.
1930 */
1931
1932 aplink_s.iReadPdLength += iSingleEntrySize;
1933
1934 }
1935 else
1936 {
1937 /*
1938 ** Error in message
1939 */
1940
1941 ABCC_CbfDebugInfo( "APLINK/Configuration: Read map error." );
1942
1943 /*
1944 ** Response is NOT OK. Mark the mapping as not mapped.
1945 */
1946
1947 aplink_s.psReadCfg->psMaps[ iMapCntr ].bAreaOffset = (UINT8)0;
1948 aplink_s.psReadCfg->psMaps[ iMapCntr ].bMapStatus = (UINT8)0;
1949
1950 } /* End if( correct message? ) */
1951
1952
1953 /*
1954 ** Increase the number of mappings.
1955 */
1956
1957 iMapCntr++;
1958
1959
1960 /*
1961 ** Check for more mappings.
1962 */
1963
1964 aplink_s.eCfgState = APLINK_CFG_SM_NEXT_READ;
1965
1966
1967 /*
1968 ** Free the allocated buffer.
1969 */
1970
1971 UTIL_FreeMsgBuffer( psQEntry );
1972
1973 } /* End if( New Response? ) */
1974
1975 break; /* End case APLINK_CFG_SM_WAIT_READ_MAPPING_RSP: */
1976
1977
1978 case APLINK_CFG_SM_NEXT_READ:
1979 /*
1980 ** Check if there are more mappings.
1981 */
1982
1983 if( ( aplink_s.psReadCfg != NULL ) &&
1984 ( aplink_s.psReadCfg->iNbrMaps != 0 ) &&
1985 ( aplink_s.psReadCfg->iNbrMaps <= 256 ) &&
1986 ( iMapCntr < aplink_s.psReadCfg->iNbrMaps ) )
1987 {
1988 /*
1989 ** There are more "READ"-mappings left. Change state.
1990 */
1991
1992 aplink_s.eCfgState = APLINK_CFG_SM_SEND_READ_MAPPING;
1993 }
1994 else
1995 {
1996 /*
1997 ** Check if there is a write mapping available
1998 */
1999
2000 if( ( aplink_s.psWriteCfg != NULL ) &&
2001 ( aplink_s.psWriteCfg->iNbrMaps != 0 ) &&
2002 ( aplink_s.psWriteCfg->iNbrMaps <= 256 ) )
2003 {
2004 /*
2005 ** There are at least one write mapping available
2006 */
2007
2008 iMapCntr = 0;
2009
2010 /*
2011 ** Change state
2012 */
2013
2014 aplink_s.eCfgState = APLINK_CFG_SM_SEND_WRITE_MAPPING;
2015
2016 ABCC_CbfDebugInfo( "APLINK/Configuration: In APLINK_CFG_SM_SEND_WRITE_MAPPING." );
2017 }
2018 else
2019 {
2020 /*
2021 ** There are NO "WRITE"-mappings. Change driver state.
2022 */
2023
2024 APLINK_ChangeDriverState( APLINK_SM_IN_RUN_NO_PD );
2025
2026
2027 /*
2028 ** No read or write mapping available
2029 */
2030
2031 ABCC_CbfCfgCompleted();
2032
2033 } /* End if write mapping OK? ) */
2034
2035 } /* End if( More Read mappings? ) */
2036
2037 break; /* End case APLINK_CFG_SM_NEXT_READ: */
2038
2039
2040 case APLINK_CFG_SM_SEND_WRITE_MAPPING:
2041 /*
2042 ** Allocate a buffer.
2043 */
2044
2045 psQEntry = UTIL_AllocateMsgBuffer( &APLINK_asCmdToAbccBuf[ 0 ],
2046 ABCC_NBR_SIMULTANEOUS_APPL_COMMANDS );
2047
2048 if( psQEntry == NULL )
2049 {
2050 ABCC_CbfDriverError( ABCC_SEV_FATAL, ABCC_EC_OUT_OF_BUFFERS );
2051 }
2052
2053
2054 /*
2055 ** Send a Write mapping meassage
2056 */
2057
2058 psQEntry->sMsg.sHeader.bSourceId = (UINT8)0x01;
2059 psQEntry->sMsg.sHeader.bDestObj = (UINT8)ABP_OBJ_NUM_NW;
2060 psQEntry->sMsg.sHeader.iInstance = 0x0001;
2061 psQEntry->sMsg.sHeader.bCmd = (UINT8)( ABP_NW_CMD_MAP_ADI_WRITE_AREA | ABP_MSG_HEADER_C_BIT );
2062 psQEntry->sMsg.sHeader.bDataSize = (UINT8)0x04;
2063 psQEntry->sMsg.sHeader.bCmdExt0 = (UINT8)( aplink_s.psWriteCfg->psMaps[ iMapCntr ].iAdiNbr & 0x00FF );
2064 psQEntry->sMsg.sHeader.bCmdExt1 = (UINT8)( ( aplink_s.psWriteCfg->psMaps[ iMapCntr ].iAdiNbr >> 8 ) & 0x00FF );
2065
2066 /*
2067 ** Assign the data type and number of elements.
2068 */
2069
2070 if(fsmc_sram_test_read(2) == 0X90)
2071 {
2072 aplink_s.psWriteCfg->psMaps[ iMapCntr ].bDataType = 0;
2073 aplink_s.psWriteCfg->psMaps[ iMapCntr ].bNbrElements = 16;
2074 psQEntry->sMsg.abData[ 0 ] = aplink_s.psWriteCfg->psMaps[ iMapCntr ].bDataType;
2075 psQEntry->sMsg.abData[ 1 ] = aplink_s.psWriteCfg->psMaps[ iMapCntr ].bNbrElements;
2076 }
2077 else
2078 {
2079 psQEntry->sMsg.abData[ 0 ] = aplink_s.psWriteCfg->psMaps[ iMapCntr ].bDataType;
2080 psQEntry->sMsg.abData[ 1 ] = aplink_s.psWriteCfg->psMaps[ iMapCntr ].bNbrElements;
2081 }
2082
2083 /*
2084 ** Assign the order number. Low byte first.
2085 */
2086
2087 psQEntry->sMsg.abData[ 2 ] = (UINT8)( aplink_s.psWriteCfg->psMaps[ iMapCntr ].iOrderNumber & 0x00FF );
2088 psQEntry->sMsg.abData[ 3 ] = (UINT8)( ( aplink_s.psWriteCfg->psMaps[ iMapCntr ].iOrderNumber >> 8 ) & 0x00FF );
2089
2090
2091 /*
2092 ** Store the number of bytes of this mapping.
2093 */
2094
2095 iSingleEntrySize = ( aplink_GetSizeOfDataType( aplink_s.psWriteCfg->psMaps[ iMapCntr ].bDataType ) *
2096 aplink_s.psWriteCfg->psMaps[ iMapCntr ].bNbrElements );
2097
2098 /*
2099 ** Post the message to the ABCC.
2100 */
2101
2102 (void)aplink_AddFragAndPostMsg( psQEntry );
2103
2104
2105 /*
2106 ** Change state
2107 */
2108
2109 aplink_s.eCfgState = APLINK_CFG_SM_WAIT_WRITE_MAPPING_RSP;
2110
2111 ABCC_CbfDebugInfo( "APLINK/Configuration: In APLINK_CFG_SM_WAIT_WRITE_MAPPING_RSP." );
2112
2113 break; /* End case APLINK_CFG_SM_SEND_WRITE_MAPPING: */
2114
2115
2116 case APLINK_CFG_SM_WAIT_WRITE_MAPPING_RSP:
2117 /*
2118 ** Waite for a response
2119 */
2120
2121 if( UTIL_GetFirstMessageFromQueue( aplink_s.xMsgsFromAbccQueue, &psQEntry ) == UTIL_OK )
2122 {
2123 /*
2124 ** Decrease the number of messages that are processing...
2125 */
2126
2127 aplink_s.bNbrOfCmdsActiveToAbcc--;
2128
2129
2130 /*
2131 ** We have received a new message.
2132 */
2133
2134 if( ( psQEntry->sMsg.sHeader.bSourceId == (UINT8)0x01 ) &&
2135 ( psQEntry->sMsg.sHeader.bDestObj == (UINT8)ABP_OBJ_NUM_NW ) &&
2136 ( psQEntry->sMsg.sHeader.iInstance == 0x0001 ) &&
2137 ( !( (BOOL8)( psQEntry->sMsg.sHeader.bCmd & (UINT8)ABP_MSG_HEADER_C_BIT ) ) ) &&
2138 ( !( (BOOL8)( psQEntry->sMsg.sHeader.bCmd & (UINT8)ABP_MSG_HEADER_E_BIT ) ) ) &&
2139 ( psQEntry->sMsg.sHeader.bDataSize == (UINT8)0x01 ) &&
2140 ( psQEntry->sMsg.sHeader.bCmdExt0 == (UINT8)( aplink_s.psWriteCfg->psMaps[ iMapCntr ].iAdiNbr & 0x00FF ) ) &&
2141 ( psQEntry->sMsg.sHeader.bCmdExt1 == (UINT8)( ( aplink_s.psWriteCfg->psMaps[ iMapCntr ].iAdiNbr >> 8 ) & 0x00FF ) ) )
2142 {
2143 /*
2144 ** Response is OK. Read the data attached.
2145 */
2146
2147 aplink_s.psWriteCfg->psMaps[ iMapCntr ].bAreaOffset = psQEntry->sMsg.abData[ 0 ];
2148 aplink_s.psWriteCfg->psMaps[ iMapCntr ].bMapStatus = (UINT8)1;
2149
2150 /*
2151 ** Add the mapped data size.
2152 */
2153
2154 aplink_s.iWritePdLength += iSingleEntrySize;
2155
2156
2157 ABCC_CbfDebugInfo( "APLINK/Configuration: Write map OK." );
2158 }
2159 else
2160 {
2161 /*
2162 ** Error in message
2163 */
2164
2165 ABCC_CbfDebugInfo( "APLINK/Configuration: Write map error." );
2166
2167 /*
2168 ** Response is NOT OK. Mark the map.
2169 */
2170
2171 aplink_s.psWriteCfg->psMaps[ iMapCntr ].bAreaOffset = (UINT8)0;
2172 aplink_s.psWriteCfg->psMaps[ iMapCntr ].bMapStatus = (UINT8)0;
2173
2174 } /* End if( correct message? ) */
2175
2176
2177 /*
2178 ** Increase the number of mappings.
2179 */
2180
2181 iMapCntr++;
2182
2183
2184 /*
2185 ** Check if more mappings...
2186 */
2187
2188 aplink_s.eCfgState = APLINK_CFG_SM_NEXT_WRITE;
2189
2190
2191 /*
2192 ** Free the allocated buffer.
2193 */
2194
2195 UTIL_FreeMsgBuffer( psQEntry );
2196
2197 // ABCC_CbfCfgSetAddress(Network_Address());
2198 // ABCC_CbfCfgSetBand(Network_Band()); //这儿加的设置波特率的函数
2199
2200 } /* End if( New Response? ) */
2201
2202 break; /* End case APLINK_CFG_SM_WAIT_WRITE_MAPPING_RSP: */
2203
2204
2205 case APLINK_CFG_SM_NEXT_WRITE:
2206 /*
2207 ** Check if there are more "WRITE"-mappings to process.
2208 */
2209
2210 if( iMapCntr < aplink_s.psWriteCfg->iNbrMaps )
2211 {
2212 /*
2213 ** Change state
2214 */
2215
2216 aplink_s.eCfgState = APLINK_CFG_SM_SEND_WRITE_MAPPING;
2217 }
2218 else
2219 {
2220 /*
2221 ** No more mappings to process.
2222 ** Change driver state
2223 */
2224
2225 APLINK_ChangeDriverState( APLINK_SM_IN_RUN_NO_PD );
2226
2227 /*
2228 ** No more mapping available
2229 */
2230
2231
2232 // if(fsmc_sram_test_read(2) == 0X90)/*只有在模块是CC-Link时,才配置波特率*/
2233 // {
2234
2235 // // }
2236 ABCC_CbfCfgCompleted();
2237
2238 } /* End if( More Write mappings? ) */
2239
2240 break; /* End case APLINK_CFG_SM_NEXT_WRITE: */
2241
2242
2243 default:
2244
2245 /*
2246 ** Signal a fatal error to the application
2247 */
2248
2249 ABCC_CbfDriverError( ABCC_SEV_FATAL, ABCC_EC_ILLEGAL_CFG_STATE );
2250
2251 break;
2252
2253 } /* End switch( aplink_s.eCfgState ) */
2254
2255 } /* End of aplink_RunCfgStateMachine() */
2256
2257
2258 /*------------------------------------------------------------------------------
2259 ** aplink_HandleQueuedMsgsToAppl()
2260 **------------------------------------------------------------------------------
2261 */
2262
1 void ABCC_CbfCfgSetBand( UINT8 band )
2 {
3
4 /* Message Definition */
5 ABP_MsgType sMsg;
6 sMsg.sHeader.bSourceId = 4;// SourceId = 3
7 sMsg.sHeader.bDestObj = 4;// Object Anybus Object (04h)
8 sMsg.sHeader.iInstance = 2;// Instance = 1
9 sMsg.sHeader.bCmd = 0x42;// Command, Set attribute
10 sMsg.sHeader.bDataSize = 1;// Data size = 1 byte
11 sMsg.sHeader.bCmdExt0 = 5;// Attribute = 5 (‘setup Complete‘-flag)
12 sMsg.sHeader.bCmdExt1 = 0;// (reserved)
13 sMsg.abData[ 0 ] = band;// Data
14 ABCC_SendMessage( &sMsg ); // Send Message
15
16 } /* End of ABCC_CbfCfgSetBand() */ //设置波特率的函数
/***************log******************************************************/
1 成功打开串口监视, 进程: 14124 ABCC_Demo_v2.0.exe
2
3 //Control register: bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
4 CTRL_T CTRL_M CTRL_R CTRL_AUX 0 0 0 0
5
6 //Status register: bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
7 STAT_T STAT_M STAT_R STAT_AUX SUP S2 S1 S0
8 SETUP: 0 0 0
9 NW_INT: 0 0 1
10 WAIT_PROCESS: 0 1 0
11 IDLE: 0 1 1
12 PROCESS_ACTIVE: 1 0 0
13 ERROR: 1 0 1
14 reserved: 1 1 0
15 EXCEPTION: 1 1 1
16
17 COM1: 打开 //COM1 Write为application向ABCC写数据,COM1 Read为ABCC向application写数据
18
19 /**********SETUP状态开始**********/
20 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08 //Initial Handshake, both app and module is ready
21 COM1 Read(hex): 19(Bytes) A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08
22
23
24
25 COM1 Write(hex): 19(Bytes)60 01 01 01 00 41 00 01 00 02 01 01 00 00 00 00 00 CE 65 //依次为:Control register 60, source ID 01, Object 01, instance number 00 01,
26 41h为读命令,00指message无数据,attribute为00 01,查软件手册中对object 01, instance 01,attribute 01可知该message含义为读模块类型
27 COM1 Read(hex): 19(Bytes) 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69 //no valid message but for ping_pong
28 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08 //to end last command
29 COM1 Read(hex): 19(Bytes) E0 01 01 01 00 01 02 01 00 01 04 00 00 00 00 00 00 65 1A //response,0401h, indicate Anybus-CompactCom
30 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69
31 COM1 Read(hex): 19(Bytes) 20 01 01 01 00 01 02 01 00 01 04 00 00 00 00 00 00 59 4A //to end last response
32
33
34
35 COM1 Write(hex): 19(Bytes)E0 01 03 01 00 41 00 01 00 02 01 01 00 00 00 00 00 27 86 //03(object), 00 01(instance),00 01(attribute). get network object, network type attribute
36 COM1 Read(hex): 19(Bytes) A0 01 01 01 00 01 02 01 00 01 04 00 00 00 00 00 00 B1 2B
37 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69
38 COM1 Read(hex): 19(Bytes) 20 01 01 01 00 01 02 01 00 01 04 00 00 00 00 00 00 59 4A
39 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08
40 COM1 Read(hex): 19(Bytes) E0 01 03 01 00 01 02 01 00 25 00 00 00 00 00 00 00 4F DE //0020h, indicate "DeviceNet" type
41 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69
42 COM1 Read(hex): 19(Bytes) 20 01 03 01 00 01 02 01 00 25 00 00 00 00 00 00 00 73 8E
43
44
45
46 COM1 Write(hex): 19(Bytes)E0 01 03 01 00 41 00 04 00 02 01 01 00 00 00 00 00 37 96 //03,01,04,get network object, Parameter Data support?
47 COM1 Read(hex): 19(Bytes) A0 01 03 01 00 01 02 01 00 25 00 00 00 00 00 00 00 9B EF
48 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69
49 COM1 Read(hex): 19(Bytes) 20 01 03 01 00 01 02 01 00 25 00 00 00 00 00 00 00 73 8E
50 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08
51 COM1 Read(hex): 19(Bytes) E0 01 03 01 00 01 01 04 00 01 00 00 00 00 00 00 00 F0 C2 //response,01,true, "Network supports acyclic data access"
52 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69
53 COM1 Read(hex): 19(Bytes) 20 01 03 01 00 01 01 04 00 01 00 00 00 00 00 00 00 CC 92
54
55
56
57 COM1 Write(hex): 19(Bytes)E0 01 03 01 00 41 00 03 00 02 01 01 00 00 00 00 00 ED 27 //03,00 01,00 03,get network object,Data format(LSB?MSB?)
58 COM1 Read(hex): 19(Bytes) A0 01 03 01 00 01 01 04 00 01 00 00 00 00 00 00 00 24 F3
59 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69
60 COM1 Read(hex): 19(Bytes) 20 01 03 01 00 01 01 04 00 01 00 00 00 00 00 00 00 CC 92
61 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08
62 COM1 Read(hex): 19(Bytes) E0 01 03 01 00 01 01 03 00 00 00 00 00 00 00 00 00 E6 B2 //response, 00,LSB first
63 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69
64 COM1 Read(hex): 19(Bytes) 20 01 03 01 00 01 01 03 00 00 00 00 00 00 00 00 00 DA E2
65
66
67
68 COM1 Write(hex): 19(Bytes)60 01 03 01 00 51 04 03 00 05 01 03 00 00 00 00 00 CE D2 //command 11,Map_ADI_Read_Area,4 bytes message data,ADI number 00 03;Data Type Of the ADI:05(UINT16);Number of elements in the ADI:01;Order Number of the ADI:00 03, 2 bytes
69 COM1 Read(hex): 19(Bytes) 20 01 03 01 00 01 01 03 00 00 00 00 00 00 00 00 00 DA E2
70 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08
71 COM1 Read(hex): 19(Bytes) A0 01 03 01 00 01 01 03 00 00 00 00 00 00 00 00 00 32 83
72 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69
73 COM1 Read(hex): 19(Bytes) 60 01 03 01 00 11 01 03 00 00 00 00 00 00 00 00 00 F1 12 //response,Offset of the mapped ADI from start of the Write Process Data:00 03
74 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08
75 COM1 Read(hex): 19(Bytes) A0 01 03 01 00 11 01 03 00 00 00 00 00 00 00 00 00 CD 42
76
77
78
79 COM1 Write(hex): 19(Bytes)E0 01 03 01 00 51 04 04 00 00 01 04 00 00 00 00 00 74 C3 //command 11,Map_ADI_Read_Area,4 bytes message data,ADI number 00 04;Data Type Of the ADI:00(BOOL8);Number of elements in the ADI:01;Order Number of the ADI:00 04, 1 byte
80 COM1 Read(hex): 19(Bytes) A0 01 03 01 00 11 01 03 00 00 00 00 00 00 00 00 00 CD 42
81 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69
82 COM1 Read(hex): 19(Bytes) 20 01 03 01 00 11 01 03 00 00 00 00 00 00 00 00 00 25 23
83 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08
84 COM1 Read(hex): 19(Bytes) E0 01 03 01 00 11 01 04 00 02 00 00 00 00 00 00 00 1A 43 //response,Offset of the mapped ADI from start of the Write Process Data:00 04
85 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69
86 COM1 Read(hex): 19(Bytes) 20 01 03 01 00 11 01 04 00 02 00 00 00 00 00 00 00 26 13
87
88
89
90 COM1 Write(hex): 19(Bytes)E0 01 03 01 00 50 04 01 00 05 01 01 00 00 00 00 00 CD EE //command 10,Map_ADI_Write_Area,4 bytes message data,ADI number 00 01;Data Type Of the ADI:05(UINT16);Number of elements in the ADI:01;Order Number of the ADI:00 01, 2 bytes
91 COM1 Read(hex): 19(Bytes) A0 01 03 01 00 11 01 04 00 02 00 00 00 00 00 00 00 CE 72
92 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69
93 COM1 Read(hex): 19(Bytes) 20 01 03 01 00 11 01 04 00 02 00 00 00 00 00 00 00 26 13
94 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08
95 COM1 Read(hex): 19(Bytes) E0 01 03 01 00 10 01 01 00 00 00 00 00 00 00 00 00 10 2F //response,Offset of the mapped ADI from start of the Write Process Data:00 01
96 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69
97 COM1 Read(hex): 19(Bytes) 20 01 03 01 00 10 01 01 00 00 00 00 00 00 00 00 00 2C 7F
98
99
100
101 COM1 Write(hex): 19(Bytes)60 00 03 01 00 41 00 02 00 05 01 01 00 00 00 00 00 B6 97 //03,00 01,00 02, get Network type string
102 COM1 Read(hex): 19(Bytes) 20 01 03 01 00 10 01 01 00 00 00 00 00 00 00 00 00 2C 7F
103 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08
104 COM1 Read(hex): 19(Bytes) A0 01 03 01 00 10 01 01 00 00 00 00 00 00 00 00 00 C4 1E
105 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69
106 COM1 Read(hex): 19(Bytes) 60 00 03 01 00 01 09 02 00 44 65 76 69 63 65 4E 65 71 F5 //response with "DeviceNet",fragment1
107 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08
108 COM1 Read(hex): 19(Bytes) E0 74 03 01 00 01 09 02 00 44 65 76 69 63 65 4E 65 BE B3 //response with "DeviceNet",fragment2
109 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69
110 COM1 Read(hex): 19(Bytes) 20 74 03 01 00 01 09 02 00 44 65 76 69 63 65 4E 65 82 E3
111
112
113
114 COM1 Write(hex): 19(Bytes)60 01 01 01 00 41 00 02 00 05 01 01 00 00 00 00 00 27 D4 //01,00 01,00 02,get Firmware version
115 COM1 Read(hex): 19(Bytes) 20 74 03 01 00 01 09 02 00 44 65 76 69 63 65 4E 65 82 E3
116 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08
117 COM1 Read(hex): 19(Bytes) E0 01 01 01 00 01 03 02 00 02 04 01 69 63 65 4E 65 8B 08 //response
118 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69
119 COM1 Read(hex): 19(Bytes) 20 01 01 01 00 01 03 02 00 02 04 01 69 63 65 4E 65 B7 58
120
121
122
123 COM1 Write(hex): 19(Bytes)60 02 01 01 00 41 00 03 00 05 01 01 00 00 00 00 00 13 C5 //01,00 01,00 03,get Serial number
124 COM1 Read(hex): 19(Bytes) 20 01 01 01 00 01 03 02 00 02 04 01 69 63 65 4E 65 B7 58
125 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08
126 COM1 Read(hex): 19(Bytes) E0 02 01 01 00 01 04 03 00 A1 0E 13 A0 63 65 4E 65 C4 3C //response
127 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69
128 COM1 Read(hex): 19(Bytes) 20 02 01 01 00 01 04 03 00 A1 0E 13 A0 63 65 4E 65 F8 6C
129
130
131
132 COM1 Write(hex): 19(Bytes)60 03 04 01 00 42 01 05 00 01 01 01 00 00 00 00 00 94 20 //04,00 01,00 05,set 01 to MACID(DeviceNet address)
133 COM1 Read(hex): 19(Bytes) 20 02 01 01 00 01 04 03 00 A1 0E 13 A0 63 65 4E 65 F8 6C
134 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08
135 COM1 Read(hex): 19(Bytes) A0 02 01 01 00 01 04 03 00 A1 0E 13 A0 63 65 4E 65 10 0D
136 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69
137 COM1 Read(hex): 19(Bytes) 20 02 01 01 00 01 04 03 00 A1 0E 13 A0 63 65 4E 65 F8 6C
138 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08
139 COM1 Read(hex): 19(Bytes) E0 03 04 01 00 02 00 05 00 A1 0E 13 A0 63 65 4E 65 7C C9 //response OK
140 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69
141 COM1 Read(hex): 19(Bytes) 20 03 04 01 00 02 00 05 00 A1 0E 13 A0 63 65 4E 65 40 99
142
143
144
145 COM1 Write(hex): 19(Bytes)60 04 04 02 00 42 01 05 00 02 01 01 00 00 00 00 00 B0 21 //04,00 02,00 05,set 02 to Baudrate value(500K)
146 COM1 Read(hex): 19(Bytes) 20 03 04 01 00 02 00 05 00 A1 0E 13 A0 63 65 4E 65 40 99
147 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08
148 COM1 Read(hex): 19(Bytes) A0 03 04 01 00 02 00 05 00 A1 0E 13 A0 63 65 4E 65 A8 F8
149 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69
150 COM1 Read(hex): 19(Bytes) 60 04 04 02 00 02 00 05 00 A1 0E 13 A0 63 65 4E 65 A5 E9 //response OK
151 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08
152 COM1 Read(hex): 19(Bytes) A0 04 04 02 00 02 00 05 00 A1 0E 13 A0 63 65 4E 65 99 B9
153
154
155
156 COM1 Write(hex): 19(Bytes)E0 05 01 01 00 42 01 05 00 01 01 01 00 00 00 00 00 DD 07 //set 01 to attr 05 inst 1 of Anybus object,indicate Setup complete
157 COM1 Read(hex): 19(Bytes) A0 04 04 02 00 02 00 05 00 A1 0E 13 A0 63 65 4E 65 99 B9
158 COM1 Write(hex): 19(Bytes)20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA 69
159 COM1 Read(hex): 19(Bytes) 60 05 01 01 00 02 00 05 00 A1 0E 13 A0 63 65 4E 65 35 EE //response OK
160 COM1 Write(hex): 19(Bytes)A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 08
161 COM1 Read(hex): 19(Bytes) A0 05 01 01 00 02 00 05 00 A1 0E 13 A0 63 65 4E 65 09 BE
标签:des style blog io ar color os sp for
原文地址:http://www.cnblogs.com/skl374199080/p/4107469.html